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

  • Автор:
  • Опубликовано:
  • Изменено:
  • Просмотры: 441
  • Комментарии: 0
  • Рейтинг: 100,00%
  • Голосов: 1

Допустим, есть у вас компьютер с операционной системой Linux на борту, который еще выступает в качестве шлюза (роутера) в вашей локальной сети. Есть у вас другой компьютер, на котором, допустим, крутится сайт, к которому нужно обеспечить доступ из внешнего мира. Задача я думаю ясна - нужно пробросить 80 порт с шлюза до компьютера внутри локальной сети.

Пусть шлюз будет иметь ip адрес 192.168.1.1, а компьютер с сайтом - 192.168.1.10. Внешний адрес шлюза пусть будет 123.123.123.123. Пробрасывать, повторюсь, будем 80 порт. Во внешний мир смотрит интерфейс eth0, в локальную сеть - eth1.

iptables -t nat -A PREROUTING --dst 123.123.123.123 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10

После выполнения этой команды, все что приходит на адрес 123.123.123.123 по 80 порту будет передаваться на адрес 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

Оценить статью

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд
Голосов: 1, Оценка: 5,00 из 5,00

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

Ваш e-mail не будет опубликован.

Читайте ранее:
Как изменить часовой пояс (временную зону) в Linux
Ускорение работы GRUB при загрузке системы
Как узнать температуру жесткого диска в Linux
Google Chrome: Использование блокировщиков рекламы в режиме инкогнито
Исправляем ошибку OCSP_basic_verify() failed (SSL: error:27069065:OCSP)
Закрыть