
У меня проблема. Во-первых, я хочу настроить сервер на Ubuntu 14.04. У меня есть 2 интерфейса: eth0 для сервера dhcp и eth1 для подключения к интернету. Но если я подключаюсь к двум сетям одновременно, на ПК нет интернета. Поэтому мне приходится выбирать между сервером и интернетом. Это ужасно, может кто-нибудь подскажет, как закрыть эту проблему?
/etc/network/interfaces:
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
ОБНОВЛЕНИЕ: 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)
решение1
Настроив вывод 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 add -net ABCD gw 172.16.1.254
Вы можете добавить route
команду в скрипт, сохраненный в , /etc/network/if-up.d
который будет запускаться каждый раз при включении интерфейса.
решение2
Насколько я понял из вашего поста, вы подключаетесь к Интернету через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
решение3
У меня была похожая проблема, но мой файл интерфейсов был пуст, вот так:
# The loopback network interface
auto lo
iface lo inet loopback
Мне удалось исправить проблему, переместив/удалив найденный файл проводного подключения:
/etc/NetworkManager/system-connections/Wired connection 1
После перезагрузки удалось подключиться к обеим сетям.