iptables nat
Здравствуйте, товарищи!
Надеюсь лишь на наше рабочее движение!
В общем, ситуация такая
Компьютер А
(eth0)ip=10.31.86.2/24, default gw=10.31.86.1
Компьютер B
(eth0)ip=192.168.0.106/24, default gw=192.168.0.101
(eth1)ip=10.30.139.2/24, gw=none
Компьютер С(маршрутизатор + nat, ОС Debian 8.1)
(eth0)ip=192.168.0.102/24, gw=none
(eth2)ip=10.30.139.102/24, default gw=10.30.139.1
Содержимое rc.local
iptables -A INPUT -j ACCEPT
iptables -A OUTPUT -j ACCEPT
iptables -A FORWARD -j ACCEPT
iptables -t nat -A POSTROUTING -o eth2 -s 192.168.0.0/24 -j SNAT --to-source 10.30.139.102
rc.local ошибок не содержит, судя по логу.
Сеть 10.31.86.0/24 и 10.30.139.0/24 видят друг друга.
Теперь сама проблема: мне нужно по RDP с А подключиться к B. A видит напрямую B, но B не может передать ответ по eth1(10.30.139.0/24), B может ответить через маршрутизатор C. C, получая пакеты от B, делает nat и переправляет пакеты дальше. Все работает, и да, я понимаю, что так не должно быть, но сейчас ничего не могу поделать и не могу спрятать B за маршрутизатор целиком и делать портфорвардинг и тд, вот так вот тут все работает, но суть не в этом. Проблема моя заключается в том, что работает это все лишь в том случае, если iptables -t nat -A POSTROUTING -o eth2 -s 192.168.0.0/24 -j SNAT --to-source 10.30.139.102 содержит именно -s 192.168.0.0/24, хотя по идее все должно работать и просто с -o eth2. Вот это я и не могу понять, почему обязательно нужно указывать -s в данной ситуации? Если я убираю -s 192.168.0.0/24, то все машины из сети 192.168.0.0/24 отлично выходят в инет, но вот машины из других сетей, как машина A(10.31.86.2/32) никак не может подключиться к B(10.30.139.2/32). Куда копать, товарищи?