Проброс портов в локальную сеть с помощью iptables
- Recluse
- 23.06.2016
- 22 743
- 4
- 04.02.2022
- 19
- 17
- 2
- Содержание статьи
Компьютер с операционной системой Linux, который выступает в роли маршрутизатора для локальной сети - явление не редкое, за счет достаточно скромных системных требований (по факту нужен компьютер любой мощности и две сетевые карты) и простоты настройки. Тем не менее, есть некоторые ньюансы, которые требуют чуть более продвинутых знаний, и одно из них - это проброс портов в локальную сеть.
Описание задачи
Допустим, есть у вас компьютер с операционной системой Linux на борту, который еще выступает в качестве шлюза (роутера) в вашей локальной сети. Есть у вас другой компьютер, на котором, допустим, крутится сайт, к которому нужно обеспечить доступ из внешнего мира. Задача я думаю ясна - нужно пробросить 80 порт с шлюза до компьютера внутри локальной сети.
Пусть шлюз будет иметь ip адрес 192.168.1.1, а компьютер с сайтом - 192.168.1.10. Внешний адрес шлюза (внешний ip) пусть будет 123.123.123.123. Пробрасывать, повторюсь, будем 80 порт. Во внешний мир смотрит интерфейс eth0, в локальную сеть - eth1.
Решение
После выполнения этой команды, все что приходит на адрес 123.123.123.123 по 80 порту будет передаваться на адрес 192.168.1.10:
iptables -t nat -A PREROUTING --dst 123.123.123.123 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10
Однако, чтобы все работало как надо, нужно еще добавить разрешающее передачу пакетов правило, так как иначе фаирволл просто не будет пропускать соединения:
iptables -I FORWARD 1 -i eth0 -o eth1 -d 192.168.1.10 -p tcp -m tcp --dport 80 -j ACCEPT
Теперь любой из внешней сети, набрав в адресной строке ip адрес 123.123.123.123, или связанное с ним доменное имя, попадет на 80 порт компьютера 192.168.1.10, который находится внутри локальной сети.
Чтобы клиенты из локальной сети могли зайти по этому же внешнему адресу, и их перекинуло на 80 порт компьютера внутри локальной сети, необходимо добавить так же еще одно правило:
iptables -t nat -A POSTROUTING --dst 192.168.1.10 -p tcp --dport 80 -j SNAT --to-source 123.123.123.123
Так же можно сделать правило на тот случай, если обратиться к этому адресу нужно будет с самого шлюза:
iptables -t nat -A OUTPUT --dst 123.123.123.123 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10
Добавить комментарий