6.6. Настройка клиентов CIPE

Настроив CIPE-сервер правильно и проверив его функциональность, вы можете настраивать соединение на компьютере клиента.

Клиент CIPE должен уметь устанавливать и разрывать CIPE-соединение автоматически. Поэтому в CIPE включены механизмы настройки для такого использования. Например, удалённый работник может подключаться к серверу CIPE в сети своей компании, выполнив команду:

/sbin/ifup cipcb0

Это устройство будет запущено автоматически; для этого соединения также будут настроены маршруты и правила брандмауэра. Разорвать соединение удалённый работник может с помощью команды:

/sbin/ifdown cipcb0

При настройке клиентов требуется создать специальные сценарии, запускаемые после загрузки устройства. Конфигурацию самого устройства можно настраивать локально, в создаваемом пользователем файле /etc/sysconfig/network-scripts/ifcfg-cipcb0. Параметры в этом файле определяют, будет ли CIPE-соединение устанавливаться при загрузке, как будет называться устройство CIPE, и многое другое. Ниже показан файл ifcfg-cipcb0, задающий параметры подключения удалённого клиента к CIPE-серверу:


DEVICE=cipcb0
ONBOOT=yes
BOOTPROTO=none
USERCTL=no

# This is the device for which we add a host route to our CIPE peer through.
# You may hard code this, but if left blank, we will try to guess from
# the routing table in the /etc/cipe/ip-up.local file.
PEERROUTEDEV=

# We need to use internal DNS when connected via cipe. 
DNS=192.168.1.254

Устройство CIPE называется cipcb0. Оно запускается при загрузке (это указывает поле ONBOOT) и не использует протокол динамического получения IP-адреса (например, DHCP). Поле PEERROUTEDEV определяет имя устройства на CIPE-сервере, к которому подключаются клиенты. Если в этом поле ничего не указано, оно определяется после загрузки устройства.

Если внутренние сети находятся за брандмауэром, установите правила, позволяющие CIPE-интерфейсу клиентского компьютера отправлять и принимать пакеты UDP. За указаниями по настройке обратитесь к главе 7 Брандмауэры. В этом примере конфигурации устанавливаются правила iptables.

ЗамечаниеЗамечание
 

Следует настраивать ваших клиентов так, чтобы все локальные параметры находились в пользовательском файле /etc/cipe/ip-up.local. При закрытии CIPE-соединения эти параметры следует возвращать в исходное состояние с помощью /etc/cipe/ip-down.local.

Брандмауэры на компьютерах клиентов должны пропускать CIPE-пакеты, инкапсулированные в UDP. Правила могут быть самыми разными, но ключевым для CIPE-соединений является прохождение UDP-пакетов. Приведённые ниже правила iptables пропускают UDP-трафик протокола CIPE на компьютере, подключающемся к удалённой сети; последнее правило, включающее подмену IP-адресов, позволяет клиенту подключаться и к удалённой сети, и к Интернету:


/sbin/modprobe iptables
/sbin/service iptables stop
/sbin/iptables -P INPUT DROP
/sbin/iptables -F INPUT
/sbin/iptables -A INPUT -j ACCEPT -p udp -s 10.0.1.1
/sbin/iptables -A INPUT -j ACCEPT -i cipcb0
/sbin/iptables -A INPUT -j ACCEPT -i lo
/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

Добавьте на компьютере клиента правила обращения к узлам по ту сторону CIPE-соединения, как будто они находятся в локальной сети. Это можно сделать с помощью команды route. В данном примере, на компьютере клиента нужно добавить следующий сетевой маршрут:

route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.0.1.2

Ниже показан окончательный сценарий /etc/cipe/ip-up.local для клиентского компьютера:


#!/bin/bash -v
if [ -f /etc/sysconfig/network-scripts/ifcfg-$1 ] ; then
        . /etc/sysconfig/network-scripts/ifcfg-$1
else
        cat <<EOT | logger
Cannot find config file ifcfg-$1. Exiting.
EOF
        exit 1
fi

if [ -n ${PEERROUTEDEV} ]; then
        cat <<EOT | logger
Cannot find a default route to send cipe packets through!
Punting and hoping for the best.
EOT
        # Use routing table to determine peer gateway
        export PEERROUTEDEV=`/sbin/route -n | grep ^0.0.0.0 | head -n 1 \
           | awk '{ print $NF }'`

fi

####################################################
# Add The routes for the remote local area network #
####################################################

route add -host 10.0.1.2 dev $PEERROUTEDEV
route add -net 192.168.1.0 netmask 255.255.255.0 dev $1

####################################################
# IP TABLES Rules to restrict traffic              #
####################################################

/sbin/modprobe iptables
/sbin/service iptables stop
/sbin/iptables -P INPUT DROP
/sbin/iptables -F INPUT
/sbin/iptables -A INPUT -j ACCEPT -p udp -s 10.0.1.2
/sbin/iptables -A INPUT -j ACCEPT -i $1
/sbin/iptables -A INPUT -j ACCEPT -i lo
/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE