Временное решение (не факт, что оптимальное).
Напомню расклад:
"роутер" - 192.168.1.1, 192.168.2.1
"клиент" - 192.168.1.10, 192.168.2.20
Необходимо организовать взаимодействие 1.10 и 2.20 через роутер.
Представим, что у нас в сети есть ещё два IP-адреса 192.168.1.50 и 192.168.2.50
Настраиваем iptables на клиенте:
iptables -t nat -A POSTROUTING -d 192.168.1.50 -s 192.168.2.0/24 -j SNAT --to-source 192.168.2.50
iptables -t nat -A PREROUTING -d 192.168.1.50 -i eth0 -j DNAT --to-destination 192.168.1.10
iptables -t nat -A POSTROUTING -d 192.168.2.50 -s 192.168.1.0/24 -j SNAT --to-source 192.168.1.50
iptables -t nat -A PREROUTING -d 192.168.2.50 -i eth1 -j DNAT --to-destination 192.168.2.20
Добавляем правила роутинга на клиенте:
ip route add 192.168.1.50 via 192.168.2.1
ip route add 192.168.2.50 via 192.168.1.1
Включаем проксирование ARP и форвардинг на клиенте:
sudo sysctl net.ipv4.conf.all.proxy_arp=1
sudo sysctl net.ipv4.ip_forward=1
Не забываем включить форвардинг на роутере, хотя в этом шаге я не очень уверен.
Теперь к 2.20 можно обращаться через "роутер" как к 2.50, а к 1.10 - как к 1.50
Если у кто-то знает более "правильное" решение – прошу поделиться в этой ветке. Кроме AnrDaemon, пожалуйста: Ваш высокомерный флуд не поможет будущим читателям, если им понадобится аналогичная помощь.