Iptables: переадресация запроса на разные интерфейсы и порты

У меня есть машина с двумя интерфейсами:

eth0      inet addr:1.1.1.1
eth1      inet addr:2.2.2.2

eth0 — сервер, eth1 — сеть на виртуальной машине.

У меня есть ssh на сервере, поэтому 1.1.1.1:22 занят.

Мне нужно правило для перенаправления входящих подключений с eth0 порт 6000 на eth1, ip 2.2.2.100 на 22 порт (ip виртуальной машины).

В этом режиме, если бы я сделал это на внешней машине,

ssh -p 6000 [email protected]

Я бы зашел на виртуальную машину.

Я попробовал это правило, но оно не сработало:

sudo iptables -P FORWARD ACCEPT
sudo iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 6000 -j DNAT --to 2.2.2.100:22

person Andrea    schedule 08.01.2013    source источник


Ответы (1)


Что ж, для этого случая есть около 1 миллиона сценариев/руководств/вещей, но если кто-то попадет из Google сюда, то что-то вроде этого:

iptables -I FORWARD -d 2.2.2.2 -m comment --comment "Accept to forward ssh traffic" -m tcp -p tcp --dport 22 -j ACCEPT    
iptables -I FORWARD -m comment --comment "Accept to forward ssh return traffic" -s 2.2.2.2 -m tcp -p tcp --sport 22 -j ACCEPT    
iptables -t nat -I PREROUTING -m tcp -p tcp --dport 60000 -m comment --comment "redirect pkts to virtual machine" -j DNAT --to-destination 2.2.2.2:22   
iptables -t nat -I POSTROUTING -m comment --comment "NAT the src ip" -d 2.2.2.2 -o eth1 -j MASQUERADE
person FarDarkMist    schedule 01.02.2013