как маршрутизировать 3 NIC и 3 подсети

Я пытаюсь настроить маршрутизацию между 3 подсетями, используя сервер Ubuntu 12.10 с 3 сетевыми картами. Я хотел бы иметь возможность прокладывать маршрут между всеми этими подсетями, а также иметь доступ к Интернету.

Сеть 10.0.2.0 подключена к Интернету. Блок маршрутизатора Netgear, подключенный к Интернету, имеет адрес 10.0.2.1.

Три подсети: 10.0.2.0/16, 10.100.0.0/16 и 10.101.0.0/16.

Я попытался настроить мои / etc / network / interfaces для определения сетевых карт и маршрутизации, но, похоже, это не работает. Я могу пропинговать все NIC на сервере ubuntu с любой машины в любой из соответствующих подсетей, но я не могу пропинговать любые системы в разных подсетях из любой из этих подсетей. Также я не могу выйти в интернет из подсетей.

# /etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
# eth0
auto eth0
allow-hotplug eth0
iface eth0 inet static
        address 10.0.2.154
        netmask 255.255.0.0
        gateway 10.0.2.1
        dns-nameservers 10.0.2.100 8.8.8.8

# eth1
auto eth1
allow-hotplug eth1
iface eth1 inet static
        address 10.100.0.4
        netmask 255.255.0.0
        dns-nameservers 10.0.2.100 8.8.8.8

# eth2
auto eth2
allow-hotplug eth2
iface eth2 inet static
        address 10.101.0.1
        netmask 255.255.0.0
        dns-nameservers 10.0.2.100 8.8.8.8

up route add -net 10.0.0.0 netmask 255.255.0.0 gw 10.0.2.1 dev eth0
up route add -net 10.100.0.0 netmask 255.255.0.0 gw 10.0.2.154 dev eth0
up route add -net 10.101.0.0 netmask 255.255.0.0 gw 10.0.2.154 dev eth0
up route add -net 10.101.0.0 netmask 255.255.0.0 gw 10.100.0.4 dev eth1
up route add -net 10.0.0.0 netmask 255.255.0.0 gw 10.100.0.4 dev eth1
up route add -net 10.100.0.0 netmask 255.255.0.0 gw 10.101.0.1 dev eth2
up route add -net 10.0.0.0 netmask 255.255.0.0 gw 10.101.0.1 dev eth2

Я хотел бы услышать любые предложения о том, как я могу исправить свой файл / etc / network / interfaces для правильной маршрутизации между этими подсетями.

2
задан 7 June 2013 в 21:21

2 ответа

Поскольку общая ссылка здесь является конечным решением моей проблемы маршрутизации. Ниже Вас найдет финал/etc/network/interfaces,/etc/iptables.rules и/etc/sysctl.d/10-routing.conf файлы, с которыми я закончил.

Оказывается, что я должен был удалить команды маршрутизации из своего/etc/network/interfaces файла и затем установить ipforwarding.

=========================================
/etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
# eth0
auto eth0
allow-hotplug eth0
iface eth0 inet static
        address 10.0.2.154
        netmask 255.255.0.0
        gateway 10.0.2.1
        dns-nameservers 10.0.2.100 8.8.8.8
        pre-up iptables-restore < /etc/iptables.rules

# eth1
auto eth1
allow-hotplug eth1
iface eth1 inet static
        address 10.100.0.4
        netmask 255.255.0.0
        dns-nameservers 10.0.2.100 8.8.8.8

# eth2
auto eth2
allow-hotplug eth2
iface eth2 inet static
        address 10.101.0.1
        netmask 255.255.0.0
        dns-nameservers 10.0.2.100 8.8.8.8

=================================================

/etc/iptables.rules

# Generated by iptables-save v1.4.12 on Fri Feb  1 20:43:36 2013
*nat
:PREROUTING ACCEPT [204:18924]
:INPUT ACCEPT [35:6098]
:OUTPUT ACCEPT [3:164]
:POSTROUTING ACCEPT [1:40]
-A POSTROUTING -o eth0 -j SNAT --to-source 10.0.2.154
COMMIT
# Completed on Fri Feb  1 20:43:36 2013

=================================================

/etc/sysctl.d/10-routing.conf

net.ipv4.ip_forward=1
1
ответ дан 7 June 2013 в 21:21

Нет необходимости добавлять маршруты на маршрутизаторе. Они уже напрямую подключены как локальный интерфейс! Вы можете увидеть это, запустив route -n. Например :

route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.25.1    0.0.0.0         UG    0      0        0 wlan0   # def.gw
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 wlan0   # zeroconf
192.168.0.0     192.168.25.254  255.255.255.0   UG    0      0        0 wlan0   # route
192.168.11.0    0.0.0.0         255.255.255.0   U     0      0        0 testvpn # interf.
192.168.25.0    0.0.0.0         255.255.255.0   U     2      0        0 wlan0   # interf.
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0  # interf.

Я отметил фактический маршрут, добавленный здесь вручную с помощью # route. Вы заметите, что эти строки также перечислены с флагом G! Те, у кого нет этого флага, являются просто локальными и доступны напрямую.

Единственное, что вам нужно включить, это пересылка IPv4.

sudo sysctl -w net.ipv4.ip_forward=1

и включите его навсегда, поместив эту строку в файл /etc/sysctl.d/10-routing.conf (вы можете составить имя):

net.ipv4.ip_forward=1

Отсюда вам нужно будет указать хосты в сети об этих маршрутах. Таким образом, на машине, например, в 10.100.0.0/16, вам нужно добавить маршруты, например, так:

# On a client somewhere in 10.100.0.0
auto eth0
iface eth0 inet static
  address 10.100.0.123
  netmask 255.255.0.0
  # route 10.0.0.0/16 via 10.100.0.4
  up route add -net 10.0.0.0 netmask 255.255.0.0 gw 10.100.0.4
  # route 10.101.0.0/16 via 10.101.0.1
  up route add -net 10.101.0.0 netmask 255.255.0.0 gw 10.101.0.1

Гораздо лучший способ объявить эти маршруты - сообщить им с помощью DHCP, или сделать его шлюзом по умолчанию с помощью gateway. В качестве альтернативы используйте «реальные» протоколы маршрутизации, такие как OSPF, RIP и т. Д.


Кстати, синтаксис в вашем файле /etc/network/interfaces неправильный. Записи up должны быть частью каждого отдельного перечисленного интерфейса, с отступом пробелами, такими как запись address.

0
ответ дан 7 June 2013 в 21:21

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

Похожие вопросы: