Быстрый проброс порта в Ubuntu Server средствами IPTables

Представим ситуацию, у нас есть шлюз на ubuntu, и некая машина с каким нибкдь сервисом. И вот стоит задача нужно чтобы извне был доступен некий сервис на компьютере во внутренней сети. 

Для этого необходимо сделать проброс портов с сервера на внутреннюю машину.
В Ubuntu это делается с помощью iptables.

Предположим, что надо пробросить порт 1500. Нужно создать 2 правила для iptables. 
1. Это правило подменяет IP приемника на внутренний IP:

sudo iptables -t nat -A PREROUTING -p tcp -d ВНЕШНИЙ_IP --dport 1500 -j DNAT --to-destination ВНУТРЕННИЙ_IP:1500

2. Это правило обратно подменяет IP отправителя на внешний:

sudo iptables -t nat -A POSTROUTING -p tcp --dst ВНУТРЕННИЙ_IP --dport 1500 -j SNAT --to-source ВНЕШНИЙ_IP

На всякий случай поясню:
ВНЕШНИЙ_IP – это IP инета, который выдаётся провайдером (посмотреть можно командой ifconfig на сервере)
ВНУТРЕННИЙ_IP – это локальный IP компьютера во внутренней сети.
Посмотреть текущие правила iptables можно с помощью команды:

sudo iptables -L -n -v -t nat

Для того, чтобы проброс не пропал после добавил правила в rc.local.

Открываем для редактирования:

nano /etc/rc.local

И в конце  перед строчкой exet 0 добавлением строчки:

iptables -t nat -A PREROUTING -p tcp -d ВНЕШНИЙ_IP --dport 1500 -j DNAT --to-destination ВНУТРЕННИЙ_IP:1500
iptables -t nat -A POSTROUTING -p tcp --dst ВНУТРЕННИЙ_IP --dport 1500 -j SNAT --to-source ВНЕШНИЙ_IP

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.