如何配置ufw防火墙端口80/443的流量转发到内网的服务器

时间:2019-11-20 08:53:45  来源:igfitidea点击:

在Ubuntu Linux中,如何使用UFW将TCP HTTP端口80和443转发到内部服务器?
如何使用防火墙将web流量转发到内部服务器?
如何将ufw防火墙设置成代理?

配置说明

配置UFW防火墙,将所有对171.54.1.13端口80,443的请求转发到192.168.1.100服务器上。

DNAT

如果内部网络的服务器想对外开放,则可以使用NAT中PREROUTING链的-j DNAT目标来指定目标IP地址和端口,请求与内部服务建立连接的传入数据包可以在该IP地址和端口上转发。

语法为:

/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp -d {PUBLIC_IP} --dport 80 -j DNAT --to {INTERNAL_IP}:80

或者

/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp -d {PUBLIC_IP} --dport 443 -j DNAT --to {INTERNAL_IP}:443

后路由和IP伪装(IP Masquerading)

要允许具有私有IP地址的LAN节点与外部公共网络进行通信,需要配置防火墙来伪装IP,以屏蔽来自带有防火墙外部设备IP地址(例如eth0)的LAN节点的请求。
语法为:

/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

或者

/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -j MASQUERADE

如何配置ufw,置端口转发

编辑/etc/ufw/before.rules文件:

$ sudo vi /etc/ufw/before.rules

将http和https请求重定向到另一个服务器上。
在before.rules文件最上面添加下面内容:

*nat
:PREROUTING ACCEPT [0:0]
# 将171.54.1.13  80端口转发到 192.168.1.100:80
# 将171.54.1.13  443端口转发到 192.168.1.100:443
-A PREROUTING -i eth0 -d 171.54.1.13   -p tcp --dport 80 -j  DNAT --to-destination 192.168.1.100:80
-A PREROUTING -i eth0 -d 171.54.1.13   -p tcp --dport 443 -j  DNAT --to-destination 192.168.1.100:443
# 设置路由,允许IP伪装
-A POSTROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -j MASQUERADE
COMMIT

编辑/etc/sysctl.conf:

$ sudo vi /etc/sysctl.conf

设置IP转发如下所示:

net.ipv4.ip_forward=1

重新加载,使配置生效:

$ sudo sysctl -p

重启防火墙,启用路由功能:

$ sudo systemctl restart ufw

打开端口80和443

$ sudo ufw allow proto tcp from any to 171.54.1.13 port 80
$ sudo ufw allow proto tcp from any to 171.54.1.13 port 443

检查新的设置:

$ sudo ufw status
$ sudo iptables -t nat -L -n -v