Назад | Перейти на главную страницу

Используйте специальный интерфейс для исходящих подключений (Ubuntu 9.04)

У меня есть два интерфейса 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