TUNデバイス(C ++バックエンド)からデフォルトゲートウェイへのトラフィックの転送


10

次の問題は、私が問題を抱えているより大きなソリューションのほんの一部です。他のすべての要素はこれまでのところ機能しているようですので、私が問題を抱えている非常に小さな部分について説明します。

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 --append FORWARD --in-interface tun0 -j ACCEPT

そしてここで私は行き詰まっています:(パケットはデフォルトのgwに転送されません(tsharkは受信したtun0でのみそれを認識しますが、これは正しいと思います)

何が欠けていますか?多分いくつかの代替アプローチ(ただし、tunデバイスを使用して行う必要があり、それにr / wを実行できる必要があります)。追加情報:

  • 転送が有効になっている(/ proc / sys / net / ipv4 / ip_forward)
  • 8.8.8.8はeth0から到達可能(ローカルから)
  • デフォルトゲートウェイが正しい(ISPからeth0経由)
  • rp_tables(echo 0> / proc / sys / net / ipv4 / conf / eth5 / rp_filter)をオフに切り替えてみました
  • その他多数...

ヒントを事前にありがとう!


これは1年以上前のものですが、これでどこかに行きましたか?私はまったく同じ問題を抱えています。
hplbsh 2013年

回答:


1

代替ソリューションはbridge.0を使用してtun0をeth0でブリッジすることができます。nat0を設定したり、tun0にIPを設定したりする必要はなく、現在使用しているeth0の同じサブネットと同じゲートウェイからIPをクライアントのトンネルインターフェースに配置するだけです。

ブリッジをセットアップするためのコマンド:

# brctl addbr br0
# brctl addif br0 eth0 tun0

www.tldp.org/HOWTO/BRIDGE-STP-HOWTO/set-up-the-bridge

brctlを使用するには、bridge-utilsパッケージをインストールする必要があります。
ディストリビューションがUbuntuの場合:aptitude install bridge-utils


1

私は最近この問題に遭遇し(質問の同じ記事の説明に従って)、少しいじり回した後、次のコマンドによってtunデバイスのパケットのローカル転送が有効になることがわかりました。

echo 1 > /proc/sys/net/ipv4/conf/tun0/accept_local

私は非常に遅いことを知っています。同じ問題に直面している誰もが何らかの助けを借りられるように、私はここに投稿しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.