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
Таким образом можно автоматизировать создание среды при изменении сетевых настроек. Выше очень простой пример, на самом деле можно настроить работу как в нескольких известных сетях, так и в ранее неизвестных. Можно, конечно, написать скрипты (на баше, например), а можно взять уже готовое решение и просто его настроить.