iptables
プログラムでパケットを変更するためにキューと共に使用していますnet-filter
。
私はiptables
、インターネットに接続された2つのNIC eth0とLANに接続されたeth1を使用してUbuntu Labでルールを使用しています。 NATでよく知られているiptablesルールを使用し、eth0で偽装します。
sudo iptables --table nat --append POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -append FORWARD -i eth1 -j ACCEPT.
sudo iptables -t mangle -A PREROUTING -j NFQUEUE --queue-num 0
sudo iptables -t mangle -A OUTPUT -j NFQUEUE
この4つのルールは、プログラム内でパケットをキャプチャし、パケットを変更または使用したいものを破棄するために使用されますnfq_set_verdict
。
実際、すべてが期待どおりに動作します。つまり、3つのプロトコルタイプicmp
、つまりtcp
パケットがudp
変更され、再注入されます。次に、eth0 IPアドレスを送信元アドレスとして使用して、インターネットキューでeth0を終了します(MASQUERADE NATルールの使用の効果)。
これは、以下を除くすべてのパケットに当てはまります。 ICMP ping返信するまたはTCP確認するデータパック
彼らはeth1 - 192.168.xxにあるLANデバイスのプライベートIPを使用してインターネットに入り、このプライベートソースIPアドレスを使用してもう一方の端に到達します。
どんなアイデアでも可能です。ありがとうございます。