デュアルネットワーク接続


9

Ubuntu 10.10ボックスにUSBセルラーモデムとホームLAN接続があります。

どちらも独立して動作します。

両方を同時に接続する方法を知り、どのアプリケーションがどのデバイスを使用してインターネットに接続するかを指定できるようにしたいと考えています。

誰でもこれを行う方法を知っていますか?

回答:


11

どのパケットがどこに行くかをどのように決定したいかに応じて、いくつかの可能性があります。それらのほとんどは、TCP / IPネットワークがLinuxでどのように機能するかをある程度理解する必要があります。複雑なことを行うために知っておく必要がある主なツールは、iptables(Ubuntu:iptables iptablesをインストールする)とiproute2(ipコマンド)(Ubuntu:iproute iprouteをインストールするiproute-doc iproute-docをインストールする)です。

ターゲットIPアドレスで完全に区別できる場合、それは簡単です。希望に応じてIPアドレスをルーティングします。たとえば、次のコマンドは1.2.3のすべてのパケットを発生させます。xおよび1.2.4.2は経由しppp0、その他のパケットは経由しeth0ます。

route add -net 1.2.3.4/24 ppp0
route add -host 1.2.4.2 ppp0
route add -net 0.0.0.0/0 eth0

より複雑な要件については、iptablesおよびの使用を開始する必要がありip routeます。たとえば、次のコマンドは特別なルーティングテーブルを設定してeth0、1 とマークされたすべてのパケットが経由し、2とマークされたすべてのパケットが経由するようにしますppp0localhostループバックインターフェイスへのスティックを意図したパケットを除く)。

ip rule add fwmark 1 table 1
ip route add 127.0.0.0/0 table 1 dev lo
ip route add 0.0.0.0/0 table 1 dev eth0
ip rule add fwmark 2 table 2
ip route add 127.0.0.0/8 table 2 dev lo
ip route add 0.0.0.0/0 table 2 dev ppp0

これで、を使用iptablesして発信パケットを「壊す」ことができ、それらが通過するルートを決定するマークを追加します。たとえば、すべての送信SMTPトラフィック(ポート25)をを介して送信する方法eth0、およびproxyを介してユーザーとして実行されているアプリケーションから発信されたすべてのトラフィックを送信する方法を次に示しますppp0

iptables -t mangle -A OUTPUT -p tcp --dport 25 -j MARK --set-mark 1
iptables -t mangle -A OUTPUT -m owner --uid-owner proxy -j MARK --set-mark 2

インターネットに接続された2つのネットワークインターフェースもご覧くださいドメイン名に応じて使用するものを選択し、異なるネットワークインターフェイスにバインドソフトウェア


両方のインターフェースが接続されているときにこれらのコマンドが実行されるように調整する必要があります。必要な/etc/network/if-up.d/0justin-routesコマンドを実行するというスクリプトを作成することをお勧めします。このスクリプトは、ネットワークインターフェイスが起動するたびに実行されます。その名前がa 0で始まるため、そのプロセスの早い段階で、ルートが配置されることを期待するアプリケーション固有のセットアップの前に実行されます。/etc/network/if-down.d/インターフェイスの1つがダウンしたときに何かを実行したい場合のために、対称があります。(関連するすべてのルートは自動的に消去され、他のインターフェースにフォールバックしたい場合、一部のパケットが取り残される可能性があります。)

ifupスクリプトはに記載されていinterfaces(5) man pageます。知っておくべき主なことは、アップまたはダウンするインターフェイスの名前が環境変数にあることですIFACE。他のインターフェイスがすでに稼働しているかどうかを確認できますif ifconfig | sed 's/ .*//' | grep -Fqx 'eth0'; then …


@Justin:これはものではありません、私はそうなど、あなたが理解していないどのような仕事、ではなく、何をしたか、働いていた何のフィードバック与えてください、と多くの経験を持っていること
ジル「SO-停止されて悪」を

1
私は2つの追加を行いました:最初に、これはeth0からのソースアドレスでppp0にトラフィックを送信します。あなたが使用してこれを変更することができますiptables -t nat -A POSTROUTING -o tun0 -j SNAT --to-source ppp_ip。ここで、ppp_ipそのアダプタのIPアドレスです。次に、でstrict rp_filterをオフにする必要があります/proc/sys/net/ipv4/config/ppp0/rp_filter。リラックスモード(2)に設定すると機能します
。– Karalga
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.