TUNデバイス(C ++バックエンド)からデフォルトゲートウェイへのトラフィックの転送
次の問題は、私が問題を抱えているより大きなソリューションのほんの一部です。他のすべての要素はこれまでのところ機能しているようですので、私が問題を抱えている非常に小さな部分について説明します。 Linuxマシンを持っています。tun0(トンネリングインターフェイス)とeth0(witchは私のインターネットへのデフォルトゲートウェイです)を持っています。 目標:私の目標は、tun0から着信するパケットを受信し、それらをデフォルトゲートウェイに転送することです。したがって、実際には非常に単純なNATのケースであり、物理インターフェイスを偽装したtun0とインターネットを「共有」したいと考えています。 Tunは、 sudo openvpn --mktun --dev tun0 --user USER sudo ip addr add 10.2.0.1/24 dev tun0 sudo ip link set tun0 up だから私はそれを稼働させ、pingを実行することができます。さらに、このTUNデバイスに接続し、読み取りと書き込みができるC ++アプリケーションがあります。(fti:ここに私がフォローしたチュートリアルがあります:http : //backreference.org/2010/03/26/tuntap-interface-tutorial/) 8.8.8.8に対して行われた正しいICMP(ping)要求をC ++のバイト配列にダンプしました。次に、私のプログラムを使用して、それをtun0デバイスに書き込みます。ICMPリクエストは ソース(10.2.0.10)-カーネルはルートを戻します(同じサブネット) 宛先(8.8.8.8)-GoogleのDNS 正しいチェックサムなど(Wireshark / TSharkでは、tun0で正しく表示されます) 次に、私は以下のルートを持っています: iptables -F # flush iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE iptables …