Представим ситуацию, у нас есть шлюз на ubuntu, и некая машина с каким нибкдь сервисом. И вот стоит задача нужно чтобы извне был доступен некий сервис на компьютере во внутренней сети.
Для этого необходимо сделать проброс портов с сервера на внутреннюю машину.
В Ubuntu это делается с помощью iptables.
Предположим, что надо пробросить порт 1500. Нужно создать 2 правила для iptables.
Это правило подменяет IP приемника на внутренний IP:
sudo iptables -t nat -A PREROUTING -p tcp -d ВНЕШНИЙ_IP --dport 1500 -j DNAT --to-destination ВНУТРЕННИЙ_IP:1500
Это правило обратно подменяет 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
Добавить комментарий