springboot程序部署ubuntu,端口为80,使用iptables转发端口——解决 Permission denied问题

一、背景:

在ubuntu的下面部署了springboot应用,为了安全我们使用非root用户进行启动,非root用户不能监听1024以下的端口号,如果直接改成80和443,会报安全性异常。

java.net.SocketException: Permission denied

二、解决思路:

使用iptables将ubuntu的80端口转发到本程序8096端口

三、具体步骤:

1.检查80端口是否被占用,如被占用,修改占用程序的端口,将80端口释放出来

netstat -tln | grep 80

2.检查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

3.打开转发开关
要让iptables的端口转发生效,首先需要打开转发开关

永久打开,重启依然有效
编辑/etc/sysctl.conf文件,将net.ipv4.ip_forward=1前面的#注释去掉,保存文件,然后执行sudo sysctl -p使其生效

参考 https://www.cnblogs.com/ddif/p/9940571.html

4.配置转发规则, 将80端口映射到8096

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8096

   iptables-save  用来保存规则

参考: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

你可能感兴趣的:(linux,springboot)