1 (edytowany przez tinware 2023-03-07 11:29:43)

Temat: Huawei E3372h - problem z routingiem

Cześć,

Mam problem z komunikacją z modemami po ich zresetowaniu.
Wersja oprogramowania niestety v19.07.3 i musi taka być.
/etc/init.d/network restart działa zawsze na ten problem, ale nie jest to jego rozwiązanie.

default via 192.168.204.221 proto static src 192.168.204.219 metric 102
192.168.204.216/29 proto static scope link metric 102

po kilku resetach mój modem nie odpowiada na ping.
ip route list dev usb2~if0 nie pokazuje żadnego wpisu.

Więc sprawdzam:
ifstatus Orange

"ipv4-address": [
{
    "address": "192.168.204.219",
    "mask": 29
}

"route": [
{
    "target": "0.0.0.0",
    "mask": 0,
    "nexthop": "192.168.204.221",
    "source": "192.168.204.219/32"
}

i dodaje ręcznie (stworzyłem sobie skrypt hotplug na taką ewentualność, jego główna część po spełnieniu wszystkich warunków poniżej):

$interfce=usb2~if0
$address=192.168.204.219
$nexthop=192.168.204.221

ifconfig $interface $address up
ip route add default via $nexthop dev $interface proto static

i teraz działa, mój modem zaczął odpowiadać na ping.
Bingo! No to skrypt gotowy.

Kilka resetów dalej...

# ifconfig usb2~if0 192.168.204.219 up
# ip route add default via 192.168.204.221 dev usb2~if0 proto static
RTNETLINK answers: File exists

Dlaczego?

# ip route list dev usb2~if0
192.168.204.0/24 proto kernel scope link src 192.168.204.219

i to jest chyba nieprawidłowy wpis, więc go usuwam.

# ip route del 192.168.204.0/24 proto kernel scope link src 192.168.204.219

I dodaję ponownie:

# ip route add default via 192.168.204.221 dev usb2~if0 proto static
RTNETLINK answers: Network unreachable

Więc próbuję:

# ip route add 192.168.204.216/29 proto static dev usb2~if0
# ip route add default via 192.168.204.221 dev usb2~if0 proto static
RTNETLINK answers: File exists

2

Odp: Huawei E3372h - problem z routingiem

ip route del 0.0.0.0/ via 192.168.204.221

czy coś podobnego. Usuń domyślną trasę przed dodaniem nowej domyślnej.

Ale czy jesteś pewien że tak się powinieneś bawić? Czy nie wystarczy

ifdown Orange
ifup Orange

lub nawet samo ifup Orange (bo robi ifdown samo z siebie na początku).

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: Huawei E3372h - problem z routingiem

No właśnie samo ifdown/ifup nie pomaga.
Normalnie po 2-3 resetach już nie działa, więc wstrzykuje komendę ręcznie, a później znowu po 2-3 razach nie działa, bo komenda się nie przyjmuje "Network unreachable".

Aktualnie jestem po kilku resetach...
# ifup Orange
# ip route list dev usb2~if0
# ip route add default via 192.168.204.221 dev usb2~if0 proto static
RTNETLINK answers: Network unreachable

4 (edytowany przez tinware 2023-03-07 13:19:55)

Odp: Huawei E3372h - problem z routingiem

Modem 2:

OpenWRT:~#
OpenWRT:~#
OpenWRT:~# sh e3372h_usb2.sh
Huawei E3372h-153 HiLink - Autoreboot

# ip route list dev usb2~if0
default via 192.168.204.221 proto static src 192.168.204.219 metric 102
192.168.204.216/29 proto static scope link metric 102

# 2023-03-07 02:59(41) - reboot


# ip route list dev usb2~if0
default via 192.168.204.221 proto static src 192.168.204.219 metric 102
192.168.204.216/29 proto static scope link metric 102

# 2023-03-07 03:00(24) - reboot


# ip route list dev usb2~if0
default via 192.168.204.221 proto static src 192.168.204.219 metric 102
192.168.204.216/29 proto static scope link metric 102

# 2023-03-07 03:01(07) - reboot


# ip route list dev usb2~if0
default via 192.168.204.221 proto static src 192.168.204.219 metric 102
192.168.204.216/29 proto static scope link metric 102

# 2023-03-07 03:01(50) - reboot


# ip route list dev usb2~if0

# 2023-03-07 03:02(33) - reboot


^C
OpenWRT:~#
OpenWRT:~#
OpenWRT:~# ping 192.168.204.221
PING 192.168.204.221 (192.168.204.221): 56 data bytes
^C
--- 192.168.204.221 ping statistics ---
3 packets transmitted, 0 packets received, 100% packet loss
OpenWRT:~#
OpenWRT:~#
OpenWRT:~# ip route add default via 192.168.204.221 dev usb2~if0 proto static
RTNETLINK answers: Network unreachable
OpenWRT:~#
OpenWRT:~#
OpenWRT:~# ifconfig usb2~if0 192.168.204.219 up
OpenWRT:~#
OpenWRT:~#
OpenWRT:~# ip route add default via 192.168.204.221 dev usb2~if0 proto static
OpenWRT:~#
OpenWRT:~#
OpenWRT:~#
OpenWRT:~# ping 192.168.204.221
PING 192.168.204.221 (192.168.204.221): 56 data bytes
64 bytes from 192.168.204.221: seq=0 ttl=64 time=19.481 ms
64 bytes from 192.168.204.221: seq=1 ttl=64 time=17.572 ms
^C
--- 192.168.204.221 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 17.572/18.526/19.481 ms
OpenWRT:~#
OpenWRT:~#
OpenWRT:~#
OpenWRT:~# sh e3372h_usb2.sh
Huawei E3372h-153 HiLink - Autoreboot

# ip route list dev usb2~if0
default via 192.168.204.221 proto static
192.168.204.0/24 proto kernel scope link src 192.168.204.219

# 2023-03-07 03:03(23) - reboot


# ip route list dev usb2~if0

# 2023-03-07 03:04(06) - reboot


^C
OpenWRT:~#
OpenWRT:~#
OpenWRT:~# ping 192.168.204.221
PING 192.168.204.221 (192.168.204.221): 56 data bytes
^C
--- 192.168.204.221 ping statistics ---
2 packets transmitted, 0 packets received, 100% packet loss
OpenWRT:~#
OpenWRT:~#
OpenWRT:~#
OpenWRT:~# ifconfig usb2~if0 192.168.204.219 up
OpenWRT:~#
OpenWRT:~#
OpenWRT:~# ip route add default via 192.168.204.221 dev usb2~if0 proto static
OpenWRT:~#
OpenWRT:~#
OpenWRT:~#
OpenWRT:~# sh e3372h_usb2.sh
Huawei E3372h-153 HiLink - Autoreboot

# ip route list dev usb2~if0
default via 192.168.204.221 proto static
192.168.204.0/24 proto kernel scope link src 192.168.204.219

# 2023-03-07 03:04(29) - reboot


# ip route list dev usb2~if0

# 2023-03-07 03:05(12) - reboot


^C
OpenWRT:~#
OpenWRT:~#
OpenWRT:~# ping 192.168.204.221
PING 192.168.204.221 (192.168.204.221): 56 data bytes
^C
--- 192.168.204.221 ping statistics ---
3 packets transmitted, 0 packets received, 100% packet loss
OpenWRT:~#
OpenWRT:~#
OpenWRT:~# ifconfig usb2~if0 192.168.204.219 up
OpenWRT:~#
OpenWRT:~#
OpenWRT:~# ip route add default via 192.168.204.221 dev usb2~if0 proto static
OpenWRT:~#
OpenWRT:~#
OpenWRT:~#
OpenWRT:~# sh e3372h_usb2.sh
Huawei E3372h-153 HiLink - Autoreboot

# ip route list dev usb2~if0
default via 192.168.204.221 proto static
192.168.204.0/24 proto kernel scope link src 192.168.204.219

# 2023-03-07 03:05(35) - reboot


# ip route list dev usb2~if0

# 2023-03-07 03:06(18) - reboot


^C
OpenWRT:~#
OpenWRT:~#
OpenWRT:~# ifconfig usb2~if0 192.168.204.219 up
OpenWRT:~# ip route add default via 192.168.204.221 dev usb2~if0 proto static
OpenWRT:~#
OpenWRT:~#
OpenWRT:~# sh e3372h_usb2.sh
Huawei E3372h-153 HiLink - Autoreboot

# ip route list dev usb2~if0
default via 192.168.204.221 proto static
192.168.204.0/24 proto kernel scope link src 192.168.204.219

# 2023-03-07 03:06(29) - reboot


# ip route list dev usb2~if0

# 2023-03-07 03:07(12) - reboot


^C
OpenWRT:~#
OpenWRT:~#
OpenWRT:~# ifconfig usb2~if0 192.168.204.219 up
OpenWRT:~# ip route add default via 192.168.204.221 dev usb2~if0 proto static
OpenWRT:~#
OpenWRT:~#
OpenWRT:~#

Modem 1:

OpenWRT:~# sh e3372h_usb1.sh
Huawei E3372h-153 HiLink - Autoreboot

# ip route list dev usb1~if0
default via 192.168.204.211 proto static src 192.168.204.212 metric 101
192.168.204.208/29 proto static scope link metric 101

# 2023-03-07 03:08(25) - reboot


# ip route list dev usb1~if0
default via 192.168.204.211 proto static src 192.168.204.212 metric 101
192.168.204.208/29 proto static scope link metric 101

# 2023-03-07 03:09(08) - reboot


# ip route list dev usb1~if0

# 2023-03-07 03:09(51) - reboot


^C
OpenWRT:~#
OpenWRT:~#
OpenWRT:~# ping 192.168.204.211
PING 192.168.204.211 (192.168.204.211): 56 data bytes
^C
--- 192.168.204.211 ping statistics ---
2 packets transmitted, 0 packets received, 100% packet loss
OpenWRT:~#
OpenWRT:~#
OpenWRT:~# ifconfig usb1~if0 192.168.204.212 up
OpenWRT:~# ip route add default via 192.168.204.211 dev usb1~if0 proto static
RTNETLINK answers: File exists
OpenWRT:~#
OpenWRT:~#
OpenWRT:~# ip route list dev usb1~if0
192.168.204.0/24 proto kernel scope link src 192.168.204.212
OpenWRT:~#
OpenWRT:~# ip route del 192.168.204.0/24 proto kernel scope link src 192.168.204.212
OpenWRT:~#
OpenWRT:~#
OpenWRT:~# ip route list dev usb1~if0
OpenWRT:~#
OpenWRT:~#
OpenWRT:~# ifconfig usb1~if0 192.168.204.212 up
OpenWRT:~#
OpenWRT:~#
OpenWRT:~# ip route list dev usb1~if0
OpenWRT:~#
OpenWRT:~#
OpenWRT:~# ip route add default via 192.168.204.211 dev usb1~if0 proto static
RTNETLINK answers: Network unreachable
OpenWRT:~#
OpenWRT:~#
OpenWRT:~# ifstatus MobileVikings
...
"ipv4-address": [
{
    "address": "192.168.204.212",
    "mask": 29
}
],
...
"route": [
{
    "target": "0.0.0.0",
    "mask": 0,
    "nexthop": "192.168.204.211",
    "source": "192.168.204.212/32"
}
],
...
OpenWRT:~#

Może to:

Tue Mar  7 03:01:51 2023 daemon.warn dnsmasq[5203]: nameserver 192.168.204.211 refused to do a recursive query
Tue Mar  7 03:02:20 2023 daemon.warn dnsmasq[5203]: nameserver 192.168.204.211 refused to do a recursive query

Reboot wygląda tak:

( ( sleep 1 && echo "reboot" && sleep 1 ) | timeout 3 nc $IP 23 ) > /dev/null 2>&1

5 (edytowany przez tinware 2023-03-08 00:30:58)

Odp: Huawei E3372h - problem z routingiem

Ogarnąłem. Oto gotowe rozwiązanie, dlaczego działa, nie pytaj smile

/etc/hotplug.d/usb/50_e3372h-153-hilink.sh

#!/bin/sh

if [ "$ACTION" = "add" ] && [ "$DRIVER" = "cdc_ether" ] && [ "$PRODUCT" = "12d1/14dc/102" ]; then
  sleep 1

  interface=$( ls /sys/$DEVPATH/../*/net | head -n 1 )
  if [ "$interface" = "" ]; then
    exit
  fi

  network=$( uci show network | grep $interface | tr '.' '\n' | sed -n '2 p' )
  if [ "$network" = "" ]; then
    exit
  fi

  ifconfig $interface down
  ifconfig $interface $address up
  sleep 1

  ifstatus=$( ifstatus $network )
  address=$( echo "$ifstatus" | grep '"address"' | tr '"' '\n' | sed -n '4 p' )
  nexthop=$( echo "$ifstatus" | grep '"nexthop"' | tr '"' '\n' | sed -n '4 p' )
  mask=$( echo "$ifstatus" | grep '"mask"' | tr ': ' '\n' | sed -n '3 p' )
  if [ "$address" = "" ] || [ "$nexthop" = "" ] || [ "$mask" = "" ]; then
    exit
  fi

  exist=$( ifconfig $interface 2> /dev/null )
  if [ "$exist" = "" ]; then
    exit
  fi

  ip_add=$( ip addr show $interface | grep "inet " 2> /dev/null )
  if [ "$ip_add" = "" ]; then
    ip addr add $address/$mask brd + dev $interface
  fi

  ip_route=$( ip route show dev $interface | grep "default via $nexthop" )
  if [ "$ip_route" = "" ]; then
    ip route replace default via $nexthop dev $interface proto static src $address
  fi

fi

Od teraz mogę do woli resetować swoje modemy ;-)

6

Odp: Huawei E3372h - problem z routingiem

Cześć,
po około 100 próbach resetów ze skryptu losowo modemu 1 lub 2 udało się doprowadzić do poniższego błędu:

# ifstatus Orange
{
    "up": false,
    "pending": false,
    "available": true,
    "autostart": true,
    "dynamic": false,
    "proto": "dhcp",
    "device": "usb2~if0",
    "data": {

    },
    "errors": [
        {
            "subsystem": "interface",
            "code": "DEVICE_CLAIM_FAILED"
        }
    ]
}

Oczywiście /etc/init.d/network restart rozwiązuje problem, ale czy jestem w stanie ogarnąć ten problem w inny sposób?

7

Odp: Huawei E3372h - problem z routingiem

Jeżeli restart sieci pomaga to sam restart interfejsu też musi działać.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

8 (edytowany przez Kebap 2023-03-08 18:16:00)

Odp: Huawei E3372h - problem z routingiem

Powiem ci że ja mam podobny problem z tym modemem na sieci orange, internet działa itp, ale nie mogę pingować samego modemu oraz się dostać do niego w żaden sposób (mogłem się do niego dostać przez jakieś 2 dni po tym jak to ustawiłem i odpaliłem, później już nie, nic nie pomagało), ogólnie orange jest jakieś problematyczne, bo nawet musiałem dnsy zmienić bo te od orange po prostu nie działały, jak używałem play to nie było tych problemów...

9 (edytowany przez tinware 2023-03-09 12:25:32)

Odp: Huawei E3372h - problem z routingiem

Cezary napisał/a:

Jeżeli restart sieci pomaga to sam restart interfejsu też musi działać.

Masz na myśli ifconfig xxx down i ifconfig xxx up? To nie pomaga niestety.

Kebap napisał/a:

Powiem ci że ja mam podobny problem z tym modemem na sieci orange, internet działa itp, ale nie mogę pingować samego modemu oraz się dostać do niego w żaden sposób (mogłem się do niego dostać przez jakieś 2 dni po tym jak to ustawiłem i odpaliłem, później już nie, nic nie pomagało), ogólnie orange jest jakieś problematyczne, bo nawet musiałem dnsy zmienić bo te od orange po prostu nie działały, jak używałem play to nie było tych problemów...

Sprawdź te trzy polecenia i zapisz ich wyjście w stanie kiedy działa i nie działa modem:

ifstatus <nazwa interfejsu uci>
ip addr show dev <nazwa interfejsu fizycznego>
ip route show dev <nazwa interfejsu fizycznego>

...i następnie porównaj. Być może jak zastosujesz mój skrypt powyżej to rozwiążesz swój problem. Ja aktualnie go testuje, napisałem drugi skrypt który resetuje mi losowo jednego z dwóch modemów co 90 sekund i sprawdzam kiedy ten skrypt w hotplug się wyłoży.

10

Odp: Huawei E3372h - problem z routingiem

tinware napisał/a:
Cezary napisał/a:

Jeżeli restart sieci pomaga to sam restart interfejsu też musi działać.

Masz na myśli ifconfig xxx down i ifconfig xxx up? To nie pomaga niestety.

To już sprawdzałeś, tak. Jakaś akcja ze zniszczeniem stanu interfejsu jego ponownym uruchomieniem.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.