iptables で TUN インターフェースを使用する場合の NAT とルーティングの適切な方法

iptables で TUN インターフェースを使用する場合の NAT とルーティングの適切な方法

編集: 私はネットワーキングと新しいものを発見することに関しては初心者です :)

プログラムで操作できる TUN インターフェイスを作成しました。

私はこれをセットアップして実行しました ifconfig myTun 10.10.1.1/24 up

そして、私が見たところ、それは稼働していてifconfig、pingもしている10.10.1.1

そして、私が書いた問題で TUN インターフェイスが稼働しているかどうかを 100% 確実に確認するために、次の操作を実行しました。

ping を実行し10.10.1.2、パケットがプログラムで受信され、それを tun に書き戻して、ループで再度受信しました。

今私はすべてのパケットがからまたは 10.10.1.x問題なく TUN に受信され、書き込まれています。

パケットを書くとき外部の任意の宛先IP10.10.1.xTUN への書き込みは成功しましたが、TUN に応答が受信されませんでした。

検索してたくさんの記事を読んだ後、カーネルによって静かに削除されていることがわかりました。

serverfault.comでTUNインターフェースに関するQ/Aをたくさん読んで、ロジックの重要な部分を見逃していたことに気付きました。ルーティング

私の最終的な理解は、パケットはLinuxのネットワークスタックによって受信され、正常であるが、カーネルはパケットの宛先が奇妙であるため、パケットをどう処理すればよいかわからないということです。その後、カーネルにルーティングを指定しなければならないことがわかりました。iptables有効にしたいnet.ipv4.ip_forwardが、方法が分からない。

私の最終目標は:

TUNの外部に任意の宛先を持つパケットを送信する場合10.10.1.x、そのパケットはメインインターフェイス(インターネットにアクセスでき、wlps020f3)にルーティングされ、そのパケットの結果はTUNインターフェイスに返されます。

設定方法NATiptables回避策はありますか?

よろしくお願いします

答え1

IPv4転送を有効にする:

sudo sysctl -w net.ipv4.ip_forward=1

NATトラフィックワイヤレス アドレスの背後にあるトンネル インターフェイスから:

sudo iptables -t nat -A POSTROUTING -o wlps020f3 -j MASQUERADE

これらの変更はいずれも再起動すると失われます。上部のリンクとこれですその点についてはさらに詳しい情報があります。

関連情報