Многие проблемы при настройке шлюза по умолчанию при загрузке


0

Я использую встроенный компьютер BeagleBone под управлением Debian.

У меня есть два сетевых интерфейса:

  1. Соединение с сотовым модемом через USB, которое использует ppp и соединяется с внешним миром. Получает динамический IP-адрес от провайдера

  2. Интерфейс Ethernet, который подключен только к другому локальному устройству. Я назначил этому интерфейсу статический IP-адрес 192.168.1.40. Я устанавливаю это внутри rc.local с помощью команды ifconfig eth0 192.168.1.40 netmask 255.255.255.0

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

#!/bin/sh
IPADD=&(/sbin/ifconfig ppp0 | grep 'inet' | cut -d: -f2 | awk '{ print $2}')
route add default gw $IPADD

Это прекрасно работает, когда я выполняю скрипт вручную после входа в систему. Затем я могу общаться через два интерфейса.

Однако я не могу заставить этот скрипт правильно запускаться при загрузке и автоматически назначать адрес шлюза по умолчанию.

Я попробовал все, запустив его из rc.local, поместив скрипт в /etc/rc5.d или /etc/rc3.d, запустив его из /root/.bashrc или /user/.bashrc Используя crontab, пытаемся поспать 1 минуту перед запуском скрипта, запустив его в цикле. Ничего не работает

Похоже, что после входа в систему шлюз по умолчанию каким-то образом перезаписывается из-за наличия интерфейса Ethernet.

У кого-нибудь есть идеи, как это решить? Мне нужно, чтобы этот адрес шлюза по умолчанию назначался при загрузке автоматически. Я пытался уже несколько дней.

Если у меня не подключен кабель Ethernet или я отключил интерфейс Ethernet, проблем не возникает вообще. У меня проблема только с двумя активными интерфейсами.


Какую версию Debian вы используете? Какое программное обеспечение для управления сетью вы установили и запустили после входа в систему (включая ifupdown, NetworkManager, networkd, клиенты DHCP)? Вы пытались добавить маршрут по умолчанию в качестве маршрута устройства через ppp0 без адреса шлюза? (В любом случае это устройство точка-точка.)
grawity

@grawity Это последняя версия Debian для BeagleBone. Я не уверен насчет программного обеспечения для управления сетью. Как добавить маршрут по умолчанию в качестве маршрута устройства через ppp0 без адреса gw? Я не уверен, что понимаю
Engineer999

Если внешний интерфейс всегда один и тот же, вы можете проверить всякий раз, когда вы можете использовать имя интерфейса, а не IP-адрес для маршрута.
Seth

1
Используя iproute2, ip route add default via $IPADD это обычная версия со шлюзом, ip route add default dev ppp0 версия только для устройства. Немного упрощает ваш скрипт. (Интерфейсы точка-точка не имеют уровня MAC, поэтому адрес шлюза на самом деле не используемый в любом случае.)
grawity

1
@grawity При использовании этих команд возникают ошибки. Msgstr "Ответы RTNETLINK: файл существует". Работает только когда я использую "route add default gw $ IPADD"
Engineer999
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.