Я использую встроенный компьютер 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, проблем не возникает вообще. У меня проблема только с двумя активными интерфейсами.

0