Я пытаюсь настроить маршрутизацию между 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 для правильной маршрутизации между этими подсетями.
Поскольку общая ссылка здесь является конечным решением моей проблемы маршрутизации. Ниже Вас найдет финал/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
Нет необходимости добавлять маршруты на маршрутизаторе. Они уже напрямую подключены как локальный интерфейс! Вы можете увидеть это, запустив 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
.