Я использую OpenWRT (на базе Linux) на моем маршрутизаторе. Маршрутизатор имеет локальный IP и общедоступный IP. У меня есть имя dyndns, назначенное общедоступному IP. Маршрутизатор перенаправляет несколько портов (например, ssh и https) на мой локальный сервер.
Цель: Используйте один и тот же URL-адрес для доступа к серверу, независимо от того, находится ли клиент в моей локальной сети или за ее пределами.
Снаружи: Когда я отправляю запрос на публичный IP. Запрос пересылается на мой внутренний сервер. Все хорошо
Изнутри: Когда я отправляю запрос на общедоступный IP-адрес, он попадает на внутренний интерфейс маршрутизатора. Таким образом, переадресация портов не работает.
При сканировании локального IP-адреса маршрутизатора с помощью nmap изнутри я получаю те же результаты, что и для публичного IP-адреса изнутри. Таким образом, кажется, что когда я получаю доступ к общедоступному IP-адресу изнутри, трафик все равно попадает на локальный IP-адрес.
Что я могу сделать, чтобы получить доступ к серверу с одним и тем же URL-адресом внутри и за пределами моей локальной сети?
Редактировать:
Вам нужно, чтобы разрешение имен работало по-разному изнутри и вне сети. Ваша запись dyndns будет перенаправлена на внешний IP-адрес. Маршруты межсетевого экрана различаются внутри и вне маршрута.
Добавьте ваше имя dyndns с IP-адресом сервера в файл локальных хостов на OpenWrt, и служба DNS dnsmasq должна переопределить запись из Интернета. Если вы настроили его правильно, ваше имя должно преобразовываться в IP-адрес вашего сервера изнутри вашей сети, а ваш внешний IP-адрес извне.
Можно настроить шпильку NAT, но это относительно сложно и хрупко.
Проще всего настроить внутренний DNS-сервер, который преобразует имя хоста вашего сайта во внутренний IP-адрес.
В качестве альтернативы вы можете ввести запись / etc / hosts (или ее эквивалент) на клиентском компьютере и добиться того же результата.
Вы можете использовать "view" в привязке
acl "local_net" {
192.168.0.0/16;
};
view "internal" in {
match-clients { local_net; };
recursion yes;
additional-from-auth yes;
additional-from-cache yes;
zone "example.net" in {
type master;
allow-query { local_net; };
allow-transfer { none; };
allow-update { none; };
file "master/example.net";
};
...
}
master/example.net
@ IN SOA ns.example.net. root.example.net. (
2013072101 ; Serial
3600 ; Refresh
900 ; Retry
3600000 ; Expire
3600 ) ; Minimum
@ IN A 192.168.127.1
www IN CNAME example.net.
С такими настройками все ваши локальные клиенты получат внутренний IP-адрес для вашего публичного доменного имени. Также вы можете решить проблему с iptables, но это будет более сложное решение.