Могу ли я сопоставить внутренний 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) вряд ли сработает.

  • Изменение DNS по умолчанию на подключении openvpn
  • Установка vpnc на CentOS
  • Изменение маршрутов для VPN
  • PPTP VPN в CentOS 7
  • Недокументированный код выхода pppd
  • Подключен к VPN, но не удается подключить хосты в удаленной сети
  • Есть ли способ разрешить все IP-адреса PIA VPN со сценарием?
  • Использование VPN для определенных приложений через сетевое пространство имен
  • 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

    readline – использование модификаторов, отличных от управления и мета

    Как я могу получить версию vsftpd в переменной оболочки?

    Как рассчитать средние запросы за секунды, используя awk или sed в журналах Apache

    Что необходимо для сервера rsync в режиме демона

    распаковать каталог * .tgz файлов с помощью шаблона

    Почему rm исключает использование! не работает в zsh?

    Использование памяти бесконечно циклического сценария оболочки

    Нужно автозапуск после выхода на ubuntu

    Какая программа сохранит заполняемый PDF-файл?

    Как использовать ^ # $ в качестве разделителя записей в awk?

    Как сделать непрерывный wc -l с текстовыми инструментами gnu?

    rsync только файлы новее, чем заданная дата, с –delete

    Извлечение четных и нечетных страниц PDF в два отдельных PDF-файла

    Если все текстовые файлы имеют какой-то суффикс (например, * .txt, * .conf)

    Почему я получаю ошибку при загрузке разделяемых библиотек: libssl.so.6 не может открыть файл общих объектов даже после запуска ldconfig?

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