1 (edytowany przez jacekalex 2020-05-16 13:48:32)

Temat: [SOLVED]Host RNDIS i dual WAN?

Cześć

Chciałbym sobie urządzić awaryjne łącze z telefonu na wypadek, kiedy kablem od mojego ISP zaopiekują się np myszy.

Jako że preferuję wolne lądowanie telefonu, 500mA spokojnie ładuje baterię 2800mAh
w ciągu kilku godzin, często zapinam telefon do kompa lub routera.

W kompie - Linux, połączenie z netem przed RNDIS_HOST jest dosyć banalne:
podłączam fona kablem, włączam w Andku tethering USB, i mam:

[  397.980222] usb 3-7: new high-speed USB device number 8 using xhci_hcd
[  398.107028] usb 3-7: New USB device found, idVendor=22b8, idProduct=2e25, bcdDevice= 3.18
[  398.107031] usb 3-7: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  398.107033] usb 3-7: Product: XT1676
[  398.107035] usb 3-7: Manufacturer: motorola
[  398.107036] usb 3-7: SerialNumber: XXXXXXXX
[  398.111123] rndis_host 3-7:1.0 usb0: register 'rndis_host' at usb-0000:00:14.0-7, RNDIS device, 4a:30:b8:db:9f:a7

potem tylko:

dhcpcd usb0

i po chwili mam neta LTE.

Przez konfig /etc/conf.d/net lub udeva można całkowicie zautomatyzować proces włączania neta przez telefon bez jakichś specjalnych czarów.

Konfiguracja w kompie wg tego tutka:
https://wiki.gentoo.org/wiki/Android_USB_Tethering

Jak zrobić to tak elegancko w OpenWRT, żeby nie majstrować z UCI/LUCI przy podłączeniu fona, tylko żeby automatycznie włączył się  drugi WAN LTE po podłączeniu fona z tetheringiem, kiedy OpenWRT niestety nie posiada UDEVa?

Czy trzeba mu na stałe majstrować drugi WAN, czy jest jakiś substytut udeva reagujący na zdarzenia.

I ewentualnie, jak osiągnąć efekt automatycznego zestawiania połączenia przez OpenWRT kiedy na porcie USB pojawi się urządzenie rndis_host?

W źródłach OpenWRT w Busybox widziałem moduł mdev, ale w repozytorium OpenWRT nic podobnego (o podobnej nazwie) nie znalazłem.

Pozdro

2

Odp: [SOLVED]Host RNDIS i dual WAN?

A po co chcesz coś majstrować? Po prostu zrób sobie drugi wan na usb0, jak podłączysz telefon to zestawi sobie połączenie.
Naprawdę nie wiem po co chcesz cokolwiek zmieniać w systemie za każdym razem.

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

3 (edytowany przez jacekalex 2020-05-16 09:14:04)

Odp: [SOLVED]Host RNDIS i dual WAN?

Cezary napisał/a:

A po co chcesz coś majstrować? Po prostu zrób sobie drugi wan na usb0, jak podłączysz telefon to zestawi sobie połączenie.
Naprawdę nie wiem po co chcesz cokolwiek zmieniać w systemie za każdym razem.

Drugi WAN? przez UCI/LUCI. w pliach konfiguracyjnych czy gdzie indziej?

Połączenie na usb0 wymaga DHCP? czy musi być włączony DHCP cały czas na usb0, czy włączy się automatycznie po pojawieniu się interfejsu?

Chodzi o przykład jakiejś w miarę "ekologicznej" konfiguracji.

Może nie dorówna takim rozwiązaniom:
https://www.tecmint.com/udev-for-device … -in-linux/
https://dug.net.pl/drukuj/278/oswajanie … _urzadzen/

Ale chodzi mi o porównywalne działanie w sensie jakościowym.

Pozdro

4

Odp: [SOLVED]Host RNDIS i dual WAN?

Drugi wan. Możesz to sobie wyklikać przez luci lub zrobić przez uci w konsoli. Jak wolisz, jeden raz.
Wymaga dhcp tak jak sam to wcześniej pokazałeś. Jak pojawi się urządzenie to system sam weźmie sobie adres. Identycznie jak to jest na sprzętowym wanie. Interfejs się sam włączy.

Działa to tak jak w zwykłym linuksie - podłączysz działa, odłączysz nie działa, tak jak zwykły wan. Serio, chyba po prostu doszukujesz się  problemów tam gdzie ich nie ma.

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

5

Odp: [SOLVED]Host RNDIS i dual WAN?

Drugi wan zrobić przez mwan3 czy na samym OpenWRT bez dodatkowych pakietów?

PS:
Na moim Gentoo ruszyło tak:

## /etc/udev/rules.d/80-net-name-slot.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",  ENV{ID_NET_NAME_PATH}=="enp0s20u7",\
        RUN +="/sbin/dhcpcd usb0"

SUBSYSTEM=="net", ACTION=="remove", DRIVERS=="?*",  ENV{ID_NET_NAME_PATH}=="enp0s20u7",\
        RUN +="/sbin/dhcpcd -x usb0"

jeszcze trzeba to trochę poprawić, w każdym razie już działa poprawnie.

6

Odp: [SOLVED]Host RNDIS i dual WAN?

Mwan nie robi sam z sobie żadnych wanów. I tak musisz ręcznie robić konfigurację.'

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

7 (edytowany przez jacekalex 2020-05-16 13:02:58)

Odp: [SOLVED]Host RNDIS i dual WAN?

Dobra, drugi wan zrobiony:

##/etc/config/network
config interface 'wan'
    option ifname 'eth0.2'
    option proto 'dhcp'
    option peerdns '0'
    option dns '1.0.0.1 1.1.1.1 208.67.220.220 208.67.222.222 8.8.8.8 8.8.4.4 2620:0:ccc::2 2606:4700:4700::1111 2620:0:ccd::2 2606:4700:4700::1001 2001:4860:4860::8888 2001:4860:4860::8844'


config interface 'wan2'
        option ifname 'usb0'
        option proto 'dhcp'
        option peerdns '0'
        option dns '1.0.0.1 1.1.1.1 208.67.220.220 208.67.222.222 8.8.8.8 8.8.4.4 2620:0:ccc::2 2606:4700:4700::1111 2620:0:ccd::2 2606:4700:4700::1001 2001:4860:4860::8888 2001:4860:4860::8844'

Ładnie włącza kartę usb0 po podłączeniu.

Pozostał jeszcze mały problem, dhcp automatycznie przestawia routing default na usb0, a ja wolę, żeby dodawał trasę default z inną metryką.

Czyli robił coś takiego (Linux w kompie):

default via 192.168.1.1 dev net src 192.168.1.10 metric 1024 
default via 192.168.1.1 dev wlan0 proto dhcp src 192.168.1.210 metric 1200

W ten sposób interfejs główny ma pierwszeństwo, a jak jest nieczynny, to net fruwa przez interfejs numer dwa.
Czyli najprostsza konfiguracja failowera, jaką sobie można wyobrazić.

8

Odp: [SOLVED]Host RNDIS i dual WAN?

Ale żeś pojechał z tymi dnsami...

Więc ustaw sobie option metric XXX na interfejsie.

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

9

Odp: [SOLVED]Host RNDIS i dual WAN?

default via 88.154.100.1 dev eth0.2 proto static src 88.154.106.141 metric 1024 
default via 192.168.42.129 dev usb0 proto static src 192.168.42.211 metric 1280

Dobra, z metrykami router chyba zrozumiał, o co mi chodzi. wink

Dzięki

10 (edytowany przez jacekalex 2020-05-16 13:45:54)

Odp: [SOLVED]Host RNDIS i dual WAN?

A więc teraz mały notatnik:

Trzeba zainstalować sterowniki (do mojego cegłofona starczyły te):

kmod-usb-net
kmod-usb-net-cdc-eem
kmod-usb-net-cdc-ether
kmod-usb-net-cdc-subset
kmod-usb-net-rndis

Ustawiamy dwa interfejsy wan z różnymi metrykami w pliku konfiguracyjnym:

###/etc/config/network
config interface 'wan'
    option ifname 'eth0.2'
    option proto 'dhcp'
    option peerdns '0'
    option metric 1024
    option dns '1.0.0.1 1.1.1.1 208.67.220.220 208.67.222.222 8.8.8.8 8.8.4.4'


config interface 'wan2'
    option ifname 'usb0'
    option proto 'dhcp'
    option peerdns '0'
    option metric 1280
    option dns '1.0.0.1 1.1.1.1 208.67.220.220 208.67.222.222 8.8.8.8 8.8.4.4'

Potem restart sieci w routerze albo całego routera.
Podłączamy cegłofona do portu usb routera i włączamy w nim usb-tethering.
W ten sposób cegłofon ma smaczną kolację  w postaci spokojnego wolnego ładowania (które na pewno nie przegrzeje baterii i nie spowoduje wybuchu), natomiast router ma zapasową rurkę do internetu, na wypadek,
gdyby myszy albo złośliwe krasnoludki  zajęły się głównym połączeniem ze światem. wink

Za uwagę dziękują:

OpenWRT 19.07 na Netgearze wndr4300v1.
LineageOS 17.1 na Motoroli Cedric.

I oczywiście wariat, który tego posta napisał. xD

Pozdro
tongue