Intereting Posts
Использование `_` в качестве переменной среды, переданной команде Mutt не работает при попытке отправить электронное письмо из командной строки Фоновый сброс при каждом перезапуске системы Принять почту только для определенного адреса с помощью Postfix amixer – Как изменить канал записи? Почему «аргумент может быть опрокинут против опциона« преобладать над », аргумент всегда раздельный»? Настройка параметров сетевого прокси-сервера для всех пользователей на Ubuntu (без перезагрузки) Разрешение отклонено только для одного файла в каталоге как пользователь root в файловой системе ext3 в ОС RAIDiator SSH-клиент OpenSSH не соблюдает порядок настроек IdentityFile i3 менеджер окон условный exec comand vipe misbehaving при замене процесса bash Как заставить ssh-соединение выйти в конце скрипта USB-накопитель Fedora с постоянным запоминающим устройством только отображают строки df, которые имеют больше fs, чем 80% Как запустить скрипт на экране при перезагрузке

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

Согласно предложению @ 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