一、背景:
在ubuntu的下面部署了springboot应用,为了安全我们使用非root用户进行启动,非root用户不能监听1024以下的端口号,如果直接改成80和443,会报安全性异常。
java.net.SocketException: Permission denied
二、解决思路:
使用iptables将ubuntu的80端口转发到本程序8096端口
三、具体步骤:
1.切换到root账户
su root
2.检查80端口是否被占用,如被占用,修改占用程序的端口,将80端口释放出来
netstat -tln | grep 80
注意:一般nigix占用80端口, 修改gitlab的nigix端口
3.检查iptables是否安装,安装下iptables
(1)切换到root用户,输入如下命令检查是否安装
#which iptables
(2)没有安装,则安装下iptables
apt-get install iptables
(3)查看规则列表
iptables -L
(4)允许所有ip访问80
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
4.打开转发开关
要让iptables的端口转发生效,首先需要打开转发开关
永久打开,重启依然有效
编辑/etc/sysctl.conf文件,将net.ipv4.ip_forward=1前面的#注释去掉,保存文件,然后执行sudo sysctl -p使其生效
参考 https://www.cnblogs.com/ddif/p/9940571.html
5.配置转发规则, 将80端口映射到8091
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8091
保存
iptables-save > /root/iptables.conf
恢复
iptables-restore < /root/iptables.conf
参考:https://www.cnblogs.com/EasonJim/p/6851007.html
注意:如果配置错误,可以删除规则
5. 删除转发规则
(1)列出规则,包括序号
iptables -t nat -L -n --line-numbers
(2)根据序号删除,这里假如它的序号是1
iptables -t nat -D PREROUTING 1