物理インターフェイスenp5s0
から仮想インターフェイスtun0
にトラフィックを転送しようとしています。目標は、tun0
がenp5s0
から本質的にすべてのパケットを受信するようにすることです。
まず、コマンドで転送を有効にします
Sudo sysctl -w net.ipv4.ip_forward=1
次に、実行してtun0
を作成します
Sudo ip tuntap add dev tun0 mod tun
IPアドレスを割り当てて、デバイスの電源を入れます。
Sudo ifconfig tun0 10.1.8.5 netmask 255.255.255.0 promisc up
すべてのパケットをenp5s0
からtun0
に移動させたいので、iptablesを使用する必要があります。 enp5s0
からtun0
への転送を許可するルールを作成する必要があるため、コマンドは
Sudo iptables -A FORWARD --in-interface tun0 --out-interface enp5s0 -j ACCEPT
次に、NATを実行して
Sudo iptables -t nat -A POSTROUTING --out-interface enp5s0 -j MASQUERADE
tcpdumpは、tun0
にトラフィックを表示しません。
また、ほぼ同じことを試しましたが、TAPデバイスを使用しました。 brctl
を使用してブリッジを作成し、tap0
とenp5s0
を追加しましたが、tap0
がパケットを受信せず、enp5s0
を使用しても問題ありませんでした。 TUNの場合、default gw 10.1.8.5
などは機能しません。間違いはどこですか?
Iptablesコマンドでは、入力インターフェースと出力インターフェースが逆になります。
彼らはする必要があります:
Sudo iptables -A FORWARD --in-interface enp5s0 --out-interface tun0 -j ACCEPT
そして:
Sudo iptables -t nat -A POSTROUTING --out-interface tun0 -j MASQUERADE