Iptables

使用 iptables 將除一個埠之外的所有內容重新路由到其他伺服器

  • March 25, 2020

我已移至新的網路伺服器,現在我將所有流量重定向到新伺服器

echo "1" > /proc/sys/net/ipv4/ip_forward
#clear old rules:
iptables -F
iptables -t nat -F
#masquerade and redirect everything:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth0 -d 1.1.1.1 -j DNAT --to-destination 2.2.2.2

這工作正常,直到所有 DNS 條目都普遍存在。但是現在我不能再登錄舊的機器了。

如何在舊伺服器 1.1.1.1 上保持打開 SSH 埠?

在 iptables 中,第一個匹配的規則獲勝。所以規則的正確排序很重要。

在這種情況下,說明如何處理埠 22 的流量的規則必須位於說明如何處理“其他所有內容”的規則*之前。*雖然如果鏈的策略與預設值相比,RETURN 會起作用,但更明確的是,只需使用 ACCEPT 作為“正常處理”的同義詞可能會更清楚:

echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth0 -m tcp -p tcp --dport 22 -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -d 1.1.1.1 -j DNAT --to-destination 2.2.2.2

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