вторник, 8 июня 2010 г.

Ubuntu 8.04.4 как обычный маршрутизатор (не шлюз).

Недавно возникла необходимость в виртуальном маршрутизаторе с 3мя интерфейсами, глядящими в три разные подсети. Первоначально решение вопроса казалось легким и непринужденным - прописать статические маршруты, но в процессе работы стало очевидно, что интерфесы пытаются отдать трафик через тот же интерфейс, с которого они его получили. То есть маршрутизатор не маршрутизировал.
Были сделаны такие сетевые настройки:
/etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address 192.168.221.17
        netmask 255.255.255.0
        network 192.168.221.0
        broadcast 192.168.221.255
        gateway 192.168.221.253
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 192.168.221.105
        #dns-search citrix.demo
auto eth1
iface eth1 inet static
        address 192.168.223.1
        netmask 255.255.255.128
        network 192.168.221.0
        broadcast 192.168.221.127
        up route add -net 192.168.222.0/24 gw 192.168.223.10 dev eth1
auto eth2
iface eth2 inet static
        address 192.168.223.129
        netmask 255.255.255.128
        network 192.168.221.128
        broadcast 192.168.221.255
дополнительно же было необходимо раскоментировать строчку в
/etc/sysctl.conf
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
После этого виртуальный роутер заработал.