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

Соединение двух подсетей с использованием Ubuntu 10.04 LTS в качестве маршрутизатора

Меня это беспокоит пару дней,

У меня две подсети:

192.168.1.0/24: это подсеть, которую использует мой интернет-провайдер / маршрутизатор. Шлюз к глобальной сети - 192.168.1.1 192.168.2.0/24: это подсеть, которую я создал на моей виртуальной машине ESXi 5.

Физическая машина, на которой работает ESXi 5, имеет два сетевых адаптера: один подключен к моему интернет-провайдеру / маршрутизатору, а другой подключен к другому маршрутизатору с отключенным DHCP-сервером. Я использую этот второй маршрутизатор только для того, чтобы поддерживать статус NIC «UP» с точки зрения VMware.

У меня есть виртуальный Ubuntu 10.04 LTS с двумя подключенными к нему сетевыми адаптерами. Идея состоит в том, что это будет сервер как маршрутизатор между двумя подсетями. У меня есть DHCP, работающий на маршрутизаторе Ubuntu, который передает IP-адреса моим виртуальным машинам, используя локальную сеть 192.168.2.0.

Проблема в том, что я не могу заставить маршрутизатор Ubuntu пересылать пакеты из одной подсети в другую. Должен отметить, что перепробовал все возможные комбинации параметров конфигурации, которые только мог придумать. Моя текущая настройка выглядит следующим образом:

Я выполнил команду echo 1 > /proc/sys/net/ipv4/ip_forward для включения пересылки пакетов.

Мой брандмауэр выглядит так:

root@gRouter:~# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Мой '/ etc / network / interfaces' выглядит так:

root@gRouter:~# cat /etc/network/interfaces

auto lo eth0 eth1
iface lo inet loopback

iface eth0 inet static
    address 192.168.1.105
    network 192.168.1.0
    netmask 255.255.255.0
    up ip route add 192.168.2.0/24 via 192.168.1.105


iface eth1 inet static
    address 192.168.2.2
    network 192.168.2.0
    netmask 255.255.255.0
    up ip route add 192.168.1.0/24 via 192.168.2.2

С этого маршрутизатора с двумя сетевыми адаптерами я могу пинговать между виртуальными машинами в подсети 192.168.2.0 и я могу пинговать между виртуальными машинами и физическими машинами в подсети 192.168.1.0. Но я не могу пинговать из одной подсети в другую.

Моя таблица маршрутов выглядит так:

root@gRouter:~# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.2.0     *               255.255.255.0   U     0      0        0 eth1
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0

Мой arp в настоящее время выглядит так:

root@gRouter:~# arp -v
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.2.13             ether   00:0c:29:30:f4:d9   C                     eth1
192.168.2.10             ether   00:0c:29:bf:60:a3   C                     eth1
192.168.1.64             ether   38:59:f9:e7:a0:f5   C                     eth0
Entries: 3      Skipped: 0      Found: 3

Когда я пытаюсь выполнить эхо-запрос с машины в подсети 192.168.2.0 на машину в подсети 192.168.1.0, я сразу получаю сообщение об ошибке «Подключиться: сеть недоступна».

Когда я пытаюсь выполнить эхо-запрос с машины в подсети 192.168.1.0 на машину в подсети 192.168.2.0, первый эхо-запрос инициируется, но он просто зависает на неопределенное время.

Извините за длинный пост, надеюсь, я дал достаточно информации. Очень благодарен за любую помощь.

Заранее спасибо.

У вас нет способа передать пакеты машине, выполняющей маршрутизацию. Машины в каждой сети должны знать, что интерфейс маршрутизатора в их сети является их шлюзом к другой сети.

Самый простой способ сделать это - добавить статический маршрут к шлюзу по умолчанию в каждой сети. Например, если маршрутизатор - 192.168.1.10/24 и 192.168.2.20/24, а шлюзы по умолчанию для этих двух сетей - 192.168.1.1 и 192.168.2.1, то вам необходимо добавить следующие два статических маршрута:

1) На 192.168.1.1 вам нужен маршрут до 192.168.2.0/24 со шлюзом 192.168.1.10

2) На 192.168.2.1 вам нужен маршрут до 192.168.1.0/24 со шлюзом 192.168.2.20

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

Вам необходимо создать соответствующую магистраль для совместной маршрутизации двух подсетей. Без правил брандмауэра для ACCEPT, DENY, DROP пакетов для любого интерфейса вы, конечно, не получите никакого соединения между двумя подсетями.

Начните читать некоторые правила IPFW / IPTABLES.

http://forum.codecall.net/topic/48557-help-with-iptables-2-nics-2-subnets/