роутинг из vpn в сегмент, где находится vpn
Скорее всего, тема обсуждалась не раз, но я не знаю, как такая ситуация правильно называется.
В сегменте 192.168.22.0/24 находится часть vpn 192.168.62.0/24 (vpn0)
хост 192.168.22.90 (находится полностью вне vpn):
route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.22.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.62.0 192.168.22.124 255.255.255.0 UG 0 0 0 eth0 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo 0.0.0.0 192.168.22.221 0.0.0.0 UG 0 0 0 eth0
хост 192.168.22.124 (он же 192.168.62.1 в vpn и по совместительству шлюз)
sysctl net.ipv4.ip_forward net.ipv4.ip_forward = 1 route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.22.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.62.0 0.0.0.0 255.255.255.0 U 0 0 0 vpn0 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo 0.0.0.0 192.168.22.221 0.0.0.0 UG 0 0 0 eth0
хост 192.168.22.96 (он же 192.168.62.2)
route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.22.90 192.168.62.1 255.255.255.255 UGH 0 0 0 vpn0 192.168.22.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.62.0 0.0.0.0 255.255.255.0 U 0 0 0 vpn0 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo 0.0.0.0 192.168.22.124 0.0.0.0 UG 200 0 0 eth0
пингуем с 192.168.22.90 (который вне vpn)
ping -c 1 192.168.62.2 PING 192.168.62.2 (192.168.62.2) 56(84) bytes of data. 64 bytes from 192.168.62.2: icmp_seq=1 ttl=63 time=0.609 ms ...
на 192.168.62.2 видим
tcpdump -i vpn0 -N -n icmp 13:23:55.889320 IP 192.168.22.90 > 192.168.62.2: ICMP echo request, id 21094, seq 1, length 64 13:23:55.889346 IP 192.168.62.2 > 192.168.22.90: ICMP echo reply, id 21094, seq 1, length 64
ICMP echo request замечательно приходит на 192.168.62.2 в силу сделанного на 192.168.22.90
route add -net 192.168.62.0 netmask 255.255.255.0 gw 192.168.22.124 dev eth0
и net.ipv4.ip_forward = 1 на 192.168.22.124
а ICMP echo reply с 192.168.62.2 на 192.168.22.90 отправляется в силу сделанного на 192.168.62.2
route add -host 192.168.22.90 gw 192.168.62.1 dev vpn0
т.е. с одним хостом, который находится полностью вне vpn всё просто.
На хостах 62 сегмента route add -net 192.168.22.0 netmask 255.255.255.0 gw 192.168.62.1 dev vpn0 не поможет, т.к. в этом случае пакет, выходя с хоста в 62 сегменте инкапсулируется в пакет, который пойдёт в 22 сегменте, который должен пойти через vpn и т.д.
Вопрос: как правильно прописать роутинг в сегмент 192.168.22.0/24 с хостов vpn 192.168.62.0/24, которые физически находятся в этом же сегменте, но так, чтобы их физическое нахождение в сегменте 22 использовалось только для функционирования vpn
М.б. я не прав в рассуждениях, поправьте, пожалуйста.
- Для комментирования войдите или зарегистрируйтесь
через маскарадинг проблема
через маскарадинг проблема решилась просто
на 192.168.22.124 (он же 192.168.62.1 в vpn и по совместительству шлюз)
когда источник 22 сеть (вне впн) и пакет выходит в впн, подставим свой адрес
iptables -t nat -A POSTROUTING -s 192.168.22.0/24 -o vpn0 -j MASQUERADE
когда источник 62 сеть (впн) и пакет выходит наружу, тоже подставим свой адрес
iptables -t nat -A POSTROUTING -s 192.168.62.0/24 -o eth0 -j MASQUERADE
теперь любому хосту вне впн ставим шлюз 192.168.22.124 для входа в сеть 192.168.62.0/24 и всё работает.