両方のネットワークインタフェースを介して同時に同じIPに接続する

両方のネットワークインタフェースを介して同時に同じIPに接続する

私は2つのネットワークインターフェイス(1つのイーサネットと3Gモデムの1つ)があり、MQTTブローカーに2つの同時接続が必要なDebian 8システムを開発しています。つまり、接続は両方のインターフェイスを介して確立する必要があります。私が使用する言語はPythonで、MQTTクライアントはPahoです。

Pahoの接続メソッドにbind_addressというパラメータを指定すると、私が望むように正しく動作します。 2つのPahoインスタンスを作成し、両方のインターフェイスのIPアドレスを提供するだけです。

問題は、そのうちの1つしか接続できないことです。

明示的に指定されたインターフェイス(ping -I ifname a.b.c.d)のプロキシIPに対してpingを試みましたが、両方のインターフェイスで動作しました。同じIP(イーサネットIP)を使用して両方のPahoインスタンスを提供することもできます。

現時点では、ルーティング関連の問題であると推測されていますが、これは私がよく知らない分野です。

この問題をどのように解決できますか?

ip addr必要に応じて出力:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:04:25:18:e9:a9 brd ff:ff:ff:ff:ff:ff
    inet 82.195.211.80/23 brd 82.195.211.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::204:25ff:fe18:e9a9/64 scope link
       valid_lft forever preferred_lft forever
3: sit0@NONE: <NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue state UNKNOWN group default
    link/sit 0.0.0.0 brd 0.0.0.0
    inet6 ::127.0.0.1/96 scope host
       valid_lft forever preferred_lft forever
4: wwan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
    link/ether 0a:71:b0:b9:ca:39 brd ff:ff:ff:ff:ff:ff
    inet 10.36.124.58/30 brd 10.36.124.59 scope global wwan0
       valid_lft forever preferred_lft forever
    inet6 fe80::871:b0ff:feb9:ca39/64 scope link
       valid_lft forever preferred_lft forever

ip route必要に応じて出力:

default via 82.195.210.1 dev eth0  metric 202
default via 10.36.124.57 dev wwan0  metric 204
default via 82.195.210.1 dev eth0  proto static  metric 1024
10.36.124.56/30 dev wwan0  proto kernel  scope link  src 10.36.124.58  metric 204
10.36.124.58 via 127.0.0.1 dev lo  metric 204
82.195.210.0/23 dev eth0  proto kernel  scope link  src 82.195.211.80  metric 202
82.195.211.80 via 127.0.0.1 dev lo  metric 202

ベストアンサー1

シンプルソースポリシールーティング問題を解決することもできます。という名前の新しいルーティングテーブルを作成します。移動する未使用の数字(ここでは100です。オプションであるため、その数字を使用できます):

echo 100 mobile >> /etc/iproute2/rt_tables

3Gゲートウェイにルーティングするようにこのテーブルを設定します。

ip route add default via 10.36.124.57 dev wwan0 table mobile
ip route flush cache

最後に、新しい設定を使用するには、3Gソースアドレスのルールを追加してください。移動するテーブル:

ip rule add from 10.36.124.58 table mobile

あなたの質問からインターフェース名(wwan0)とアドレスを取得しました。インターフェイス名は安定していますが(少なくとも3Gモデムをコンピュータに接続するまで)、ローカルアドレスとゲートウェイアドレスは接続するたびに変わることがあります。この設定をスクリプトで作成したい場合があります。

おすすめ記事