두 네트워크 인터페이스를 통해 동시에 동일한 IP에 연결

두 네트워크 인터페이스를 통해 동시에 동일한 IP에 연결

저는 두 개의 네트워크 인터페이스(이더넷 하나와 3G 모뎀 하나)가 있고 MQTT 브로커에 두 개의 동시 연결이 있어야 하는 Debian 8 시스템을 개발 중입니다. 즉, 연결은 두 인터페이스를 통해 설정되어야 합니다. 내가 사용하는 언어는 Python이고 MQTT 클라이언트는 Paho입니다.

Paho의 연결 메소드에 bind_address라는 매개변수를 제공하면 내가 원하는 대로 정확하게 작동할 것입니다. 두 개의 Paho 인스턴스를 생성하고 두 인터페이스의 IP 주소를 제공하기만 하면 됩니다.

문제는 그 중 하나만 연결할 수 있다는 것입니다.

명시적으로 지정된 인터페이스( ping -I ifname a.b.c.d)의 프록시 IP에 대해 핑을 시도했는데 두 인터페이스 모두에서 작동했습니다. 또한 동일한 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 모뎀을 컴퓨터에 연결할 때까지) 로컬 주소와 게이트웨이 주소는 연결할 때마다 변경될 수 있습니다. 이 설정을 스크립트로 작성하고 싶을 수도 있습니다.

관련 정보