Построение нешифрованных туннелей в локальной сети на базе L2TP

HELP-ME-24.COM (Freelance Team), Черноусов Антон

В одном из проектов мне понадобилось объединить несколько Bridge-интерфейсов с собственной моделью адресации на разных серверах. Эта задача решилась максимально просто, если бы эти сервера были объединены при помощи оборудования с поддержкой VLAN-ов, но сеть была неуправляемая и пришлось как то выкручиваться.

L2TP тунель в Linux пример реализации 

Первое, что пришло в голову - объединить мосты при помощи OpenVPN без шифрования (когда-то давно похожая модель уже была реализована), но как оказалось, в текущих версиях OpenVPN построить туннель без шифрования трафика больше не получится, а генерировать ключи и шифровать трафик для текущей задачи создавало слишком много накладных расходов. Задача была решена с использованием L2TP туннеля между двумя серверами, а теперь рассмотрим подробнее как именно это было реализовано (представленные скрипты можно добавить в if-up скрипты старта сетевых интерфейсов или создать отдельный скрипт, запускаемый при старте сервера).

IP-адреса серверов, которые объединяли в этом проекте 172.16.3.26 и 172.16.3.59 и они находятся в одной сети без использования NAT и проброса портов. Для начала, построим простой туннель и проверим его работоспособность.

Настраиваем туннель на первом сервере:

# ip l2tp add tunnel tunnel_id 1 peer_tunnel_id 1 udp_sport 5000 udp_dport 5000 encap udp local 172.16.3.59 remote 172.16.3.26

Запускаем туннель:

# ip l2tp add session tunnel_id 1 session_id 1 peer_session_id 1

Назначем ip-адрес на интерфейсе:

# ifconfig l2tpeth0 10.0.0.1/24

Проверяем статус и состояние туннеля:

# ip l2tp show tunnel
# ip l2tp show session

Настраиваем аналогичным образом тунель на втором сервере (адрес источника и приемника стали естественно наоборот):

# ip l2tp add tunnel tunnel_id 1 peer_tunnel_id 1 udp_sport 5000 udp_dport 5000 encap udp local 172.16.3.26 remote 172.16.3.59
# ip l2tp add session tunnel_id 1 session_id 1 peer_session_id 1
# ifconfig l2tpeth0 10.0.0.2/24

Обратите внимание, что sport и dport у нас одинаковые, так как не используется проброса портов и NAT. Теперь мы останавливаем интерфейсы и заново поднимаем их, но уже без назначения ip-адреса:

# ifconfig l2tpeth0 down
# ifconfig l2tpeth0 up 0.0.0.0

И ,в конце концов, объединим этот интерфейс с сетевым мостом на обоих серверах:

# brctl addif az-dmz l2tpeth0

Вот ,собственно, такой костыль мы сегодня рассмотрели. Дешево и сердито и ,самое главное, работает.

Оставьте комментарий

Вы должны быть вошедший в чтобы отправить комментарий