Whereami — это программа, которая позволяет автоматически реконфигурировать систему при изменении ее географического положения. При этом, однако, предполагается, что со сменой географического положения у вас изменились и сетевые настройки. Это, в общем-то, полезно, если вы используете ноутбук в разных местах — дома, на работе, в аэропорту, незнакомых кафе с вайфаем и так далее. Но во всех этих местах системные настройки желательно выставлять такими, которые соответствуют максимально безопасным и удобным для текущего местоположения.
Установка whereami
apt-get install whereami
Настройка
Настройка осуществляется через конфигурационные файлы. Таких файлов несколько, и они все находятся в директории /etc/whereami/. Вот эти файлы:
apm.conf — Файл для whereami, который используется при переходе в режим ожидания (suspend) и выходе из него.
detect.conf — Файл настроек определения местоположения.
mail-relay.conf — Файл для настройки почтового релэя.
whereami.conf — Главный файл настроек.
Давайте рассмотрим пример несложной конфигурации. Предположим, что у нас есть ноутбук, который перемещается между двумя сетями — домашней и рабочей.
Параметры домашней сети:
Сеть: 192.168.0.0/24
Шлюз: 192.168.0.1
DNS: 192.168.0.1
Работает DHCP
Параметры рабочей сети:
Сеть: 10.0.2.0/24
Шлюз: 10.0.2.2
DNS: 192.168.0.1
Работает DHCP
Совпадают только адрес DNS-сервера и маска сети (24 бита), адрес шлюза и сетевые адреса различаются. Этого более чем достаточно для того, чтобы определить, в какой из двух сетей мы находимся и, соответственно, выключить ненужные сервисы, например, Samba.
Поэтому сделаем следующее. В домашней сети будем запускать postgresql и выключать фаервол, в рабочей отключать postgresql и включать фаервол. А при выходе из спящего режима автоматически определять местоположение.
Самое первое, что сделаем — это зададим автоопределение для выхода из спящего режима. Для этого в файле /etc/whereami/apm.conf раскомментируем строчку
RESUME_LOCATION=auto
Теперь нам надо выполнить автоопределение местоположения. Назовем их home и work для дома и работы соответственно. Для этого напишем небольшой файлик detect.conf, в который включим определение местоположения.
# Устанавливаем местоположение по умолчанию default home # Проверяем, поднят ли интерфейс eth0 testmii eth0 lan # Аналогично wlan0 testmii wlan0 wlan # Если проводной интерфейс поднят, рестартуем dhcp-клиент if lan set INTERFACE eth0 testdhcp restart dhcp fi # А этот кусочек определяет местоположение при использовании DHCP # Этот вариант нам подходит, поскольку DHCP есть и дома, и на работе if dhcp testdhcp 192.168.0.* home testdhcp 10.0.2.* work fi
Теперь можно использовать местоположение, которое мы определили (home или work), чтобы выполнить соответствующие действия. Сами действия описываются в другом файле — whereami.conf
# Если не wlan, то опускаем интерфейс wlan0 !wlan ifconfig wlan0 down !wlan resolvconf -d wlan0 # Если не lan, то опускаем eth0 !lan ifconfig eth0 down !lan resolvconf -d eth0 # В домашней сети выполняем соответствующие команды =home service postgresql start =home service ufw stop # При установлении того, что мы находимся в home +home mount.nfs4 //192.168.0.2/share /mnt/homeshare # При установлении того, что находимся не в home -home umount /mnt/homeshare # В рабочей сети выполняем эти команды =work service postgresql stop =work service ufw start # При установлении того, что мы находимся в work +work mount.cifs //10.0.2.20/share /mnt/share # При установлении того, что мы находимся не в work -work umount /mnt/share
Таким образом можно автоматизировать создание среды при изменении сетевых настроек. Выше очень простой пример, на самом деле можно настроить работу как в нескольких известных сетях, так и в ранее неизвестных. Можно, конечно, написать скрипты (на баше, например), а можно взять уже готовое решение и просто его настроить.