Пример команды iptables для проброса порта из интернета в виртуалку

redirect port linux iptables-restore rdp redirect iptables toucan

Пример команды iptables для проброса порта из интернета во внутреннюю виртуальную машину по адресу LAN:

echo 1 > /proc/sys/net/ipv4/ip_forward

Чтобы пересылка пакетов работала после перезагрузки надо

в файле /etc/sysctl.conf снять комментарий со строки:

#net.ipv4.ip_forward=1

Проверить: sysctl net.ipv4.ip_forward

Работающий пример: 144.76.100.244:110 \<---> 192.168.17.15:110  shelter\-\>regul

iptables -t nat -A PREROUTING --dst 144.76.100.244 -p tcp --dport 110 -j DNAT --to-destination 192.168.17.15

iptables -I FORWARD 1 -i eth0 -o vboxnet0 -d 192.168.17.15 -p tcp -m tcp --dport 110 -j ACCEPT

iptables -t nat -A POSTROUTING --dst 192.168.17.15 -p tcp --dport 110 -j SNAT --to-source 192.168.17.1

где: 

192.168.17.1 - ip-адрес внутреннего интерфейса хост-машины корневой

192.168.17.15 - ip-адрес внутреннего интерфейса гостевой машины regul виртуалка

144.76.100.244 - внешний интернет сетевой интерфейс хост машины shelter

Сохранение правил файервола

# iptables-save >/etc/iptables.rules

Для восстановления при загрузке в /etc/network/interfaces добавьте строчку

pre-up iptables-restore \< /etc/iptables.rules

Для просмотра:

iptables -t nat -L --line-numbers

Для удаления 1-го правила из цепочки INPUT:

iptables -D INPUT 1

или еще пример:

iptables -t nat -D PREROUTING 1

---------------------------------------------------------------------

Проброс порта в Ubuntu Server с использованием ufw - NEW! 26.03.14

Допустим нам надо «пробросить» 80 tcp порт на локальную машину 192.168.1.1.

Убедимся что в файле /etc/ufw/sysctl.conf раскомментирована строка net/ipv4/ip_forward=1.

sudo nano /etc/ufw/before.rules

В самом верху, до секции *filter, добавляем:

*nat

:PREROUTING ACCEPT [0:0]

-A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to 192.168.1.1:80

COMMIT

и перезапускаем ufw

# ufw disable

# ufw enable

Убедиться, что правила загрузились, можно выполнив

# iptables -L -nv -t nat

Вы должны увидеть

Chain PREROUTING policy ACCEPT 0 packets, 0 bytes

pkts bytes target prot opt in out source destination

0 0 DNAT tcp -- ppp0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 to:192.168.1.1:80 

Проверил на связке bolter->marduk - работает, но при отключенном ufw!

Чтобы заработало при включенном ufw надо:

включить в файерволе форвардинг пакетов. Это необходимо, чтобы наш шлюз мог пересылать пакеты из внутренней сети в интернет и обратно. 

Для этого отредактируем файл /etc/default/ufw

DEFAULT_FORWARD_POLICY="ACCEPT"

Вот теперь все заработало!

Пример проброса RDP-порта из хост-машины zilla 172.27.117.94 в ВМ KVM toucan 192.168.122.29

sudo iptables -t nat -A PREROUTING --dst 172.27.117.94 -p tcp --dport 3389 -j DNAT --to-destination 192.168.122.29
sudo iptables -I FORWARD 1 -i enp7s0 -o virbr0 -d 192.168.122.29 -p tcp -m tcp --dport 3389 -j ACCEPT

aizaro@mail.ru Last update 06.01.18