1

Я настроил домашний сервер Raspberry Pi, подключенный к моему маршрутизатору. У меня динамический IP. Я могу получить доступ к серверу в моей сети, используя внутренний IP-адрес (192.168.0.8). Я также могу получить доступ к серверу вне моей сети, используя общедоступный IP-адрес сети и созданный мною домен noip.com.

Проблема в том, что я не могу зайти на сервер внутри сети, используя публичный IP-адрес или домен noip.com. Однако я могу, как ни странно, перейти (находясь в моей сети) к домену noip.com в веб-браузере, и он дает мне страницу Apache по умолчанию "Это работает" (это не из-за кэширования, я проверил на нескольких устройства).

После небольшого поиска в Google я обнаружил, что мне нужно настроить петлю NAT на моем маршрутизаторе. Мой роутер (предоставленный провайдером), похоже, не поддерживает петлю NAT через их веб-интерфейс, т.е. через 192.168.0.1.

Доступ по Telnet к маршрутизатору, однако, включен. Он запускает busybox, и команда `iptables 'доступна.

Я нашел команду, написанную клиентом, на форуме моего интернет-провайдера:http://www.skyuser.co.uk/forum/sky-router/47273-nat-loopback-dlink-2640s.html.

Я использую замазку для Telnet, но вы можете использовать любой.

мой сервер 192.168.0.x (мой веб-сервер) wan ip равен 2.xxx (замените своим) порт сервера 443 (для меня https, но вы можете захотеть, чтобы он отличался от iptables, вам нужно 2 команды:

iptables -t nat -A POSTROUTING -d 192.168.0.150 -s 192.168.0.0/24 -j SNAT --to-source 192.168.0.1
iptables -t nat -A PREROUTING -d 2.x.x.x -m tcp -p tcp --dport 443 -j DNAT --to-destination 192.168.0.x

Вы можете пропустить --dport 443, тогда он просто отправит все порты на ваш сервер.

Теперь проблема в том, что каждый раз, когда изменяется ваш IP-адрес, вы должны повторять вторую команду (кто-нибудь знает, как часто это происходит?) Также вы потеряете это при перезагрузке маршрутизатора.

Этот раздел второй команды - «iptables -t nat -A PREROUTING -d 2.xxx» - содержит публичный IP-адрес: как мне сделать так, чтобы он просто означал «текущий публичный IP-адрес»?

Если это возможно, это замедлит все запросы к маршрутизатору из-за вовлеченного разрешения?

1 ответ1

1

iptables преобразуется в DNS-имена, поэтому в ваших правилах вы можете использовать DNS-имя noip.com вместо 2.xxx. У меня это работает с моей собственной конфигурацией iptables :

iptables -t nat -A PREROUTING -d whatever.noip.com -m tcp -p tcp --dport 443 -j DNAT --to-destination 192.168.0.x

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .