Networking

NAT/偽裝。以前工作,現在不行

  • June 15, 2018

因此,至少有兩個月以來,我有一個 IP 表配置,該配置在計算集群上工作,以通過頭節點為技術上離線的計算節點提供 Internet 訪問。我們最近不得不重新啟動頭節點,我幾乎完全可以肯定它已經清除了使它工作的任何設置。我能夠獲取 /sysconfig/iptables 的備份,並且想知道為什麼使用此文件的 iptables-restore 不起作用…這是該備份的內容…

# Generated by iptables-save v1.4.21 on Wed May  9 09:36:22 2018
*filter
:INPUT ACCEPT [1:36]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [1294:196435]
-A INPUT -p tcp -m tcp --sport 1024:65535 --dport 372 -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p udp -m udp --sport 1024:65535 --dport 372 -j REJECT --reject-with icmp-port-unreachable
-A INPUT -i lo -j ACCEPT
-A INPUT -i enp7s0f1 -j ACCEPT
-A INPUT -i enp7s0f0 -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT
-A INPUT -i enp7s0f0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 10.103.182.0/24 -i enp7s0f0 -p tcp -m tcp --dport 443 -m state --state NEW -j ACCEPT
-A INPUT -s 10.103.182.0/24 -i enp7s0f0 -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT
-A INPUT -i enp7s0f0 -p tcp -m tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -p udp -m udp --dport 8649 -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -m tcp --dport 40000 -j REJECT --reject-with icmp-port-unreachable
-A INPUT -i enp7s0f0 -p tcp -m tcp --dport 0:1023 -j REJECT --reject-with icmp-port-unreachable
-A INPUT -i enp7s0f0 -p udp -m udp --dport 0:1023 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i enp7s0f0 -o enp7s0f1 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i enp7s0f1 -j ACCEPT
COMMIT
# Completed on Wed May  9 09:36:22 2018
# Generated by iptables-save v1.4.21 on Wed May  9 09:36:22 2018
*nat
:PREROUTING ACCEPT [19:1852]
:INPUT ACCEPT [11:1496]
:OUTPUT ACCEPT [18:1302]
:POSTROUTING ACCEPT [16:1110]
-A POSTROUTING -o enp7s0f0 -j MASQUERADE
COMMIT
# Completed on Wed May  9 09:36:22 2018

非常感謝任何形式的幫助。

注意:enp7s0f0 是外部公共介面,enp7s0f1 是內部私有介面。

您的iptables配置看起來很正常,但是您檢查過 IPv4 轉發的主開關嗎?

試試這個命令:

# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

如果它net.ipv4_ip_forward = 0改為顯示,則表示未啟用 IPv4 轉發。這很容易解決:

# echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.conf
# sysctl -p

這將以持久的方式啟用 IPv4 轉發。(以前,IPv4 轉發可能已由類似的東西啟用,echo 1 > /proc/sys/net/ipv4/ip_forward在重新啟動後不會持續存在。)

引用自:https://unix.stackexchange.com/questions/450053