Я пытаюсь настроить tunneldigger для туннелирования трафика с маршрутизатора OpenWRT на один из моих выделенных серверов. Кажется, что сам туннель установлен правильно, но пакеты не маршрутизируются, как я ожидаю.

Для лучшего объяснения, вот как настроена моя сеть:

+----------+      ens3 +-----------------+ l2tp100-1      l2tp0 +-----------------+
| internet |<----------| server / broker |<--- l2tp tunnel ---> | client / router |
+----------+           +-----------------+                      +-----------------+
                  public IP            10.254.0.2         10.254.0.4

Интерфейс l2tp0 создается на клиенте (маршрутизатор OpenWRT), а соответствующий интерфейс l2tpxxx-x создается на брокере (выделенном сервере). Как только я подключу оба интерфейса, я могу отправить пинг в один интерфейс и посмотреть, как ARP выходят из другого:

# on the client
ping -I l2tp0 8.8.8.8

# on the broker/server
tcpdump -i l2tp100-1
00:36:29.925663 ARP, Request who-has google-public-dns-a.google.com tell <client-ip>, length 28

Эти ARP, кажется, никуда не денутся, хотя. Мне, должно быть, не хватает некоторых настроек маршрутизации, чтобы вывести эти пакеты в Интернет.

Я настроил пересылку в iptables с помощью:

# ens3 is the interface on the server which has access to the internet
iptables -t nat -A POSTROUTING --out-interface ens3 -j MASQUERADE

# l2tp100-1 is the interface on the server which receives incoming packets from the tunnel
iptables -A FORWARD --in-interface l2tp100-1 -j ACCEPT

Но это ничего не меняет. Тогда я подумал, что, возможно, маршрут отсутствует, поэтому я попытался добавить маршрут из входящего интерфейса l2tp100-1 в интерфейс, который имеет доступ к Интернету (ens3):

ip route add <subnet>/22 dev l2tp100-1 src <public internet IP>

Это приводит к следующей ошибке:

RTNETLINK answers: File exists

Тем не менее, при отображении полной таблицы маршрутизации путем выполнения "ip route list table all" вообще нет записи для l2tp100-1.

Я, должно быть, серьезно ошибаюсь в чем-то здесь, но в чем проблема?

0