Назад | Перейти на главную страницу

Маршрутизация Linux - доступ к внешнему IP из локальной сети

Я использую 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, но это будет более сложное решение.