У меня есть система с двумя сетевыми картами. Эта машина и несколько сопутствующих устройств будут перемещены и подключены к разным локальным сетям, а иногда будет использоваться модем.
eth0:
- 10.x.x.x address space
- no internet gateway
- only a few devices
eth1 (when used):
- 172.16.x.x or 192.168.x.x or other address spaces
- access to the gateway from LAN to internet
ppp0 (when used):
- internet access through dialup using KPPP
Я использую ifconfig для повышения или понижения интерфейсов (кроме ppp0, который обрабатывается KPPP).
Если я сначала включу eth1, он получит адрес от своего DHCP и получит шлюз, который добавляется к маршрутизации, поэтому нет проблем с подключением к локальной сети и Интернету.
Если я сначала укажу eth0, он получит свой адрес и установит шлюз по умолчанию в пределах своего адресного пространства (в диапазоне 10.xxx). Если я сначала укажу eth0, а за секунду eth1, шлюз по умолчанию все еще будет находиться в диапазоне 10.xxx.
Поэтому независимо от того, что я делаю, eth0 переопределит eth1 и «потребует» шлюз в маршрутизации.
Есть ли какой-нибудь способ либо запретить eth0 запрашивать шлюз, либо удостовериться, что eth1 (если он установлен 2nd) использует свой шлюз? Или я могу как-то расставить приоритеты в ранжировании того, какой интерфейсный шлюз должен использоваться поверх других?
Я в основном хочу убедиться, что шлюз адресного пространства eth1 используется по умолчанию, если он активен, а если нет, то используется шлюз ppp0 по умолчанию. Я бы хотел, чтобы у eth0 никогда не было шлюза по умолчанию.
источник
ifconfig
приведет к какому-либо взаимодействию DHCP. Как правило,ifup
будет делать это, начинаяdhclient
. Возможно, ваши интерфейсы eth * запускаются процессом загрузки системы, скажем/etc/init.d/network
, или NetworkManager?Ответы:
Конфигурация DHCP-сервера неверна. Он не должен отправлять параметр шлюза по умолчанию, если он не может обеспечить маршрутизацию для остального мира. Если он отправляет эту опцию, то любой клиент может предположить, что он может отправлять пакеты для любого получателя вне линии связи на указанный шлюз по умолчанию.
Таким образом, ваш ящик прав в использовании шлюза по умолчанию от eth0, если об этом говорит DHCP. Решение состоит в том, чтобы удалить плохую опцию с вашего DHCP-сервера.
источник
Я столкнулся с подобной проблемой на Raspbian (полагаю, что приведенное ниже решение будет применимо и к Debian). Raspberry Pi 3 имеет 2 встроенные сетевые карты: Wi-Fi и Ethernet. Я использую их обоих, они wlan0 и eth0, соответственно. wlan0 подключен к моей домашней сети Wi-Fi, и доступ к Интернету осуществляется через этот интерфейс. Он получает свои настройки через DHCP от моего домашнего роутера. eth0 подключен напрямую к моему компьютеру с Windows и ему назначен статический IP-адрес. Доступ к Интернету через eth0 не был доступен, так как я не настроил его на своем компьютере с Windows.
В Raspbian демон dhcpcd отвечает за настройку сетевых интерфейсов. Чтобы установить статический IP для интерфейса eth0, в конце были добавлены следующие строки
/etc/dhcpcd.conf
:С этими настройками dhcpcd создал 2 маршрута по умолчанию, и маршрут через eth0 имел более высокий приоритет, чем через wlan0:
Таким образом, у меня не было доступа к Интернету, потому что система пыталась маршрутизировать его через eth0, и у него не было доступа к Интернету, как я упоминал выше.
Чтобы решить эту проблему, я использовал
nogateway
опцию в/etc/dhcpcd.conf
интерфейсе for eth0. Итак, конфигурация eth0 стала выглядеть так:После сохранения этой конфигурации и перезагрузки не было никакого маршрута по умолчанию через eth0:
Доступ в интернет появился, и проблема была решена.
источник
nogateway
это путь в последних дистрибутивах DebianНа RHEL6 / Fedora 22 было проверено следующее.
В / etc / sysconfig / network-scripts / ifcfg-eth1 добавьте строку:
Замените eth1 на имя интерфейса, где маршрутизация по умолчанию не нужна.
Это также можно сделать через графический интерфейс Network Manager, установив флажок «Использовать это соединение только для ресурсов в своей сети» в нижней части вкладки IPv4.
DEFROUTE = no предотвращает добавление маршрута по умолчанию (пункт назначения 0.0.0.0) в таблицу маршрутизации, когда интерфейс включен. то есть. следующая запись не будет добавлена.
источник
Итак, вы хотите, чтобы машина никогда не вызывала шлюз по умолчанию, когда она вызывает eth0 и получает свой адрес через DHCP.
Вот решение:
Редактировать файл:
и заполните:
перед:
после ifdown eth0, ifup eth0:
источник
Вы можете редактировать файл dhcpclient.conf и не запрашивать какой-либо маршрут по умолчанию с удаленного DHCP-сервера.
Небольшой пример того, что я сделал, и это работает для моего случая
источник