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

相關內容