Dokonaj trwałej zmiany w tabeli routingu

10

Mam Raspberry PI 2 model B z wersją Raspbian Jessie i próbuję przenieść internet z mojego komputera na Raspberry. Mam między nimi 2 interfejsy sieciowe, jeden przez Ethernet, a drugi przez Wi-Fi. Skonfigurowałem adres IP Ethernet w Raspberry, aby był statyczny, ponieważ mam w domu małą sieć komputerową ze statycznymi adresami IP i chcę, aby malina była częścią tego. Ponieważ mój internet jest bardzo wolny (używam modemu telefonicznego), nie chcę udostępniać tego powolnego internetu przez interfejs Ethernet, ponieważ nie chcę, aby wszystkie komputery podłączone do tej sieci zmniejszały moją prędkość. Ponieważ zamierzam tylko przenieść internet do Raspberry, stworzyłem hotspot Wi-Fi na moim komputerze, który dynamicznie przypisuje adres IP do mojego Raspberry (oprogramowanie hotspot ma jakiś DHCP) i że „

Ale potem zaczyna się mój problem, domyślnie po włączeniu (lub jeśli rozłączę się i ponownie połączę), Raspberry nie łączy się z Internetem. Wpisując ifconfiguzyskać:

eth0     
Link encap:Ethernet  HWaddr b8:27:eb:4e:35:65  
inet addr:100.100.100.25  Bcast:100.100.100.255  Mask:255.255.255.0
inet6 addr: fe80::ba27:ebff:fe4e:3565/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

wlan0     
Link encap:Ethernet  HWaddr 74:da:38:55:f3:a2  
inet addr:192.168.137.201  Bcast:192.168.137.255  Mask:255.255.255.0
inet6 addr: fec0::12:c4f1:c3fc:eb1e:3153/64 Scope:Site
inet6 addr: 2002:be0f:9cea:12:1bc0:1969:c17d:f854/64 Scope:Global
inet6 addr: fe80::bdca:7255:2e27:8341/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

Kiedy piszę route -n, otrzymuję:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         100.100.100.1   0.0.0.0         UG    202    0        0 eth0
0.0.0.0         192.168.137.1   0.0.0.0         UG    303    0        0 wlan0
100.100.100.0   0.0.0.0         255.255.255.0   U     202    0        0 eth0
192.168.137.0   0.0.0.0         255.255.255.0   U     303    0        0 wlan0

Tutaj możesz zobaczyć, jak metryka mojej statycznej bramy połączenia Ethernet (100.100.100.1) jest mniejsza niż metryka mojej bramy połączenia DHCP Wifi (192.168.137.1), więc moja Raspberry próbuje uzyskać dostęp do Internetu przez niewłaściwy interfejs

po wpisaniu:

sudo route delete  default gateway 192.168.137.1 

i wtedy :

sudo route add  default gateway 192.168.137.1

moja tabela routingu jest ustawiona na:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.137.1   0.0.0.0         UG    0      0        0 wlan0
0.0.0.0         100.100.100.1   0.0.0.0         UG    202    0        0 eth0
100.100.100.0   0.0.0.0         255.255.255.0   U     202    0        0 eth0
192.168.137.0   0.0.0.0         255.255.255.0   U     303    0        0 wlan0

a Malina ma dostęp do Internetu.

Moje pytania to:

  1. Czy istnieje sposób na zautomatyzowanie tego procesu, więc nie będę musiał tego robić ręcznie za każdym razem, gdy włączam Raspberry?
  2. Czy istnieje sposób na zautomatyzowanie go, aby zawsze rozpoznawał, że musi uzyskać dostęp do Internetu z Wi-Fi niezależnie od zakresu adresów IP podanego przez hotspot DCHP dla tego interfejsu?
  3. Dlaczego niższa metryka została automatycznie przypisana do interfejsu Ethernet?

Sprawdziłem już rozwiązanie w Jak utrzymać zmianę w tabeli routingu? ale to nie działa dla mnie, ponieważ w Raspbian Jessie nie edytujesz bezpośrednio, /etc/network/interfacesa edytujesz, /etc/dhcpcd.confaby uzyskać statyczny adres IP

VMMF
źródło

Odpowiedzi:

11

Czy istnieje sposób na zautomatyzowanie tego procesu, więc nie będę musiał tego robić ręcznie za każdym razem, gdy włączam Raspberry?

Nie jest to konieczne, jeśli pytanie 2 można rozwiązać - i może ...

Czy istnieje sposób na zautomatyzowanie go, aby zawsze rozpoznawał, że musi uzyskać dostęp do Internetu z Wi-Fi niezależnie od zakresu adresów IP podanego przez hotspot DCHP dla tego interfejsu?

W /etc/dhcpcd.confdodatku

interface wlan0;
metric 200;

interface eth0
metric 300;

Spowoduje to przypisanie niższej wartości do interfejsu WLAN, dzięki czemu zostanie wybrany dla żądań internetowych.

Dlaczego niższa metryka została automatycznie przypisana do interfejsu Ethernet?

Ponieważ w ten sposób metryki są przypisywane zgodnie z man dhcpcd.conf (5) :

 metric metric
         Metrics are used to prefer an interface over another one, lowest
         wins.  dhcpcd will supply a default metric of 200 +
         if_nametoindex(3).  An extra 100 will be added for wireless
         interfaces.
Thomas Weller
źródło
+1 Dziękuję bardzo, że jeszcze nie miałem odpowiedzi.
Uruchomiłem
Uwaga: nie działa to w przypadku połączeń innych niż DHCP. Jeśli masz połączenie statyczne w / etc / network / interfaces, możesz ustawić metrykę bramy, zastępując bramę xxx.xxx.xxx.xxx trasą do góry, dodając domyślną metrykę gw xxx.xxx.xxx.xxx ###
Sameer Puri
0

To, co robię, to po prostu uruchomić go przy starcie.

Dodaj sudo route delete defaultiw sudo route add default gateway 192.168.137.1określonej kolejności do swojego /etc/init.d/rc.localpliku.

Zapomniałem, czy /etc/init.d/rc.localJessie działa od razu po wyjęciu z pudełka, czy nawet powinieneś go dotknąć, czy nie, ale znalezienie innego rozwiązania powinno być trywialne (już to zrobiłem) .

I to rozwiązuje # 1.


Aby ustalić priorytety połączeń, zalecamy instalację ifmetric. Następnie po prostu ustal priorytety połączeń/etc/network/interfaces

Najwyższy priorytet to 0, następnie 1, następnie 2 i tak dalej.

iface eth0 inet dhcp
 metric 1

iface wlan0 inet static
 address 192.168.0.1
 netmask 255.255.255.0
 network 192.168.0.0
 metric 0

iface eth1 inet dhcp
 metric 2

I to wszystko dla nr 2.


Myślę, że # 3 zdarzyło się, ponieważ deweloperzy myśleli, że WiFi jest traktowane priorytetowo w chłopskich środowiskach bez zasilania. Mogłem tylko spekulować, ponieważ nie mogę znaleźć żadnych informacji na ten temat.

PNDA
źródło