iptablesを使用してあるポートを除くすべてを別のサーバーにルーティングする

iptablesを使用してあるポートを除くすべてを別のサーバーにルーティングする

新しいWebサーバーに移動し、すべてのトラフィックを新しいサーバーにリダイレクトします。

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 ポートをどのように開いておきますか?

ベストアンサー1

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

おすすめ記事