Linux - статьи

Создание 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.
Пример файла конфигурации может выглядеть так: # конфигурационный файл VPN1 # /opt/ssh-vpn/etc/vpn1

# На обеих сторонах расположены сети, для # которых можно использовать команду ‘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. Так гораздо легче просмотреть сразу все опции.


Содержание раздела