Ubuntu как Маршрутизатор / Шлюз - Невозможно получить доступ к WAN

В настоящее время я пытаюсь настроить домашний маршрутизатор, используя машину под управлением Ubuntu 12.04. У машины есть два порта Ethernet. eth0 - это LAN, а eth1 - это WAN.

Я установил eth0 на статический ip и имею eth1 запрашивать ip через DHCP.

/etc/network/interface

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
  address 10.1.1.10
  netmask 255.255.255.0
  gateway 10.1.1.10
  dns-nameservers 10.1.1.1 10.1.1.10

auto eth1
iface eth1 inet dhcp

Это позволяет мне пропинговать компьютеры локальной сети, но я не могу пропинговать или получить доступ к каким-либо внешним хостам. Модем дает eth1 действительный IP-адрес. Машина настраивает свой IP-адрес локальной сети на 10.1.1.10 (для перемещения на 10.1.1.1, когда все работает).

Я добавил следующее к /etc/bind/named.conf.options:

    forwarders {
            8.8.8.8;
            8.8.4.4;
    };

net.ipv4.ip_forward = 1 был добавлен в /etc/sysctl.conf,

$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         Vanir.local     0.0.0.0         UG    100    0        0 eth0
10.1.1.0        *               255.255.255.0   U     0      0        0 eth0
98.162.168.0    *               255.255.252.0   U     0      0        0 eth1
link-local      *               255.255.0.0     U     1000   0        0 eth0

Кто-нибудь видит, чего мне не хватает, чтобы разрешить как WAN, так и LAN трафик на моей машине?

1 ответ

Решение

Мне удалось решить эту проблему путем редактирования /etc/udev/rules.d/70-persistent-net.rules, Сделав eth0 моим WAN NIC, linux автоматически использовал свой шлюз в качестве шлюза по умолчанию.

/etc/udev/rules.d/70-persittent-net.rules:

# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# PCI device 0x10ec:/sys/devices/pci0000:00/0000:00:1c.4/0000:03:00.0 (r8169)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="FF:FF:FF:FF:FF:F0", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x10ec:/sys/devices/pci0000:00/0000:00:1c.5/0000:04:00.0/0000:05:01.0 (r8169)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="FF:FF:FF:FF:FF:F1", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

# PCI device 0x10ec:0x8169 (r8169)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="FF:FF:FF:FF:FF:F2", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2"

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

Настоящий источник проблемы заключается в следующем:

авто eth0
iface eth0 inet static
  адрес 10.1.1.10
  маска сети 255.255.255.0
  шлюз 10.1.1.10
  dns-nameservers 10.1.1.1 10.1.1.10

Здесь вы говорите, что если у вас есть пакет для какой-либо сущности, которой нет в подсети 10.1.1.0/24, он должен быть отправлен в 10.1.1.10, который будет знать, как с ним работать. Но 10.1.1.10 - это локальный компьютер. Пакет не предназначен для этого компьютера, поэтому он ищет в своей таблице маршрутизации и решает переслать пакет в 10.1.1.10... Это цикл маршрутизации на одном компьютере.

Если у вас дома только один маршрутизатор (вероятно), локальный интерфейс (ы) не должен иметь никакого определенного шлюза, так как все IP-адреса в подсети доступны локально. Если у вас дома есть несколько маршрутизаторов, вы должны установить конкретные маршруты к сетям, которые обрабатываются этими маршрутизаторами. Единственный раз, когда имеет смысл использовать два маршрута по умолчанию, это если у вас есть два разных маршрута в Интернет.

В вашей настройке только интерфейс, указывающий на Интернет, должен иметь определенный шлюз по умолчанию. Таким образом, конфиг должен быть

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
  address 10.1.1.10
  netmask 255.255.255.0
  dns-nameservers 10.1.1.1 10.1.1.10

auto eth1
iface eth1 inet dhcp

Это бы сработало.

Если у вас дома несколько маршрутизаторов, это, вероятно, из-за homelab или аналогичного, и вы, вероятно, будете использовать протокол маршрутизации для его обработки, но он может быть настроен статически с помощью post-up route add 192.168.1.0/24 gw 10.1.1.20 например.

Тот факт, что переупорядочение интерфейсов сработало для вас, является просто случайным, вероятно, из-за упорядочения таблицы маршрутизации. Ваша конфигурация по-прежнему неверна.

Другие вопросы по тегам