ルーティング

ルーティング

インターフェイスで受信したすべてのトラフィックをループバックしたいです。これは回線/施設のループバックと同じです。一つに従うエマルジョン、私はこれをした:

iptables -t nat -A POSTROUTING --out-interface eth0 -j MASQUERADE
iptables -A FORWARD --in-interface eth0 -j ACCEPT

しかし、送信者は何のメッセージも受け取りませんでした。パケットは受信インターフェイスで破棄されます。鉱山にはnet.ipv4.ip_forward = 1電線はありません/etc/sysctl.conf

ベストアンサー1

ルーティング

カーネルパケットがどこに行くかを決定する基本的な方法は、ファイアウォールルール(、)ip routeではなくルーティングテーブル(および友達)です。 IP転送を有効にすると、カーネルはルーティングテーブルを介して着信パケットを処理して再送信します。したがって、10.0.0.2のトラフィックがどこから来たかに関係なくeth0を通過させるには、次の手順を実行します。iptablesnftablesnet.ipv4.ip_forward = 1

ip route add 10.0.0.2/32 dev eth0

デフォルトでは、カーネルはトラフィックがeth0に入り、すぐに戻ることを確認すると、ICMPリダイレクトを送信してソースマシンに「これは非効率的です。直接送信してください!オフにする必要があります(net.ipv4.conf.eth0.send_redirects = 0)」 。この機能をオフにすることもできます(net.ipv4.conf.eth0.rp_filter = 0)。

これは、カーネルルーティングメカニズムを介してIP TTLを減らすなど、必要な作業が行われます。ただし、送信元や宛先のIPアドレスなどは変更されません。

ルーティング+ NAT

送信元または宛先のIPアドレスも変更する必要がある場合は、上部にNATを追加できます。たとえば、送信元IPアドレスがローカルである必要がある場合は、次のように追加できます。

iptables -t nat -A POSTROUTING --out-interface eth0 -j MASQUERADE

デフォルト値を変更しない限り、FORWARDはすでに承認されている必要があります。そうでない場合は、ルールを追加したり、デフォルトのルールを変更したりできます。

ネットワークアドレス変換+ルーティング

パケットが入ってくるときに宛先 IP アドレスを変更することもできます。これにより、ルーティング方法が変更されます(この変更は、ルーティングが確認される前に行われるため)。これは次のとおりです。

iptables -t nat -A PREROUTING -s 10.0.0.1 -j DNAT --to-dest 10.0.0.2

--out-interface出力インターフェイスはルーティング後にのみ知られているため、ここでは使用できません。--in-interfaceしかし、あなたはそれを使用することができます。

既存ツール

皆さんもぜひご覧くださいiperf3そしてパケットジェネレータ

おすすめ記事