无法通过防火墙进行端口转发

无法通过防火墙进行端口转发

我正在尝试使用 ubuntu 创建一个简单的网关,它可以执行 nat、防火墙和转发功能。禁用防火墙后,我可以连接到我为测试创建的子网中的 Web 服务器。问题是,在防火墙处于活动状态时,尽管已经打开了 HTTP 端口,但我无法访问服务器。

这是我用来设置端口转发的命令

iptables -t nat -A PREROUTING -p tcp -d 10.2.1.11 --dport 80 -j DNAT --to-destination 192.168.0.2:80

这是我的 ufw 状态

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere                  
80/tcp                     ALLOW IN    Anywhere                  
22/tcp (v6)                ALLOW IN    Anywhere (v6)             
80/tcp (v6)                ALLOW IN    Anywhere (v6)             

我使用 iptables-persistant 保存了 iptables 配置,这是它的配置文件 /etc/iptables/rules.v4

# Generated by iptables-save v1.8.4 on Mon Mar  8 09:45:15 2021
*nat
:PREROUTING ACCEPT [2:337]
:INPUT ACCEPT [2:337]
:OUTPUT ACCEPT [1:76]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -d 10.2.1.11/21 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.2:80
-A PREROUTING -d 10.2.1.11/21 -i enp1s0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.2:80
-A PREROUTING -d 10.2.1.11/21 -i enp1s0 -p tcp -m tcp --dport 443 -j DNAT --to-destination 192.168.0.2:443
-A PREROUTING -d 10.2.1.11/21 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.2:80
-A POSTROUTING -o enp1s0 -j MASQUERADE
-A POSTROUTING -o enp1s0 -j MASQUERADE
-A POSTROUTING -s 192.168.0.0/16 ! -d 192.168.0.0/16 -j MASQUERADE
-A POSTROUTING -j MASQUERADE
COMMIT
# Completed on Mon Mar  8 09:45:15 2021
# Generated by iptables-save v1.8.4 on Mon Mar  8 09:45:15 2021
*filter
:INPUT ACCEPT [229:16530]
:FORWARD ACCEPT [38:19834]
:OUTPUT ACCEPT [126:21312]
:ufw-after-forward - [0:0]
:ufw-after-input - [0:0]
:ufw-after-logging-forward - [0:0]
:ufw-after-logging-input - [0:0]
:ufw-after-logging-output - [0:0]
:ufw-after-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-before-input - [0:0]
:ufw-before-logging-forward - [0:0]
:ufw-before-logging-input - [0:0]
:ufw-before-logging-output - [0:0]
:ufw-before-output - [0:0]
:ufw-reject-forward - [0:0]
:ufw-reject-input - [0:0]
:ufw-reject-output - [0:0]
:ufw-track-forward - [0:0]
:ufw-track-input - [0:0]
:ufw-track-output - [0:0]
-A INPUT -j ufw-before-logging-input
-A INPUT -j ufw-before-input
-A INPUT -j ufw-after-input
-A INPUT -j ufw-after-logging-input
-A INPUT -j ufw-reject-input
-A INPUT -j ufw-track-input
-A FORWARD -j ufw-before-logging-forward
-A FORWARD -j ufw-before-forward
-A FORWARD -j ufw-after-forward
-A FORWARD -j ufw-after-logging-forward
-A FORWARD -j ufw-reject-forward
-A FORWARD -j ufw-track-forward
-A OUTPUT -j ufw-before-logging-output
-A OUTPUT -j ufw-before-output
-A OUTPUT -j ufw-after-output
-A OUTPUT -j ufw-after-logging-output
-A OUTPUT -j ufw-reject-output
-A OUTPUT -j ufw-track-output
COMMIT
iptables-save > /etc/iptables/rules.v4# Completed on Mon Mar  8 09:45:15 2021

10.2.1.11 是外部网关接口(enp1s0)的 ip 192.168.0.1 是内部网关接口(enp6s0)的 ip 192.168.0.2 是 Web 服务器的 IP

更新:我尝试重置防火墙并将其设置为默认接受每个连接,但问题仍然存在。可能是因为一旦启用防火墙,它的优先级就高于 iptables,因此转发规则被忽略了?

相关内容