Как за мапить виртуальную подсеть на те же адреса в тунель?
Суть такова, что есть две vpn сетки, в которых пересекаются адреса в самой грубой форме.
Надо чтобы все запросы к локальной не существующей подсети 192.168.17.x (netmask 255.255.255.0) форвардились на такие же адреса tun0 (192.168.5.x). А все остальные запросы уходили в подсеть tun1.
ssh 192.168.17.44 должен по сути быть 192.168.5.44 через tun0, а прямо ssh 192.168.5.44 должен уйти запрос в подсеть tun1
Если можно как-то добавить, что все зарезолвленные домены из tun0 возвращались с адресами 192.168.17.х вообще было бы супер.
Естественно, всё шаманство только на локальной машине, никто на удалённых хостах ничего менять не будет.
Естественно, всё шаманство только на локальной машине
Вся сложность в этом.
Как насчёт виртуальной машины в качестве роутера? Дело в том, что на локальной машине вам нужна цепочка POSTROUTING, и при этом нужен DNAT, но такое сочетание iptables не умеет. Если вынести tun0 на отдельный роутер (хотя бы на виртуальной машине), то на этом отдельном роутере можно сделать DNAT в PREROUTING - и задача решена.
В принципе, я могу поднять докер контейнер в котором подключиться к обеим подсетям, даже поднять две виртуальные карточки, на одной из них подключиться к tun0, на другой к tun1. но что дальше?
на хосте .5.44 роутим на tun1
на хосте .17.44 роутим на виртуальную .33.33
на VM .5.44 роутим на tun0
на VM мапим
iptables -t nat -A PREROUTING -d 192.168.17.0/24 -j NETMAP --to 192.168.5.0/24
iptables -t nat -A POSTROUTING -s 192.168.5.0/24 -j NETMAP --to 192.168.17.0/24
romy4, Запросы на 192.168.17.0/24 будут уходить через интерфейс tun0 ( ip route add 192.168.17.0/24 dev tun0 ). После решения о маршрутизации iptables сделает мэппинг адресов 192.168.17.0/24 -> 192.168.5.0/24.
ыыы... разве в этом случае не источник замапится?? а нужно-то мапить назначение. "И задом наперед совсем наоборот" (ц) в следующей же строчке. IMHO это нерабочий вариант.
где ns1 - выбранное название для network namespae
периодически /etc/resolv.conf отваливается. Особенно в случае hibernate. Тогда делать: mount --rebind /etc/netns/ns1/resolv.conf /etc/resolv.conf
Иногда теряется связка veth0 -> veth1, тогда надо убить этот линк ip link delete и создать новый