Внести постоянные изменения в таблицу маршрутизации

10

У меня Raspberry PI 2 модель B с Raspbian версией Джесси, и я пытаюсь перенести интернет с моего компьютера на Raspberry. У меня есть 2 сетевых интерфейса между ними, один через Ethernet, а другой через Wifi. Я настроил IP-адрес Ethernet в Raspberry как статический, потому что у меня дома есть небольшая компьютерная сеть со статическими IP-адресами, и я хочу, чтобы Raspberry была ее частью. Поскольку у меня очень медленный интернет (я использую модем), я не хочу делиться этим медленным интернетом через интерфейс Ethernet, потому что я не хочу, чтобы все компьютеры, подключенные к этой сети, истощали мою скорость интернета. Поскольку я только собираюсь подключить Интернет к Raspberry, я создал точку доступа Wi-Fi на моем ПК, которая динамически назначает IP-адрес моей Raspberry (программное обеспечение точки доступа имеет своего рода DHCP), и это '

Но тогда начинается моя проблема, по умолчанию после того, как я включаю его (или если я отключаюсь и снова подключаюсь), Raspberry не подключается к интернету. Набрав, ifconfigя получаю:

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

Когда я печатаю, route -nя получаю:

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

Здесь вы можете увидеть, как показатель моего статического шлюза подключения Ethernet (100.100.100.1) меньше, чем показатель моего шлюза подключения Wi-Fi DHCP (192.168.137.1), поэтому мой Raspberry пытается получить Интернет через неправильный интерфейс

после того, как я наберу:

sudo route delete  default gateway 192.168.137.1 

а потом :

sudo route add  default gateway 192.168.137.1

моя таблица маршрутизации фиксируется на:

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

и малина имеет доступ к интернету.

Мои вопросы:

  1. Есть ли способ автоматизировать этот процесс, чтобы мне не приходилось делать это вручную каждый раз, когда я включаю Raspberry?
  2. Есть ли способ автоматизировать его так, чтобы он всегда распознавал, что он должен подключаться к Интернету через Wi-Fi независимо от диапазона IP-адресов, заданного точкой доступа DCHP этому интерфейсу?
  3. Почему нижний показатель автоматически назначается интерфейсу Ethernet?

Я уже проверил решение в Как сохранить изменения в таблице маршрутизации? но это не работает для меня, потому что в Raspbian Jessie вы не редактируете напрямую, /etc/network/interfacesа редактируете, /etc/dhcpcd.confчтобы получить статический IP-адрес

VMMF
источник

Ответы:

10

Есть ли способ автоматизировать этот процесс, чтобы мне не приходилось делать это вручную каждый раз, когда я включаю Raspberry?

Это не нужно, если вопрос № 2 может быть решен - и это может ...

Есть ли способ автоматизировать его так, чтобы он всегда распознавал, что он должен подключаться к Интернету через Wi-Fi независимо от диапазона IP-адресов, заданного точкой доступа DCHP этому интерфейсу?

В /etc/dhcpcd.confдобавлении

interface wlan0;
metric 200;

interface eth0
metric 300;

Это назначит более низкую метрику интерфейсу WLAN, так что он будет выбран для интернет-запросов.

Почему нижний показатель автоматически назначается интерфейсу Ethernet?

Потому что так метрики назначаются в соответствии с 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.
Томас Веллер
источник
+1 Большое спасибо, у меня еще не было ответа. Я запускал ручной сценарий каждый раз, когда мне нужно было это сделать
VMMF
Обратите внимание, что это не работает для подключений не DHCP. Если у вас есть статическое соединение в / etc / network / interfaces, вы можете установить метрику шлюза, заменив шлюз xxx.xxx.xxx.xxx на восходящий маршрут, добавив значение по умолчанию gw xxx.xxx.xxx.xxx метрика ###
Sameer Puri
0

Я просто запускаю его при загрузке.

Добавьте sudo route delete defaultи sudo route add default gateway 192.168.137.1в указанном порядке в ваш /etc/init.d/rc.localфайл.

Я забыл, /etc/init.d/rc.localработает ли Джесси из коробки, или даже если вы должны прикоснуться к нему или нет, но это должно быть тривиально, чтобы найти другое решение (я уже сделал) .

И это решает № 1.


Для приоритизации соединений я рекомендую установить ifmetric. Затем просто расставьте приоритеты ваших соединений в/etc/network/interfaces

Наивысшим приоритетом является 0, затем 1, затем 2 и т. Д.

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

И это все для № 2.


Я думаю, что # 3 произошло, потому что разработчики думали, что WiFi является приоритетом в среде крестьян, не являющихся пользователями. Я мог только строить догадки, так как не могу найти никакой информации по этому вопросу.

PNDA
источник