Настройка: Linux настроен с интерфейсом Eth0 и wwan0. Eth0 подключен к Ethernet, а wwan0 подключен через ключ.Оба подключения имеют подключение к Интернету.

Проблема: когда я запускаю свое устройство, маршрут по умолчанию - eth0, и я также могу пропинговать eth0. Хотя wwan0 тоже работает, но не может пропинговать через eth0. Если я отключаю eth0, ping отлично работает с wwan0. Теперь, если я снова вставлю Ethernet, я не смогу пропинговать с eth0. В моем тестовом случае мне нужно обрабатывать частые вставки Ethernet и ключ.

ifconfig -a

eth0      Link encap:Ethernet  HWaddr 70:B3:D5:9A:EF:FC
      inet addr:192.168.2.166  Bcast:192.168.3.255  Mask:255.255.252.0
      inet6 addr: fe80::72b3:d5ff:fe9a:effc%1996138192/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:129768 errors:0 dropped:0 overruns:0 frame:0
      TX packets:61524 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
      RX bytes:12669568 (12.0 MiB)  TX bytes:1411543 (1.3 MiB)

wlan0     Link encap:Ethernet  HWaddr 60:F1:89:39:07:8E
          inet addr:192.168.42.1  Bcast:192.168.42.255  Mask:255.255.255.0
          inet6 addr: fe80::62f1:89ff:fe39:78e%1996138192/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2865 errors:0 dropped:0 overruns:0 frame:0
          TX packets:704 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:530933 (518.4 KiB)  TX bytes:152134 (148.5 KiB)

wwan0     Link encap:Ethernet  HWaddr 00:1E:10:1F:00:00
          inet addr:10.166.235.232  Bcast:10.166.235.239  Mask:255.255.255.240
          inet6 addr: fe80::21e:10ff:fe1f:0%1996138192/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:194 errors:0 dropped:0 overruns:0 frame:0
          TX packets:476 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:30622 (29.9 KiB)  TX bytes:40449 (39.5 KiB)

Маршрут, когда eth0 по умолчанию

default         192.168.2.1     0.0.0.0         UG    0      0        0 eth0
8.8.8.8         192.168.2.1     255.255.255.255 UGH   0      0        0 eth0
10.166.235.224  *               255.255.255.240 U     0      0        0 wwan0
59.144.127.17   192.168.2.1     255.255.255.255 UGH   0      0        0 eth0
192.168.0.0     *               255.255.252.0   U     0      0        0 eth0
192.168.2.1     *               255.255.255.255 UH    0      0        0 eth0
192.168.42.0    *               255.255.255.0   U     0      0        0 wlan0

Статус пинга в это время:

# ping -I eth0 -c 3 -W 10 www.google.com
PING www.google.com (172.217.166.36): 56 data bytes
64 bytes from 172.217.166.36: seq=0 ttl=57 time=17.688 ms
64 bytes from 172.217.166.36: seq=1 ttl=57 time=16.523 ms
64 bytes from 172.217.166.36: seq=2 ttl=57 time=16.279 ms

--- www.google.com ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 16.279/16.830/17.688 ms
# ping -I wwan0 -c 3 -W 10 www.google.com
PING www.google.com (172.217.166.36): 56 data bytes


--- www.google.com ping statistics ---
3 packets transmitted, 0 packets received, 100% packet loss

Трассировка маршрута для wwan0

# traceroute -i wwan0 www.google.com
traceroute to www.google.com (172.217.166.36), 30 hops max, 38 byte packets
 1  local (10.166.235.232)  2996.178 ms !H  2995.670 ms !H  2999.194 ms !H
Here packets are getting dropped at wwan0 interface only.

Iptable -L

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere             tcp dpts:0:1023
ACCEPT     udp  --  anywhere             anywhere             udp dpts:0:1023

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             192.168.0.0/16
ACCEPT     all  --  192.168.0.0/16       anywhere
ACCEPT     all  --  anywhere             192.168.0.0/16

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Таблица IP такая же, когда wwan0 является маршрутом по умолчанию.

Короче говоря, среди двух интерфейсов я всегда могу пропинговать только интерфейс по умолчанию. Пожалуйста, помогите мне, чтобы я мог пинговать на любом интерфейсе в любое время.

Я попытался добавить маршрут по умолчанию для wwan0 с

ip route change to default dev wwan0 via 10.166.235.230

но после этого я могу пинговать через wwan0, но не через eth0.

EDIT1

Я могу решить эту проблему, добавляя маршрут к eth0 и wwan0 каждый раз, когда я подключаю их обратно. Но теперь мне нужно добавить шлюз для маршрутизации для каждого интерфейса. Как-то в моей таблице маршрутов я вижу только один шлюз (по умолчанию), а не другой. Если я могу получить шлюз для обоих интерфейсов, я могу запустить скрипт, который запустится, как только произойдет какое-то включение / выключение, и снова смогу добавить маршрут. Пожалуйста, помогите относительно этого.

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.2.1     0.0.0.0         UG    0      0        0 eth0
8.8.8.8         192.168.2.1     255.255.255.255 UGH   0      0        0 eth0
**10.177.88.96    *               255.255.255.240 U     0      0        0 wwan0**
59.144.127.17   192.168.2.1     255.255.255.255 UGH   0      0        0 eth0
192.168.0.0     *               255.255.252.0   U     0      0        0 eth0
192.168.2.1     *               255.255.255.255 UH    0      0        0 eth0

0