Хостинг на Raspberry Pi. NAT Loopback в D-Link DIR-620

Просмотров: 27382Комментарии: 0
ВкусняшкиFAQ SolutionLinux

Nat Loopback

Привет дорогой читатель!

Сегодня я Хочу рассказать о том как с помощью Raspberry Pi можно организовать технологию NAT Loopback в домашних маршрутизаторах на примере Wi-Fi роутера D-Link DIR-620.

Вообще чтобы было понятно что это такое [NAT Loopback] попытаюсь простенько рассказать.

Смысл технологии NAT loopback (или NAT hairpinning) прост: если пакет приходит из внутренней сети на внешний IP-адрес маршрутизатора, он считается пришедшим извне — а значит, работают правила брандмауэра, относящиеся ко внешним соединениям. И если пакет успешно пройдёт сквозь брандмауэр, сработает NAT, взяв на себя посредничество между двумя внутрисетевыми машинами. Это даёт две вещи.

Прямо изнутри локальной сети можно проверить, как настроены сетевые службы.

Доступ к серверу, находящемуся в локальной сети, по доменному имени. Без NAT loopback пришлось бы править файл hosts на каждой машине для каждого задействованного домена и поддомена.

Недостатком NAT loopback можно считать повышенную нагрузку на хаб и маршрутизатор (по сравнению с прямым доступом к серверу).

Как уже было сказано это возможность постучаться изнутри на внешний адрес. В некоторых домашних роутерах это возможность есть. а в моем нет. Да мало того еще странная вкладка как DMZ так и Виртуальные серверы. Почему в этот функционал не дать возможность Nat Looback? Ну это всего вопрос к производителям, который мною уже задавался, а вот ответ так я и получить не смог.

Зато было выяснено что к модему можно подключиться через telnet и выполнить пару команд, которые этот механизм NAT Loopback реализуют, минус в этом есть, что все эти действия помогают только до перезагрузки роутера.

Считаю это не страшным так как у меня в принципе полноценный сервер, которому ничего не стоит выполнять эти команды по планировщику и при включении. Основной загвоздкой было то, что у меня динамический внешний IP и его как-то нужно узнавать.

первым вариантом было как-то парсить результаты ответа от какого-нибудь 2ipru, но результаты запроса из google показали существование другого сервиса - icanhazip.com. Именно он мне и приглянулся, так как отдает чистый текст, который не нужно парсить, а просто брать и использовать.

На форуме D-Link мне подсказали что выполнять по telnetу

iptables -t nat -A POSTROUTING -d 192.168.0.80 -s 192.168.0.0/24 -p tcp --dport 21 -j SNAT --to-source 192.168.8.103

iptables -t nat -A PREROUTING -s 192.168.0.0/24 -d 192.168.8.103 -p tcp --dport 21 -j DNAT --to-destination 192.168.0.80

192.168.0.80 -- адрес моего ПК, 192.168.8.103 -- адрес на WAN роутера

После недолгих раздумий был написан небольшой bash скриптик

#!/bin/bash

WAN_IP="`wget -qO - http://icanhazip.com`"

(

sleep 1

echo "Логин Админа"

sleep 1

echo "Пароль Админа"

sleep 1

echo "iptables -t nat -A POSTROUTING -d 192.168.0.89 -s 192.168.0.0/24 -p tcp --dport 80 -j SNAT --to-source $WAN_IP"

sleep 2

echo "iptables -t nat -A PREROUTING -s 192.168.0.0/24 -d $WAN_IP -p tcp --dport 80 -j DNAT --to-destination 192.168.0.89"

sleep 2

echo "quit"

) | telnet 192.168.0.1

Команда sleep обязательна, так как это небольшая задержка на выполнения команды, а 192.168.0.89 - это IP адрес сервера к которому нужен доступ.

Собственно все что хотел сегодня Вам рассказать.

С уважением Ваш ИТ Инженер.



Посмотри и сравни - Windows и Linux - практический взгляд. Угадай кто кого?

Оставьте комментарий!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Вы можете войти под своим логином или зарегистрироваться на сайте.

(обязательно)