У меня есть два интерфейса Ethernet на моем компьютере, на котором работает Ubuntu 9.04. Оба интерфейса имеют статические IP-адреса, но используют отдельные шлюзы. Мой /etc/network/interfaces
файл выглядит примерно так:
auto eth0 eth1 iface eth0 inet static address 10.0.0.5 netmask 255.255.255.0 gateway 10.0.0.1 iface eth1 inet static address 192.168.2.5 netmask 255.255.255.0 gateway 192.168.2.1
Я хочу, чтобы весь трафик, идущий в Интернет в целом, проходил через eth0
, но, похоже, хочет пройти eth1
. Есть ли способ направить общий исходящий трафик через eth0
вместо этого и используйте только eth1
для трафика в свою подсеть?
Ответ должен быть настойчивым; иными словами, он должен пережить перезагрузку без необходимости выполнения суперпользователем команды после перезапуска.
РЕДАКТИРОВАТЬ: как и просили, вот результат моего route -n
команда:
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth1 0.0.0.0 192.168.2.1 0.0.0.0 UG 100 0 0 eth1 0.0.0.0 10.0.0.1 0.0.0.0 UG 100 0 0 eth0
У вас должен быть только один шлюз по умолчанию. Если вы удалите линию шлюза из eth1, все будет просто работать (после перезапуска сети).
Удалите шлюз из eth1 в / etc / network / interfaces и добавьте его как статический маршрут:
route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.2.1
При этом 10.0.0.1 будет вашим шлюзом по умолчанию, а eth1 будет использоваться только для подключения к сети 192.168.2.0.
Изменение таблицы маршрутизации с помощью предложенного маршрута временно исправит это, но вернется к текущему состоянию при следующей загрузке.
Можно было бы установить правила маршрута в /etc/rc.local или в каком-либо другом сценарии инициализации, но в этом случае самый простой вариант - просто удалить шлюз из eth1 в файле интерфейсов.
После удаления этого шлюза система по-прежнему будет автоматически использовать eth1 в качестве маршрута 192.168.2 / 24, но будет направлять весь другой трафик через eth0.
Посмотрите свою текущую таблицу маршрутизации, введя route. Ваш компьютер будет использовать первый gw по умолчанию, который он видит в таблице маршрутизации. Это будет обозначено по умолчанию или 0.0.0.0 как место назначения. Если вы хотите, чтобы для локальной сети 192.168.2.0/24 использовался только eth1, удалите команду gateway. Это должно сделать gw по умолчанию для eth1 вашим единственным по умолчанию.
Пользуюсь этим решением уже 4+ года, есть опубликовал его на вики-странице Linode, и он работал безупречно. редактировать /etc/network/interfaces
и сделайте так:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address <the outbound IP>
netmask <the netmask for the outbound IP, usually 255.255.255.0>
gateway <the gateway for the outbound IP>
up /sbin/ip addr add <the primary IP>/24 dev eth0