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

Рассмотрим настройку маршрутизации между локальными сетями и во внешнюю сеть -- интернет.

   


0. Подготовка

Используем две виртуальные машины с установленным tinycore linux -- server, client.

Server и client подключены к одной виртуальной сети -- VLAN 31.

Server

Для трансляции адресов (NAT) на server установим iptables.

   


1. Настройка шлюза

Для маршрутизации во внешнюю или соседнюю сеть шлюз должен иметь сетевой интерфейс связанный с этими сетями.

!!! Для этого можно использовать отдельный интерфейс или уже имеющийся интерфейс, имеющий несколько сетевых настроек.

Server

Server уже имеет интерфейс eth0 подключенный к локальной сети имеющей выход в интернет.

Для пересылки сообщений в соседнюю сеть на шлюзе необходимо включить форвардинг (forwarding)

Код:
> echo 1 > sudo tee /proc/sys/net/ipv4/ip_forward

   


2. Настройка маршрутизации во внешнюю сеть

Для упрощения настроек маршрутизации достаточно на каждом узле добавить только один маршрут -- до шлюза в внешнюю сеть. Таким образом пути в другие сети необходимо будет настраивать только на одном узле -- шлюзе.

Настроим сетевой интерфейс для связи маршрутизации всех неизвестных путей через шлюз во внешнюю сеть.

!!! Если в сети работает DHCP-сервер, то интерфейс уже настроен.

server

Настроим сетевой интерфейс во внешней сети на server-е и добавим маршрут по-умолчанию до внешнего шлюза в сеть интернет

Код:
# ip address add 192.168.1.31/24 dev eth0
# ip route add default via 192.168.1.1 via eth0

Проверим связь с глобальной сетью "Интернет":
http://s6.uploads.ru/t/Dxh6F.jpg

client

Добавим маршрут по умолчанию на client до server

Код:
# ip route add default via 192.168.31.1 dev eth0.31

!!! Если на физическом интерфейсе eth0 уже есть маршрут по умолчанию, его надо удалить:

Код:
# ip route del default

Теперь все сообщения в другие сети будут передаваться через server:
http://s8.uploads.ru/t/BsmcD.jpg

Видно, что все сообщения внешним узлам направляются через server. Но, так как на не настроена обратная маршрутизация, ответы на сообщения не возвращаются.

   


3. Настройка маршрутизации между сетями

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

!!! Если настроить пути только на одном шлюзе, то сообщения будут перенаправляться через шлюз в соответствующие сети, но ответ не сможет вернуться, так как пути обратно нет. Поэтому ответные сообщения client-у в предыдущем примере не проходят обратно через server.

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

Добавить путь в локальную сеть на внешнем шлюзе часто невозможно, поэтому необходимо использовать трансляцию адресов (NAT), что бы подменять адреса локальных узлов на адрес шлюза, через который будут отправляться и возвращаться сообщения.

server

добавим новое правило в iptables, в котором будем подменять адрес источника пакета на адрес server-а (DNAT) для всех исходящих пакетов.

Код:
> iptables -t nat -A POSROUTING -j MASQUERADE

client

Теперь клиент имее доступ во внешную сеть и глобальную сеть интернет.
http://sf.uploads.ru/t/zP3WM.jpg

Видно, что сообщения доходят до внешнего сервера доменной зоны chuvsu.ru, а дальше протокол ICMP блокируется.