Проброс портов в Ubuntu iptables

 Пусть интернет раздает сервер с Ubuntu 9.04 на несколько компьютеров по локальной сети.
Нужно чтобы извне был доступен некий сервис на компьютере во внутренней сети, например торренты.
Для этого необходимо сделать проброс портов с сервера на внутреннюю машину.
В Ubuntu это делается с помощью iptables.
Покажу на примере проброса порта для торрентов, поскольку это чаще всего людям и бывает нужно в первую очередь
Мой порт торрентов на внутренней машине – 13107 (это можно посмотреть в настройках торрент-клиента).
Нужно создать 2 правила для iptables.
1. Это правило подменяет IP приемника на внутренний IP:
sudo iptables -t nat -A PREROUTING -p tcp -d ВНЕШНИЙ_IP --dport 13107 -j DNAT --to-destination ВНУТРЕННИЙ_IP:13107
2. Это правило обратно подменяет IP отправителя на внешний:
sudo iptables -t nat -A POSTROUTING -p tcp --dst ВНУТРЕННИЙ_IP --dport 13107 -j SNAT --to-source ВНЕШНИЙ_IP
На всякий случай поясню:
ВНЕШНИЙ_IP – это IP инета, который выдаётся провайдером (посмотреть можно командой ifconfig на сервере)
ВНУТРЕННИЙ_IP – это локальный IP компьютера во внутренней сети.
Посмотреть текущие правила iptables можно с помощью команды:
sudo iptables -L -n -v -t nat

© glinev