Невозможно использовать два сетевых интерфейса одновременно

9

У меня проблема. Прежде всего, я хочу настроить сервер на Ubuntu 14.04. У меня есть 2 интерфейса: eth0 для сервера DHCP и eth1 для подключения к интернету. Но если я подключусь к двум сетям одновременно, на ПК не будет интернета. Поэтому мне приходится выбирать между сервером и интернетом. Это ужасно, может кто-нибудь сказать мне, как закрыть эту проблему?

/ и т.д. / сеть / интерфейсы:

auto lo eth0 eth1

iface lo inet loopback

iface eth0 inet static
address 172.16.1.100
netmask 255.255.255.0
broadcast 172.16.1.255
gateway 172.16.1.254

Выводы маршрута sudo:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.0.1     0.0.0.0         UG    0      0        0 eth1
192.168.0.0     *               255.255.255.0   U     1      0        0 eth1

UPD: выходы ifconfig:

eth0      Link encap:Ethernet  HWaddr 90:e6:ba:46:1d:50  
          inet6 addr: fe80::92e6:baff:fe46:1d50/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1110 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:184287 (184.2 KB)

eth1      Link encap:Ethernet  HWaddr 00:04:75:98:5f:da  
          inet addr:192.168.0.101  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::204:75ff:fe98:5fda/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:14498 errors:0 dropped:0 overruns:2 frame:0
          TX packets:13096 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:9710708 (9.7 MB)  TX bytes:1840400 (1.8 MB)
          Interrupt:18 Base address:0x4c00 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:4398 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4398 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:527890 (527.8 KB)  TX bytes:527890 (527.8 KB)
Andreikkaa
источник
Сетевой менеджер настраивает ваши устройства? Показать вывод nmcli dev statusтакже можете ping 192.168.0.1?
Мекколл

Ответы:

4

Конфигурируя вывод ifconfigи комментарии к моему первому ответу, я думаю, что проблема связана с тем, как вы конфигурируете свой NIC /etc/network/interfaces.

Поскольку у вас нет конкретной конфигурации для eth1 in /etc/network/interfaces, я предполагаю, что ваш модем предоставляет вашему серверу информацию об IP через DHCP. В соответствии с routeвыходным сигналом вы получаете шлюз по умолчанию, указывающий на модем и Интернет.

Но в вашем /etc/network/interfacesфайле для eth0 также настроен шлюз по умолчанию (оператор gateway 172.16.1.254).

Вы не можете иметь два шлюза по умолчанию в системе. Назначение шлюза по умолчанию на eth1 отключает статическую конфигурацию eth0 , причину, по которой нет IP для eth0 в ifconfigвыходных данных и почему интернет работает, а внутренняя сеть больше не работает.

Вам придется удалить строку gateway 172.16.1.254и попробовать еще раз.

При этом, конечно, если у вас есть более одной подсети во внутренней локальной сети, вы не сможете больше к ним обращаться. Если вы не настроите статический маршрут ко всем этим подсетям на вашем сервере:

sudo route add -net ABCD gw 172.16.1.254

Вы можете добавить routeкоманду в сценарий, сохраняемый /etc/network/if-up.dдля запуска при каждом запуске интерфейса.

Benoit
источник
На самом деле у вас может быть два маршрута по умолчанию в данной системе (не в его системе, поскольку у сервера нет доступа в Интернет), но они должны иметь разные приоритеты или конфигурацию, чтобы сбалансировать оба.
JrBenito
3

Из того, что я понимаю из вашего поста, вы подключаетесь к Интернету через eth1 и к своей внутренней сети через eth0 . И тогда ваш сервер играет роль DHCP-сервера и шлюза по умолчанию для вашего компьютера, чтобы выходить в Интернет.

Во-первых, на ПК убедитесь, что они правильно получили все настройки DHCP, включая шлюз. Исходя из вашего вопроса, я предполагаю, что это должно быть 172.16.1.100

Во-вторых, убедитесь, что ваш eth1 хорошо подключен к Интернету и хорошо настроен; это, очевидно, зависит от вашего провайдера.

Наконец, самая важная операция, вам нужно будет включить пересылку IP между вашими двумя интерфейсами на сервере. Без этого пакет не будет маршрутизироваться между вашим ПК и Интернетом:

Ручная настройка:

sudo echo 1> / proc / sys / net / ipv4 / ip_forward

Для того, чтобы иметь прямой флаг IP автоматической настройки во время загрузки раскомментировать строку #net.ipv4.ip_forward=1в/etc/sysctl.conf

Вам также необходимо убедиться, что не существует правил брандмауэра IPtables, которые блокируют трафик. Делать :

iptables -L -n

чтобы получить список правил, если таковые имеются. Сначала я попробую эту настройку с отключенными правилами брандмауэра:

iptables -F

Benoit
источник
Нет, я пытаюсь настроить PXE-сервер. Компьютеры в моей локальной сети правильно получают IP-адреса (они загружаются). Но нет интернета ни на сервере, ни (конечно) на клиентах.
Андрейккаа
Итак, на данный момент мне нужно только исправить интернет-соединение на сервере.
Андрейккаа
@ user3452627: не могли бы вы добавить вывод ifconfigк вашему вопросу. А также укажите, как вы подключены к Интернету.
Бенуа
Конечно. Я подключен через модем.
Андрейккаа
@ user3452627: дает ли этот модем IP-адрес вашему серверу через DHCP?
Бенуа
2

У меня была похожая проблема, но мой интерфейсный файл был пуст:

# The loopback network interface
auto lo
iface lo inet loopback

Мне удалось решить проблему путем перемещения / удаления найденного файла проводного соединения: /etc/NetworkManager/system-connections/Wired connection 1

После перезагрузки смог подключиться к обеим сетям.

Максим Лузик
источник