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

  • Как респанировать vpnc, когда он останавливается?
  • Маскарад не работает иногда
  • Возможно ли настроить VPN таким образом, чтобы я отключился от Интернета, если он снизился?
  • Как перенаправить vpn-трафик на hostapd-малину pi
  • PPTP-сервер с псевдонимами NIC
  • libc.so.6 (GLIBC_2.14) (64 - битный)
  • Перенаправить трафик через vpn по мере необходимости
  • Не удалось запросить секреты VPN №3
  • 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
    Linux и Unix - лучшая ОС в мире.