Создание VPN-специфичного конфигурационного файла
Наши программы vpn-client и vpn-server написаны для того, чтобы можно было устанавливать любое число произвольных VPN-соединений. Эти команды определяют, какую VPN им нужно создавать по имени программы и ее аргументам. Если два аргумента указаны, например, таким образом: vpn-server start vpn1, то второй аргумент рассматривается как имя VPN. При вызове через символическую ссылку, например, /etc/init.d/vpn1 или /etc/rc2.d/s99vpn1, будет использовано имя программы с удаленными первыми символами S## (или K##), что опять же дает vpn1. иными словами, скрипт пытается как можно более интуитивно определить, что вы хотите. На сервере скрипт определяет имя VPN по аргументам командной строки, которые мы указали в опции command в файле authorized_keys{2}.
Определив имя VPN, скрипт получает из файла /opt/ssh-vpn/etc/имя_vpn ее конфигурационные переменные. Таким образом, для нашей VPN с именем vpn1 мы должны создать файл /opt/ssh-vpn/etc/vpn1. Каждая переменная в конфигурационном файле начинается с server_ или client_, что означает возможность создать один файл со всеми необходимыми значениями и использовать его, при желании, в обеих системах не заботясь о конфликтах. Указанные в Таблице 3.3 переменные являются обязательными.
Таблица 3.3 Переменные конфигурационного файла
Переменная | Кто использует | Пример | Объяснение |
client_network | сервер | 192.168.1.0/24 | Сеть на VPN -клиенте. Используется VPN -сервером для установления маршрута к удаленной сети с помощью команды route add . |
server _ network | клиент | 192.168. 2 .0/24 | Сеть на VPN -сервере. Используется VPN -клиентом для установления маршрута к удаленной сети с помощью команды route add . |
server_ppp_ip | сервер | 192.168.254.254 | IP -адрес конца PPP -соединения, на котором находится VPN -сервер. Этот адрес не должен находится в сети, доступной любой машине. |
client _ ppp _ ip | сервер | 192.168.254.253 | IP -адрес конца PPP -соединения, на котором находится VPN -клиент. Этот адрес не должен находится в сети, доступной любой машине. |
Переменные, указанные в Таблице 3.4 являются необязательными.
Таблица 3. 4 Необязательные переменные конфигурационного файла
Переменная | Кто использует | Пример | Объяснение |
client_debug | клиент | yes | Добавляет опцию debug к аргументам pppd и включает set - x для пошагового вывода скрипта vpn - client . |
server _ debug | сервер | yes | Добавляет опцию debug к аргументам pppd с целью ведения более подробного протокола. |
client_ssh_args | клиент | - c 3des | Дополнительные аргументы ssh , специфичные для данной VPN . |
client _ pppd _ args | клиент | usepeerdns | Дополнительные аргументы командной строки pppd , специфичные для данной VPN . |
server _ pppd _ args | сервер | proxyarp | Дополнительные аргументы командной строки pppd , специфичные для данной VPN . |
client_require_pap | клиент | yes | VPN -клиент будет требовать PAP -аутентификации сервера. Все значения, кроме yes эквивалентны no . |
server _ require _ pap | сервер | yes | VPN -сервер будет требовать PAP -аутентификации клиента. Все значения, кроме yes эквивалентны no . |
client_require_chap | клиент | yes | То же, что и client _ require _ pap , но для протокола CHAP . |
server_require_chap | сервер | yes | То же, что и server _ require _ pap , но для протокола CHAP. |
# На обеих сторонах расположены сети, для # которых можно использовать команду ‘route’ client_network=192.168.2.0/24 server_network=192.168.1.0/24
# Нужна ли нам отладочная информация? client_debug=”no” server_debug=”yes”
# Выбираем адреса IP для обеих VPN. server_ppp_ip=192.168.254.254 client_ppp_ip=192.168.254.253
# Нужна ли PPP-аутентификация? client_require_pap=”yes” server_require_pap=”yes” client_require_chap=”no” server_require_chap=”no”
# нужны ли нестандартные аргументы pppd? Вставьте их сюда. #client_pppd_args=”usepeerdns” #server_pppd_args=”proxyarp”
# нужны ли дополнительные аргументы ssh? Вставьте их сюда. #client_ssh_args=”-C” #server_ssh_args=””
Существует два главных способа управления командой ssh. Первый – создать запись в ~/.ssh/config, как было уже ранее показано в этой главе. Как альтернативу (или как дополнение) можно предложить разместить аргументы в переменной client_ssh_args. Эта переменная представляет собой просто строку, помещаемую сразу за командой $SSH, указанной в pty-аргументе pppd.
Можно включать такие опции, как -l remoteusername или -p 9876. Можно размещать любую доступную опцию, но вы должны их слегка видоизменять. Например, вариант опции из файла ~/.ssh/config Hostname client.example.org для командной строки можно предложить такой: -ostname client.example.org.
Мы, в общем случае, предпочитаем помещать все опции ssh в одно место, либо в конфигурационный файл ~/.ssh/config, либо в файл /opt/ssh-vpn/etc/имя_vpn. Так гораздо легче просмотреть сразу все опции.