роутинг из 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 и всё работает.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".