Wednesday, January 29, 2014

Пробрасываем порты в локальную сетку на Linux

Задача: нужно сделать доступными во "внешнем" интернете заданные порты компьютера во "внутренней" локальной сети.

Допустим: 
- Внешний IP роутера: 1.2.3.4
- Внутренний IP компьютера: 192.168.1.111
- Порты для проброса: 80, 22

Решение:

Шаг 1: На роутере пробрасываем порты снаружи на заданный компьютер посредством Port Forwarding:
22 => порт 11122 на 192.168.1.111
80 => порт 11180 на 192.168.1.111

Шаг 2:
На компьютере делаем маппинг портов:
11122 => 22
11180 => 80
Инструкция - тут: http://ezroad.blogspot.ru/2010/01/mapping-nat-ports-in-linux.html
sudo iptables -t nat -A PREROUTING -p tcp --dport 11122 -j REDIRECT --to-port 22
sudo iptables -I INPUT -p tcp --dport 11122 -j ACCEPT
sudo iptables -t nat -A OUTPUT -o lo -p tcp --dport 11122 -j REDIRECT --to-port 22

sudo iptables -t nat -A PREROUTING -p tcp --dport 11180 -j REDIRECT --to-port 80
sudo iptables -I INPUT -p tcp --dport 11180 -j ACCEPT
sudo iptables -t nat -A OUTPUT -o lo -p tcp --dport 11180 -j REDIRECT --to-port 80
После чего надо настроить сохранение конфигурации iptables, чтобы изменения остались в силе после перезагрузки. Команды зависят от операционки и прав доступа, причем надо быть аккуратным, иначе неправильный конфиг (/etc/network/interfaces на Ubuntu) может запросто отвалить машину от локальной сети. 

Теоретически, шаг 2 может вообще не потребоваться, если Роутер поддерживает маппинг портов одновременно с форвардингом.

В итоге:
Имеем доступ на "внутренний" компьютер "снаружи":
ssh 1.2.3.4 -p 11122
http://1.2.3.4:11180

No comments:

Post a Comment