如何配置ufw将端口80/443转发到LAN上托管的内部服务器

时间:2020-01-09 14:16:59  来源:igfitidea点击:

如何在Ubuntu Linux服务器上使用UFW将TCP HTTP端口80和443转发到托管于192.168.1.100:80和192.168.1.100:443的内部服务器?

UFW是简单防火墙的首字母缩写。
它用于管理Linux防火墙,旨在为用户提供易于使用的界面。
在本教程中,您将学习如何将传入流量转发到在端口80/443上运行ufw的服务器到在您的LAN/VLAN或Linux容器中托管的另一台内部服务器上的端口80/443。

设置示例

假设您要将要转发到{80,443}的请求转发到侦听192.168.1.100:{80,443}的服务器:
如何配置ufw将HTTP流量重定向到另一个IP:port

对192.54.1.1端口80和443的所有请求都需要重定向到另一台内部服务器。

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地址的LAN节点与外部公共网络进行通信,请配置防火墙以伪装IP,以屏蔽来自LAN节点的带有防火墙外部设备IP地址(例如eth0)的请求。
语法为:

/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

接下来,配置ufw将http通信重定向到另一个(LAN)IP:端口。
在顶部文件中,追加:

*nat
:PREROUTING ACCEPT [0:0]
# forward 192.54.1.1  port 80 to 192.168.1.100:80
# forward 192.54.1.1  port 443 to 192.168.1.100:443
-A PREROUTING -i eth0 -d 192.54.1.1   -p tcp --dport 80 -j  DNAT --to-destination 192.168.1.100:80
-A PREROUTING -i eth0 -d 192.54.1.1   -p tcp --dport 443 -j  DNAT --to-destination 192.168.1.100:443
# setup routing
-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

设置/编辑如下:

net.ipv4.ip_forward=1

保存并关闭文件。
重新加载更改:

$ sudo sysctl -p

最后,重新启动防火墙以启用路由:

$ sudo systemctl restart ufw

确保端口80和443被允许,否则ufw将阻止重定向到内部192.168.1.100:{80,443}的请求:

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

验证新设置:

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

最后,确保您的域的DNS类型设置为192.54.1.1。