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

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 
  • необходима конфигурация клиента openvpn, подходящая для устранения неполадок
  • Ограниченная связь?
  • Как перенаправить туннель SSL VPN через HTTP CONNECT-прокси, используя iptables?
  • Конфигурация iptables ssh через VPN
  • Debian VPN pptp-linux не сохраняет учетные данные
  • TCP через TUN: SYN / ACK принимается, но ACK не создается, а сокет остается в состоянии SYN_SENT
  • Потерянный в мире VPN
  • Не может ни PING LAN, ни когда она подключена к OpenVPN
  • Установка vpnc на CentOS
  • Решение балансировки нагрузки с помощью linux
  • Возможно ли «частично» подключиться к VPN
  • Interesting Posts

    Потребляемая мощность сетевого адаптера Ethernet на ноутбуке?

    Как найти IP-адрес виртуальной машины KVM, чтобы я мог использовать SSH?

    emacs медленно запускает чтение / poll / writev / org / freedesktop / org / gnome

    Открыть программу в другом окне терминала windows-solaris

    Сценарий оболочки Bash / Korn, отредактированный в Windows, вызывает ошибку '… ^ M: not found'

    Пересылка порта запроса ssh с глобального IP на определенный локальный IP-адрес

    Как управлять эквалайзером в командной строке?

    Почему текстовые файлы 4kB?

    bash throwing "ignored null byte in input" предупреждение в скрипте

    Есть ли встроенный (или, по крайней мере, простой) способ проверить наличие функции, доступной через $ FPATH?

    Игнорировать размонтированные файловые системы

    пересылка пакетов DHCP

    Могу ли я копировать выходные данные из мудреца в буфер обмена?

    Не удается установить xrdp, используя apt-get на debian 8.5 (tinkeboard os) (Arm)

    Отображать только последние 10 (или n) строк длинного вывода команды

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