firewalld 端口转发会中断该端口上的出站流量

firewalld 端口转发会中断该端口上的出站流量

我使用 Linux 计算机作为更广泛的网络和一些服务器之间的网关/防火墙。

WAN -> [ 192.x | GATEWAY (Linux) | 10.x ]  -> [ 10.0.0.100 | SERVER (Linux) ]

此配置作为网关工作良好。下游节点可以很好地访问互联网,并且我可以使用 .port 将80网关处的请求转发到服务器8000firewall-cmd

firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=10.0.0.100:toport=8000

然而,一旦我运行该命令并且端口转发开始,服务器 ( 10.0.0.100) 就不再能够返回到WANon 端口80。这是一个问题,因为这意味着服务器无法访问互联网上的任何 HTTP 流量。

服务器可以是curl任何互联网资源除了80如果在转发规则到位时它位于端口上。

网关只有一个物理网卡,并且位于区域中external,因此可以进行伪装。

gateway:$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether dc:a6:32:1b:40:9e brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.2/24 brd 192.168.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 10.0.0.1/24 brd 10.0.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::dea6:32ff:fe1b:409e/64 scope link
       valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether dc:a6:32:1b:40:9f brd ff:ff:ff:ff:ff:ff
gateway:$ ip route
default via 192.168.0.1 dev eth0 onlink
10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.1
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.2

我可能错过了一些有关网络的基本租户,这使我无法理解这个问题。

我的假设是转发规则使得它如此全部端口 80 流量(入站或出站)受到破坏,而实际上我只想将 80 端口的入站流量转发到我的服务器的 8000。

是否可能是网络配置错误?或者我的使用方式有什么firewalld无效的吗?

答案1

也许iptablesfirewalld可以在我的场景中用于端口转发到下游子网上的特定计算机,但我不知道如何让它工作。

gateway这可能并不理想,但我的解决方法是在我的计算机上创建一个 systemd 服务,用于socat将特定端口上的流量转发到特定 IP。

gateway这是在我的转发端口80443上运行的脚本10.0.0.100

firewall-cmd --zone=external --add-port=80/tcp
socat TCP4-LISTEN:80,fork TCP4:10.0.0.100:80 &
firewall-cmd --zone=external --add-port=443/tcp
socat TCP4-LISTEN:443,fork TCP4:10.0.0.100:443 &
wait

相关内容