Linux

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта
Home Разное VPN между офисами

VPN между офисами

E-mail Печать PDF

Начальные условия

1 - есть два офиса, расположенных в разных городах с локальными сетями: 172.16.5.0/24 в каждом офисе. IP Сервера в городе А - 106.2.12.212, а IP сервера в городе В - 56.224.244.80.
2 - в качестве маршрутизаторов или роутеров, используется компьютеры с двумя сетевыми картами
3 - в качестве OS на компьютерах - маршрутизаторах используется любой Linux
4 - в качестве ПО на компьютерах - маршрутизаторах нам понадобиться iptables и vpnd.
5 - Сервер и клиент - имеют реальные IP.

Задача

Необходимо связать два или более офисов в единую сеть.
Для этого необходимо проложить между этими офисами сетевой ткннель.
Сетевые туннели необходимы для связи компьютеров или сетей через интернет.
На мой взгляд, реализовать этот туннель проще всего с помощью vpnd(Virtual Private Network Daemon). По сравнению с другими решениями по созданию сетевых туннелей, vpnd прост в установке, не требует поднимать заново канал после обрыва связи, и шифрует трафик некоммерческим алгоритмом - "Blowfish.

3_g2574.png


Уточняю: Для работы данной схемы, необходимо на каждой рабочей станции офиса "A" создать дополнительную сеть, или как еще говорят - алиас. Именно на этом алиасе и будет работать VPN.
Учитывая, что связь должна быть двусторонней такая-же сеть понадобиться и в офисе "B".
Но на каждой рабочей станции поднимать 2 сети не совсем удобно, потому, мы это сделаем только на роутерах, а для того, чтобы рабочии станции видели VPN сеть, применим iptables.

Получение и установка

Первым делом надо убедиться что ваше ядро поддерживает протокол - SLIP. Если нет, его необходимо пересобрать. Если вы используете дистрибутив Linux c предкомпилированным ядром (Mandrake, Suse, alt-linux и. е. д.) то скорее всего у вас есть модуль SLIP для вашего ядра, и вам остается только его загрузить. (man modprobe или man insmod).
Если ваш дистрибутив Linix не содержит пакета с vpnd, его можно скачать с сайта этого проекта.
После распаковываем, и собираем.

Код:
tar xfvz vpnd-xxx.tar.gz
cd vpnd
./configure
make



Далее распихиваем появившиеся файлы по местам:
vpnd.conf и vpnd.chat копируем в /etc.
Исполняемый файлик vpnd куданибудь, где его будет видно системе, например в /usr/local/sbin/.

 

Настройка и запуск

 

Для работы демона vpnd необходимо создать ключ. Для этого запустите:

Код:
vpnd -m



В каталоге /etc должен появиться файл vpnd.key это и есть ключик. Данный ключик должен присутствовать у вас и вашего клиента (сервера). Потому не забудьте его переписать на сервер:

Код:
scp /etc/vpnd.key /etc/



VPND запускается командой:

Код:
/usr/local/sbin/vpnd -f



Если вы планируете много соединений, (допустим, у вашей фирмы много филиалов), то для удобства запуска нескольких сессий vpnd, создадим rc-скрипт:

Код:
#!/bin/sh
# chkconfig: 345 13 86
# description: Manage the VPN deamon for this host

echo VPND

# Source function library.
#. /etc/rc.d/init.d/functions

# This grabs only the hostname. Larger networks may require FQNs.
HOST=`hostname -s`

case "$1" in
start)
echo -n "Starting vpnd: "
if [ ! -f /var/lock/subsys/vpnd ]; then
CONF=`ls /etc/vpnd/*.conf`
for conf in $CONF; do
echo "/usr/local/sbin/vpnd -f $conf"
/usr/local/sbin/vpnd -f $conf
if [ $? != 0 ]; then
failure; echo
exit 1
fi
done
touch /var/lock/subsys/vpnd
echo "success"
fi
;;
stop)
echo -n "Stopping vpnd: "
PIDS=`ls /var/run/vpnd_*.pid 2>/dev/null`
#       PIDS='/var/run/vpnd.pid'


echo

if [ $? != 0 ]; then
failure; echo
echo "Failed to find PID of running vpnd process!"
exit 1
fi
for apid in $PIDS; do
kill `cat $apid`
#   ^^ Adding -9 here will prevent vpnd from removing its pid file

if [ $? != 0 ]; then
failure; echo
exit 1
fi
done
rm -f /var/lock/subsys/vpnd
echo "success"
;;
restart)
$0 stop


$0 start
;;
status)
status vpnd
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac

exit 0




И положим его в /etc/init.d


Теперь в /etc создадим каталог vpnd, куда после будем класть конфиги наших vpn-клиентов или vpn-серверов. Их можно класть туда сколько угодно, скрипт при запуске поднимет все экземпляры конфигов. Важно, проследить чтобы в каждом конфиге номер порта не повторялся!




Настало время настроить конфигурационные файлы. Разница между клиентом и сервером в данной ситуации - условна. Она заключаеться в том, какой серверов (имеется в виду компьютер) будет осуществлять соидинение, или восстанавливать его при обрыве.

Предположим, что параметры нашего клиента вот такие:

Локальная сеть: 172.16.5.0

Внешний ip 106.2.12.212


Сеть по которой работают пользователи туннеля на стороне клиента 192.168.4.0/24

ip клиентского vpnd сервера 192.168.4.1



Настройка vpnd.conf клиента:


Код:
mode client
client 106.2.12.212 2000
server 56.224.244.80 2000
local 192.168.4.1
remote 192.168.2.1
keyfile /etc/vpnd.key
pidfile /var/run/vpnd_moscow.pid
randomdev /dev/urandom
keepalive 10
mtu 1600
nocslip
nocompress
autoroute

peerroute
route1 192.168.2.0 255.255.255.0 192.168.4.1
route2 192.168.4.0 255.255.255.0 172.16.5.1



Предположим, что параметры нашего сервера вот такие:

Локальная сеть: 172.16.5.0 (она может отличаться от локальной сети на стороне клиента).

Внешний ip 56.224.244.80


Сеть по которой работают пользователи туннеля на стороне сервера 192.168.2.0/24

ip клиентского vpnd сервера 192.168.2.1



Настройка vpnd.conf сервера:

Код:
mode server
client 106.2.12.212 2000
server 56.224.244.80 2000
local 192.168.2.1
remote 192.168.4.1
keyfile /etc/vpnd.key
randomdev /dev/urandom
pidfile /var/run/vpnd_tula.pid


mtu 1600
nocslip
nocompress



peerroute
route1 192.168.4.0 255.255.255.0 192.168.2.1
route2 192.168.2.0 255.255.255.0 172.16.5.1




Если есть файрвол

Разрешить порт для работы vpnd, по умолчанию это 2000. Если у вас несколько клиентов, то все порты, какие у вас перечислены во всех конфигах.


Так же может понадобиться:

Во входной цепочки на сервере:

Код:
$IPTABLES -A INPUT -p ALL -i sl1 -s 192.168.4.0/255.255.255.0 -j ACCEPT





Во входной цепочки у клиента:

Код:
$IPTABLES -A INPUT -p ALL -i sl0 -s 192.168.2.0/255.255.255.0 -j ACCEPT


где sl1 - сетевой интерфейс для vpnd.




в выходной цепочки на сервере:


Код:
$IPTABLES -A OUTPUT -p ALL -s 192.168.2.0/24 -j ACCEPT



в выходной цепочки у клиента:


Код:
$IPTABLES -A OUTPUT -p ALL -s 192.168.4.0/24 -j ACCEPT



Для выхода всех пользователей на стороне клиента:


Код:
$IPTABLES -s 0/0  -t nat -A POSTROUTING -o sl1 -j SNAT --to-source 192.168.4.1



Для выхода всех пользователей на стороне сервера:


Код:
$IPTABLES -s 0/0  -t nat -A POSTROUTING -o sl1 -j SNAT --to-source 192.168.2.1




Обслуживание

Генерация ключа:

Код:
vpnd -m



Запуск сервера

Код:
vpnd -f config.name
Обновлено 19.11.2009 12:35  

Произвольная новость

Открытое Общественное Письмо Президенту России

Медведеву Дмитрию Анатольевичу

Здравствуйте, уважаемый Дмитрий Анатольевич!

 

К Вам обращаются те, кто использует Свободное Программное Обеспечение (СПО) ежедневно. Мы давно убедились в жизнеспособности такого варианта развития ПО. Являясь патриотами своей страны – России, мы хотим видеть ее свободной от необходимости вкладывать средства в иностранные экономики без дивидендов.
Данным письмом мы бы хотели обратить Ваше внимание на тенденции, сложившиеся во всем мире. Европа и США, страны Азии и Латинской Америки уже выбрали этот путь для своих государственных учреждений. Почему же в России про СПО знают лишь энтузиасты?
Еще задолго до наступления Мирового финансового кризиса многие государственные учреждения ведущих стран мира начали успешно переходить на СПО. В основном, в силу различных причин, базовой платформой свободных информационных систем становится Linux (Приложение 1).
Наша же страна, к сожалению, пошла по иному пути. Уже на протяжении многих лет государственный бюджет расходуется на приобретение лицензионного ПО. Под лицензией понимается EULA компании Microsoft. Хотя, на наш взгляд, все эти годы у государства был выбор.
На сегодняшний день при проведении тендеров на поставку программного обеспечения в государственные учреждения, СПО даже не указывается как альтернатива. Кроме того в некоторых документах «подписанных на самом высоком уровне», возможность установки программных продуктов не от компании Microsoft просто запрещена (Приложение 2). А это уже искусственное создание монополии со стороны государства, хотя, как нам, кажется, должно быть наоборот.