Заставить Raspberry получить интернет из определенной сети

13

Я настроил свой RPi для подключения к 3G-ключу при загрузке, установив ppp и wvdial на

/etc/network/interfaces

Пи загружается, и у меня есть подключение к интернету. Отлично.

Теперь моя проблема в том, что всякий раз, когда я подключаю Pi к своему компьютеру через Ethernet (используя это руководство ), интернет-соединение теряется. Даже после отключения от компьютера он все равно не подключается, мне нужно перезагрузить компьютер, чтобы он снова мог подключиться к Интернету.

Есть ли способ заставить Пи оставаться подключенным к Интернету через интерфейс ключа вместо того, чтобы пытаться подключиться к моему компьютеру?

jonathanwiesel
источник
Оба соединения используют DHCP?
Лоуренс
Как выглядит ваш вывод ifconfig?
Bex
Установка более высокого показателя для eth0, чем для ppp0, должна обеспечить то, что вы хотите. Чем ниже показатель, тем выше приоритет.
Лоуренс

Ответы:

6

Предполагая, что вы работаете с Linux (raspian, debian и т.д ...):

Вы задаете два разных вопроса. Сначала я отвечу на заглавный вопрос:

Заставить Raspberry получить интернет из определенной сети

Я собираюсь заблокировать ваше слово «сеть» (в отличие от «интерфейс») и ответить на это в чистом смысле IP:

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

Для просмотра таблицы маршрутизации, которую я обычно использую netstat -rn( -rдля «show routing», -nдля «покажи номера, не пытайтесь выполнять поиск DNS, который может зависнуть, если мой интернет не настроен правильно»). Действительно простой пример будет выглядеть так:

pi@homeServer ~ $ netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.9.1     0.0.0.0         UG        0 0          0 eth0
192.168.9.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
172.20.10.0     0.0.0.0         255.255.255.240 U         0 0          0 wlan0
pi@homeServer ~ $ 

Строка в этом выводе, которая показывает, каким образом будут идти IP-пакеты, является строкой с dest 0.0.0.0и genmask of 0.0.0.0, которая обычно известна как default route(маска 0.0.0.0- это все подстановочные знаки, которые действительно являются маркером маршрута по умолчанию), и поскольку в данный момент он указывает на определенный адрес в диапазоне `192.168.9 ', интернет-трафик будет проходить через интерфейс Ethernet.

Если я хочу переключить свой интернет на другую сеть, я бы (как root) использовал routeкоманду, и в этом случае, учитывая, что мое соединение Wi-Fi не является двухточечным, я должен знать IP-адрес маршрутизатора, который может перенаправить трафик из этой сети (в моем случае это 172.20.10.1так), поэтому я бы сделал:

  1. Удалить текущий маршрут по умолчанию

    sudo route del default
    
  2. Добавить новый маршрут по умолчанию для другой сети

    sudo route add default gw 172.20.10.1
    

К вашему сведению, routeя использую FYI , но некоторые считают его устаревшим и вместо этого рекомендуют использовать ip routeкоманду, см. Комментарий @Fred ниже о синтаксисе. ссылка на амортизацию

Есть ли способ оставаться на связи через интерфейс ключа

Прошло много времени с тех пор, как я работал с pppи wvdialбез конфигов (или, по крайней мере, со ссылками на руководства, которые вы использовали при их настройке), очень трудно догадаться, с какими проблемами вы столкнулись, но вот несколько идей:

  • Соединение действительно разорвано, или вы просто потеряли маршрут по умолчанию, когда появился eth0?
    • Проверьте это в обоих netstat -rnи ifconfig.
    • Интерфейс в netstat -rn? если так, есть ли маршрут к нему по умолчанию?
    • В ifconfigвы видите интерфейс для ключа (скорее всего ppp)? это так UP?
  • Я не могу вспомнить, где ppp/ wvdialжурнал, но это должно быть проверено. Этот журнал покажет вам состояние соединения и должен сообщить вам, если вся система по какой-то причине закрылась
  • Если вы видите интерфейс, попробуйте pingчто-нибудь (... что-нибудь ...) на нем, и посмотрите, установится ли соединение.
    • Я знаю, что ppp/ wvdialcombo имеет некоторые возможности автоматического подключения (в зависимости от конфигурации)
      • Таким образом, если соединение установило ping (или соединение не прекращалось все время): это может быть (ppp) маршрут по умолчанию, потерянный при подключении к Ethernet.
      • Если это проблема, вам просто нужно добавить маршрут по умолчанию, и вся система вернется в режим онлайн.
Майк Лутц
источник
2
ip routeне совсем использует тот же синтаксис. Тем не менее, вы можете скопировать и вставить его вывод для использования в качестве ввода. Например, если он показывает default via 192.168.9.1 dev eth0, вы можете удалить этот маршрут, просто выполнив ip route del default via 192.168.9.1 dev eth0. Вы можете легко использовать вывод в качестве шаблона для добавления новых команд, например ip route add default via 172.20.10.1 dev wlan0.
Фред