私は私が書いたプログラムによって確立されたTUNインターフェースを介して発信するTCP接続を作成しています。 TUNインターフェイスは、デフォルトで最小限の変更(ソース/ターゲットIP/ポート、TCPチェックサム)でプロキシサーバーとパケットを中継します。
このTUNインターフェースを介してルーティングされたIPでwgetを実行すると、パケットは正しく送信され受信されるように見えますが(トレースを参照)、サーバーから返されたSYN / ACKはTCPスタックに登録されず、ソケットはまだSYN_SENTに存在します。 「netstat -t」にステータスを入力します。その後、偽の再送信が双方向に生成されます(タイムアウトまで)。
設定に使用したコマンドは次のとおりです。
ip link set dev tun0 up
ip addr add 10.0.0.1/24 dev tun0
ip route add 216.58.197.100/32 dev tun0
続いて
wget http://216.58.197.100
これはWireshark追跡です。ここにあります。:
答え1
問題を発見したようです。受信パケットをTUNインターフェイスに書き込む前にIPv4ヘッダーチェックサムを変更したので、それを計算する必要があります。