4. Введите команду make kinstall для создания ядра. В результате будут созданы ядро и необходимые модули, а также вызвана команда make modules_install для инсталляции модулей.
5. Измените конфигурацию LILO, GRUB или другого инструмента, используемого для загрузки ядра Linux. Вам надо скопировать файл ядра из каталога /usr/src/linux/arch/architecture-code/boot, отредактировать файл /etc/lilo.conf (или другой конфигурационный файл) и ввести команду lilo (или другую команду загрузки).
6. Перезагрузите компьютер. В процессе перезагрузки следите за тем, чтобы ядро системы было указано правильно.
С этого момента ядро вашей системы может поддерживать FreeS/WAN. В процессе установки должен быть создан файл /etc/ipsec.secrets, содержащий ключи кодирования. Этот файл будет использоваться в дальнейшем, сейчас же важно убедиться, что он есть в наличии и содержит некоторые ключи (ключи выглядят как наборы шестнадцатеричных цифр).
Для того чтобы можно было использовать средства FreeS/WAN, настройте как минимум два компьютера, принадлежащих различным сетям. В большинстве случаев обе системы выполняют роль маршрутизаторов, но, если понадобится, вы можете инсталлировать FreeS/WAN на отдельном компьютере, который должен взаимодействовать с удаленной сетью.
Редактирование конфигурационных файлов
FreeS/WAN использует два конфигурационных файла: /etc/ipsec.secrets и /etc/ipsec.conf. Эти файлы предназначены для различных целей. В файле /etc/ipsec.secrets содержатся ключи кодирования, а в файле /etc/ipsec.conf — опции общего назначения.
Создание ключей
Как было сказано ранее, при создании FreeS/WAN должен быть создан файл /etc/ipsec.secrets, содержащий ключи кодирования. Если этот файл не был создан или если ключи в нем отсутствуют, сгенерируйте ключи с помощью команды
# ipsec rsasigkey 128 > /root/rsa.key
Эта команда создает 128-битовый ключ и помещает его в файл /root/rsa.key. Указав значение параметра, отличающееся от приведенного в данном примере, вы можете сгенерировать ключ другой длины. Данные, полученные в результате выполнения этой команды, нельзя непосредственно использовать. В начало файла надо включить следующую строку:
: RSA {
Перед и после RSA обязательно должны быть пробелы. Кроме того, в конец файла надо включить как минимум один пробел, указав за ним закрывающую фигурную скобку (}). Полученный результат надо скопировать в файл /etc/ipsec.secrets. Описанные выше действия надо выполнить на обоих VPN-маршрутизаторах, реализованных с помощью FreeS/WAN.
В составе данных, сгенерированных посредством ipsec rsasigkey, содержится закомментированная строка, начинающаяся с #pubkey=. В ней указан открытый, или общий, ключ. Этот ключ надо передать системе, с которой должна взаимодействовать данная система.
Установка опций в файле ipsec.conf
В большинстве случаев при инсталляции FreeS/WAN создается файл /etc/ipsec.conf. Установки по умолчанию, как правило, не обеспечивают выполнение сервером требуемых функций, но содержимое этого файла можно использовать как базу для дальнейшей настройки системы. В файле /etc/ipsec.conf содержатся три основных раздела: config setup, conn %default и conn remotename.
Установка локальных опций
В разделе config setup содержатся локальные опции. В файле /etc/ipsec.conf, создаваемом по умолчанию, этот раздел имеет следующий вид:
config setup
# THIS SETTING MUST BE CORRECT or almost nothing will work;
# %defaultroute is okay for most simple cases.
interfaces=%defaultroute
# Debug-logging controls: "none" for (almost) none, "all"
for lots.
klipsdebug=none
plutodebug=none
# Use auto= parameters in conn descriptions to control
startup actions.
plutoload=%search
plutostart=%search
# Close down old connection when new one using same ID shows
up.
uniqueids=yes
Наиболее важный компонент данного раздела — опция interfaces, которая сообщает FreeS/WAN о том, какие интерфейсы следует использовать для поддержки VPN- соединений. Значение по умолчанию %defaultroute указывает на то, что FreeS/WAN должен использовать маршрут по умолчанию. Однако вы можете указать конкретные интерфейсы. В следующем примере опция interfaces задает использование интерфейсов eth0 и ppp1:
interfaces="ipsec0=eth0 ipsec1=ppp1"
Опции klipsdebug и plutodebug задают протоколирование функций KLIPS (Kernel IP Security — IP-защита ядра) и демона Pluto. Демон Pluto является частью пакета FreeS/WAN и поддерживает обмен ключами. Если в процессе работы возникают проблемы, вам надо задать для этих опций значение all.
Pluto может загружать соединения в память или автоматически запускать их при запуске FreeS/WAN. Опции plutoload и plutostart показывают, над какими соединениями надо выполнять соответствующие действия. В большинстве случаев можно принять значения данных опций по умолчанию, но, возможно, вы захотите указать лишь некоторые соединения; для этого надо задать их имена.
Установка опций, используемых по умолчанию для описания соединений
Отдельные соединения описываются в разделах, которые начинаются с ключевого слова conn. Наряду с реальными соединениями FreeS/WAN поддерживает соединение %default. В разделе, соответствующем этому соединению, обычно содержатся следующие опции.
• keyingtries. Если соединение установить не удалось, FreeS/WAN предпримет новую попытку. Значение 0 данной опции указывает на то, что попытки установить соединение должны продолжаться бесконечно. Если вы хотите ограничить число попыток, укажите в качестве значения опции keyingtries конкретное число.
• authby. По умолчанию применяется метод аутентификации, задаваемый значением authby=rsasig. Согласно этому методу, для аутентификации должны использоваться ключи RSA. Существует другой способ аутентификации, но в данной главе он рассматриваться не будет.
Помимо приведенных выше опций, в данный раздел можно включить опции, которые будут рассматриваться в следующем разделе. Если вы обнаружите, что одна и та же опция содержится в описании нескольких соединений, перенесите ее в раздел по умолчанию. При этом снижается вероятность появления ошибок, а размеры конфигурационного файла уменьшаются.
Установка удаленных опций, ориентированных на конкретные системы
Каждое соединение требует настройки, для выполнения которой надо изменить содержимое соответствующего раздела conn. За ключевым словом conn следует имя соединения, а затем — опции. В начале строки, содержащей опцию, должен стоять хотя бы один пробел. Многие из опций, включаемых в раздел conn, определяют сетевые интерфейсы. Рассмотрим рис. 26.6, на котором изображена типичная сеть, созданная с помощью FreeS/WAN. VPN-маршрутизатор, расположенный сверху, считается "левым". Вам необходимо указать FreeS/WAN IP-адреса, используемые в данной конфигурации. Для этого используются следующие опции.
• left subnet. Локальная подсеть, к которой подключен маршрутизатор FreeS/WAN. В примере, показанном на рис. 26.6, это сеть 172.16.0.0/16.
• left. Адрес, связанный с внешним интерфейсом сервера VPN. В большинстве случаев для этой опции задается значение %defaultroute, но вы можете указать конкретный IP-адрес. На рис. 26.6 это адрес 10.0.0.1.
• leftnexthop. IP-адрес обычного маршрутизатора, к которому подключена система VPN. В примере, показанном на рис. 26.6, используется адрес 10.0.0.10. Подобная информация необходима, так как KLIPS не применяет обычные средства маршрутизации, реализованные в ядре, а передает данные непосредственно следующему маршрутизатору.
• leftfirewall. Если подсеть, обслуживаемая VPN-маршрутизатором, содержит IP-адреса, которые не маршрутизируются обычными средствами (например, если она использует средства NAT), либо если VPN-маршрутизатор выполняет также функции брандмауэра, необходимо задать leftfirewall=yes.
• rightnexthop. В качестве значения этой опции задается IP-адрес обычного маршрутизатора, который доставляет пакеты удаленной сети.
• right. Данная опция указывает на внешний сетевой интерфейс удаленного VPN-маршрутизатора. Подобно left, вы можете принять значение этой опции по умолчанию.
• rightsubnet. Блок IP-адресов удаленной подсети. В примере, показанном на рис. 26.6, это сеть 192.168.1.0/24.
• leftid. Идентификатор "левой" системы. Это может быть IP-адрес, имя домена или имя узла, которому предшествует символ @ (например, @vpn.threeroomco.com). Имя узла, перед которым указан символ @, означает, что система не должна пытаться преобразовать имя в IP-адрес.
• rightid. Значение данной опции идентифицирует "правую" часть VPN-соединения.
• leftrsasigkey. Открытый RSA-ключ из файла /etc/ipsec.secrets на "левой" стороне VPN-соединения.