Маршрутизация шлюза по умолчанию для 2-го vlan через туннель (linux/tinc)
Исправлено: Оказалось, что это была комбинация того, что сказал BatchyX (пропуская маршрут 172.16.101.0/24 на удаленном конце), и tinc на удаленной стороне не смог запустить скрипт -up (скрипт не был исполняемым).
Так что теперь все работает супер, спасибо за помощь всем:)
================================================== ===========================
Мою проблему удивительно сложно объяснить, поэтому я разобью ее на мелкие кусочки, заранее извиняюсь за длинный текст:)
У меня есть сервер у хостинг-провайдера, который имеет общедоступный ip, этот сервер работает под управлением tinc (программное обеспечение vpn).
Дома у меня есть два vlan, VLAN1 (моя обычная подсеть для ПК и т. Д., Сидящая за NAT) и VLAN20 для моей лаборатории vmware. среда.
Я хотел бы настроить так, чтобы моя сеть VLAN20 могла использовать сервер хостинг-провайдера в качестве своего шлюза (его внешнего ip) вместо внешнего шлюза, который есть у меня дома.
Для этого у меня дома есть сервер, на котором есть два сетевых интерфейса: один для VLAN1 и один для VLAN20.
Допустим, у меня есть следующие ips:
Server at hosting provider:
Public IP: 123.123.123.123 (eth0)
Private IP: 10.1.0.1/24 (tun0)
Network at home:
VLAN1 - 192.168.1.0/24 (.1 is the gateway)
VLAN20 - 172.16.101.0/24
Network on server at home:
NIC1 (VLAN1) - 192.168.1.50/24 (eth0)
NIC2 (VLAN20) - 172.16.101.1/24 (eth1)
Tunnel - 10.1.0.2/24 (tun0)
Я настроил tinc, чтобы мой домашний сервер работал через туннель, я могу пропинговать 10.1.0.1 с домашнего сервера и 10.1.0.2 с сервера у хостинг-провайдера.
В дополнение к этому я настроил так, чтобы домашний сервер использовал туннель для шлюза по умолчанию, все это работает с реального домашнего сервера, моя проблема в том, что я не могу получить клиентов в сети VLAN20 для доступа в Интернет.
Итак, проблема у меня заключается в том, что я не могу понять, как настроить маршрутизацию так, чтобы сеть 172.16.101.0/24 использовала шлюз по умолчанию в туннеле.
Маршруты на сервере дома таковы:
root@home:/etc/tinc/vpn/hosts# ip route
0.0.0.0/1 dev tun0 scope link
default via 192.168.1.1 dev eth0
10.1.0.0/24 dev tun0 proto kernel scope link src 10.1.0.2
123.123.132.123 via 192.168.1.1 dev eth0
128.0.0.0/1 dev tun0 scope link
172.16.101.0/24 dev eth1 proto kernel scope link src 172.16.101.1
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.50
/1 добавляются, когда туннель работает:
ip route add 0.0.0.0/1 dev $INTERFACE
ip route add 128.0.0.0/1 dev $INTERFACE
Выполнение трассировки с сервера в домашних условиях до 8.8.8.8:
root@home:/etc/tinc/vpn/hosts# traceroute -s 10.1.0.2 8.8.8.8 -n
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
1 10.1.0.1 33.681 ms 33.698 ms 33.658 ms
2 Router_At_Hosting_Provider 34.930 ms 34.907 ms 34.875 ms
Таким образом, "туннельная" подсеть (10.1.0.0) отлично работает со шлюзом по умолчанию через туннель.
Это также отлично работает:
root@home:/etc/tinc/vpn/hosts# traceroute -s 172.16.101.1 10.1.0.2 -n
traceroute to 10.1.0.2 (10.1.0.2), 30 hops max, 60 byte packets
1 10.1.0.2 0.032 ms 0.003 ms 0.005 ms
Но моя проблема заключается в следующем:
root@home:/etc/tinc/vpn/hosts# traceroute -s 172.16.101.1 8.8.8.8 -n
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
1 * * *
2 * * *
3 * * *
Если у кого-нибудь есть указатели на то, куда я должен смотреть, это было бы очень признательно.
(Полный список изменений, внесенных на оба сервера после простой установки Debian, находится здесь http://pastebin.com/r3Vsvycq)
Edit Я плохо сосу на Visio, но вот моя попытка показать, что я пытаюсь настроить: (пока не могу вставить в строку, потому что мой представитель недостаточно высок).
1 ответ
В этой конфигурации есть несколько WTF:
ip route add 0.0.0.0/1 dev $INTERFACE
ip route add 128.0.0.0/1 dev $INTERFACE
Помоги себе и замени это ip route change default dev $INTERFACE
, Это удалит шлюз по умолчанию на eth1 и заменит его вашим собственным. Вы можете также установить предпочтительный адрес источника на этом маршруте, добавив src 10.1.0.2
в конце.
Если вместо этого вы хотите сохранить маршрут по умолчанию, но добавить свой собственный поверх него, просто измените метрику исходного маршрута по умолчанию на 1 или более. Когда вы добавите маршрут по умолчанию, он переопределит (но не уничтожит) исходный маршрут по умолчанию.
Кроме того, маршрут к 10.1.0.0/24, когда VPN работает, немного избыточен, так как он уже покрыт маршрутом по умолчанию.
То, что вы хотите в качестве таблицы маршрутизации, будет выглядеть примерно так:
default dev tun0 scope link src 10.1.0.2
default via 192.168.1.1 dev eth0 metric 1
123.123.132.123 via 192.168.1.1 dev eth0
172.16.101.0/24 dev eth1 proto kernel scope link src 172.16.101.1
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.50
Теперь эта таблица маршрутизации верна. Теперь единственная проблема заключается в том, что у вашего сервера нет маршрута к 172.16.101.0/24, поэтому он попытается направить его через открытый интерфейс. Обратный путь по существу не работает, поэтому traceroute работает, а ping - нет.
Просто добавьте маршрут на удаленном сайте в 172.16.101.0/24 через tun0, и это будет хорошо.