Вопрос или проблема
Я использую Juniper Networks network connect для подключения к офисной сети. Как только я попадаю в офисную сеть, я проверяю IP-адреса серверов и добавляю их в файл /etc/hosts, например,
10.199.xx.yy offi
Когда я выхожу из VPN-сети в публичное пространство, network connect сбрасывает все изменения, которые он внёс, и возвращает файл /etc/hosts
в состояние, в котором он находился до входа в сеть. Я думаю, что такое поведение является ожидаемым для Juniper Network connect, так как он добавляет запись в верхнюю часть файла hosts
, как,
# BEGIN hosts added by Network Connect
61.xx.yy.zz vpn.ip.com
# END hosts added by Network Connect
Но пытаясь сбросить свои собственные записи, network connect также сбрасывает пользовательские записи..
Я попытался сделать файл /etc/hosts
неизменяемым, используя chattr +i /etc/hosts
, но это вызвало сбой моего входа в VPN, так как network connect вылетает, если он не может записать в /etc/hosts
Основываясь на вашем вопросе, я не могу сказать, постоянны ли сопоставления IP/имён хостов в вашем офисе. Если да, возможно, вам стоит сделать маленький скрипт, который сбрасывает файл /etc/hosts
:
cat > /etc/hosts <<EOF
10.199.0.23 foo
10.199.0.24 bar
10.199.0.31 baz
10.199.0.39 quux
EOF
и запускать его, когда вы хотите сбросить сопоставления IP/hosts.
Ответ или решение
Для решения проблемы с настройкой файла /etc/hosts
, который сбрасывается при выходе из сети VPN, предлагаю несколько подходов, которые помогут сделать пользовательские записи более постоянными.
1. Сценарий автоматического восстановления
Поскольку Juniper Network Connect восстанавливает файл /etc/hosts
до его предыдущего состояния, можно создать скрипт, который будет восстанавливать ваши пользовательские записи после дисконнекта. Этот подход требует некоторой автоматизации, но он достаточно прост в реализации.
Создайте файл скрипта, например, restore_hosts.sh
, и внесите в него следующие строки:
#!/bin/bash
# Восстановление пользовательских записей в /etc/hosts
cat > /etc/hosts <<EOF
# BEGIN hosts added by Network Connect
61.xx.yy.zz vpn.ip.com
# END hosts added by Network Connect
10.199.0.23 foo
10.199.0.24 bar
10.199.0.31 baz
10.199.0.39 quux
EOF
Не забудьте дать права на выполнение вашему скрипту:
chmod +x restore_hosts.sh
Теперь, после завершения работы с VPN, вы можете запускать этот скрипт командой ./restore_hosts.sh
, чтобы восстановить ваши записи.
2. Использование системных служб
Если вам нужно автоматическое восстановление при каждом выходе из VPN, вы могли бы использовать системные службы или инструменты управления конфигурацией, такие как systemd
. Создайте сервис, который будет вызываться после отключения от VPN, например, restore_hosts.service
.
Пример конфигурации для systemd
:
[Unit]
Description=Restore /etc/hosts entries after VPN disconnect
[Service]
Type=oneshot
ExecStart=/path/to/restore_hosts.sh
[Install]
WantedBy=multi-user.target
Это позволит вам автоматически восстанавливать ваши записи после отключения.
3. Варианты решения с использованием переменных окружения
Если ваша компания позволяет, можно попробовать изменить порядок загрузки конфигурации VPN, чтобы ваши записи в /etc/hosts
добавлялись после сетевых записей. Данная опция требует командной строки VPN и может различаться в зависимости от используемого программного обеспечения.
4. Работа с Juniper Network Connect
Так как Juniper Network Connect контролирует файл, вы могли бы проверить, существуют ли конфигурационные параметры, которые позволяют отключить динамическое обновление /etc/hosts
. Для этого обратитесь к документации или административному персоналу вашей компании.
Заключение
При наличии проблем с изменениями в /etc/hosts
после отключения от VPN, ключевым пунктом является автоматизация процесса восстановления. Написание скрипта для восстановления пользовательских записей в сочетании с настроенными системными службами может значительно облегчить вашу работу и избежать постоянных ручных изменений. Если возникнут дополнительные вопросы или сложности, свяжитесь с IT-отделом вашей компании для получения поддержки.