Я пытаюсь настроить 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.
Я, должно быть, серьезно ошибаюсь в чем-то здесь, но в чем проблема?