Могу ли я сопоставить внутренний IP-адрес с доменным именем, когда в конкретной сети?

У меня есть сервер дома, с внутренним IP 192.168.1.100 . Я использую динамическую службу DNS, чтобы я мог связаться с ней по адресу http://foo.dynu.com когда я вышел. Когда у меня есть ноутбук дома, я знаю, что могу напрямую подключиться к серверу, добавив следующую строку в /etc/hosts .

 192.168.1.100 foo.dynu.com 

Однако есть ли способ автоматически применить эту переадресацию только тогда, когда я нахожусь в своей домашней сети? (Обычно я подключаюсь через определенное соединение Wi-Fi, хотя иногда я подключаюсь через ethernet. Если это усложняет ситуацию, то я рад только установить его для подключения Wi-Fi.) Я использую Network Manager.

Кроме того, я подключаюсь к Интернету через VPN, поэтому, вероятно, любая конфигурация моего маршрутизатора (OpenWRT) вряд ли сработает.

  • Операционная система Openswan ipsec не работает
  • Использование двухточечного VPN не похоже на правильный сетевой интерфейс
  • Debian / Jessie: Самый простой способ подключения к VPN (Ipsec)
  • Настройка IPtables для работы в качестве маршрутизатора на границе VPN
  • Почему / usr / sbin / racoon требуют входящих соединений, когда VPN активен в MacOS Sierra
  • Не удается подключиться к VPN с помощью сетевого администратора, тогда как в командной строке
  • VPN-туннелирование через другую VPN
  • IPSec VPN Debian Squeeze Server для Mac OS X
  • One Solution collect form web for “Могу ли я сопоставить внутренний IP-адрес с доменным именем, когда в конкретной сети?”

    Согласно предложению @ garethTheRed в комментариях, я создал диспетчер сетевого диспетчера.

    Создайте следующий файл в /etc/NetworkManager/dispatcher.d/99_foo.dynu.com.sh . Это происходит при обнаружении нового сетевого соединения (например, ethernet или wifi). Затем он идентифицирует мою «домашнюю сеть» двумя способами: BSSID / SSID и статическим IP-адресом, который мой маршрутизатор присваивает мне. (В настоящий момент это не работает, когда я подключаюсь через ethernet, так как это относительно редко.) Затем он добавляет сопоставление в файл hosts, если мы находимся в домашней сети; если нет, то удаляет эту строку.

     #!/bin/sh # Map domain name to internal IP when connected to home network (via wifi) # Partially inspired by http://sysadminsjourney.com/content/2008/12/18/use-networkmanager-launch-scripts-based-network-location/ WIFI_ID_TEST='Connected to 11:11:11:11:11:11 (on wlp3s0) SSID: WifiName' LOCAL_IP_TEST='192.168.1.90' MAPPING='192.168.1.100 foo.dynu.com' HOSTS_PATH=/etc/hosts IF=$1 STATUS=$2 # Either wifi or ethernet goes up if [ "$STATUS" = 'up' ] && { [ "$IF" = 'wlp3s0' ] || [ "$IF" = 'enp10s0' ]; }; then # BSSID and my static IP, ie home network if [ "$(iw dev wlp3s0 link | head -n 2)" = "$WIFI_ID_TEST" ] && [ -n "$(ip addr show wlp3s0 to ${LOCAL_IP_TEST})" ]; then grep -qx "$MAPPING" "$HOSTS_PATH" || echo "$MAPPING" >> "$HOSTS_PATH" else ESC_MAPPING="^$(<<<"$MAPPING" sed 's/\./\\./g')$" sed -i "/${ESC_MAPPING}/d" "$HOSTS_PATH" fi fi и #!/bin/sh # Map domain name to internal IP when connected to home network (via wifi) # Partially inspired by http://sysadminsjourney.com/content/2008/12/18/use-networkmanager-launch-scripts-based-network-location/ WIFI_ID_TEST='Connected to 11:11:11:11:11:11 (on wlp3s0) SSID: WifiName' LOCAL_IP_TEST='192.168.1.90' MAPPING='192.168.1.100 foo.dynu.com' HOSTS_PATH=/etc/hosts IF=$1 STATUS=$2 # Either wifi or ethernet goes up if [ "$STATUS" = 'up' ] && { [ "$IF" = 'wlp3s0' ] || [ "$IF" = 'enp10s0' ]; }; then # BSSID and my static IP, ie home network if [ "$(iw dev wlp3s0 link | head -n 2)" = "$WIFI_ID_TEST" ] && [ -n "$(ip addr show wlp3s0 to ${LOCAL_IP_TEST})" ]; then grep -qx "$MAPPING" "$HOSTS_PATH" || echo "$MAPPING" >> "$HOSTS_PATH" else ESC_MAPPING="^$(<<<"$MAPPING" sed 's/\./\\./g')$" sed -i "/${ESC_MAPPING}/d" "$HOSTS_PATH" fi fi 
    Interesting Posts

    Настройка SMTP-AUTH и TLS в Postfix

    Консольное сопоставление клавиш

    Выполнение команд с помощью сценария ssh и оболочки с использованием переменных на удаленной машине

    GRUB не загружается, а компакт-диски live

    Экран HiDPI и масштабирование

    Можно ли выделить одно ядро ​​в многоядерной Linux-системе на одно приложение для пользовательского пространства?

    Отслеживание пути оболочки в Emacs

    Создание группы и пользователя для Tomcat RHEL / CentOS

    Ошибка при ручной установке вручную в CentOS

    Как узнать имя процесса, которое открывает порт tcp?

    GVim, скомпилированный из источника, открытого через SSH -X, не копирует пасту при выборе

    Откройте MTU между мной и IP-адресом назначения

    Выходы lsmod: не испорченные

    Разрешение псевдодоменного имени на частный IP-адрес

    Почему это исключает шаблон для rsync, дает разные результаты, когда исходный каталог имеет завершающую косую черту?

    Linux и Unix - лучшая ОС в мире.