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

У меня проблема. Прежде всего, я решил настроить сервер на Ubuntu 14.04. У меня есть два интерфейса: 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 route:

 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) 

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

Поскольку у вас нет конкретной конфигурации eth1 в /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 добавить -net ABCD gw 172.16.1.254

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

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

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

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

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

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

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

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

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

iptables -L -n

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

iptables -F