IPTables ソース NAT (SNAT) を /etc/ufw/before.rules へ

IPTables ソース NAT (SNAT) を /etc/ufw/before.rules へ

Ubuntu 18.04 サーバーの 2 つのインターフェース間で NAT (SNAT) トラフィックを送信する必要があります。さまざまな NAT ニーズを実装するために '/etc/ufw/before.rules' ファイルを使用しようとしてきましたが、これまでのところは順調でした... これまでは。

次の iptables コマンドは、まさに必要なことを実行しているようです。

iptables -j SNAT -t nat -I POSTROUTING 1 -o eth0 -d 192.168.1.0/24 -s 172.18.0.0/16 --to-source 10.136.0.2

このルールは、'/etc/ufw/before.rules' ファイル内の構成に簡単に変換できますか? UFW NAT 構成のマニュアル ページは、より一般的なフィルタリング ルールと比較すると、少し不足しているようです。

背景: StrongSwan を使用して、一部の docker/コンテナ トラフィックをソース NAT し、IPSec ポリシー トンネル経由で送信しています。前述の iptables ルールがないと、VPN からコンテナにトラフィックをルーティングできますが、コンテナから送信されたトラフィックは失敗します。

eth0 は私の「パブリック」インターフェース IP 1.2.3.4 で、eth1 は私の「プライベート」インターフェース IP 10.136.0.2 です。

トラフィックを流すために '/etc/ufw/before.rules' ファイルにすでにある *nat 構成は次のとおりです (docker ソースのトラフィックを除く)。

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 192.168.1.0/24  -d 10.136.0.0/16 -j MASQUERADE
-A POSTROUTING -s 192.168.1.0/24  -d 172.18.0.0/16 -j MASQUERADE
COMMIT
#

答え1

このルールをすでに手動で追加している場合は、次のコマンドを実行して、iptables追加する正しい形式と位置を見つけることができます。before.rules

# sudo iptables -t nat -S
...
-A POSTROUTING -s 172.18.0.0/16 -d 192.168.1.0/24 -o eth0 -j SNAT --to-source 10.136.0.2
...

関連情報