Записи с метками «OpenSWAN»

Построение VPN с помощью IPSec между D-Link DIR-130 и сервером OpenSWAN

Мы с друзьями активно используем технологии построения частных сетей VPN IPSec. Особенностью IPSec является возможность объединить несколько распределённых локальных сетей в единое целое адресное пространство.

В настоящий момент на рынке имеется бюджетная модель маршрутизатора SOHO класса с поддержкой IPSec — это D-Link DIR-130. Стоимость такой штуки в Новосибирске колеблется в районе 4000 рублей.

Допустим, у нас имеется две точки.

В точке «A» установлен компьютер под управлением Linux, компьютер имеет IP-адрес 178.49.6.146 и является шлюзом для локальной сети 192.168.0.0/25.

В точке «Б» установлен маршрутизатор D-Link DIR-130, имеющий IP-адрес 178.49.6.151, и являющийся шлюзом для локальной сети 192.168.0.128/25.

Ниже я привожу инструкцию, которая позволит построить зашифрованный VPN IPSec туннель и установить прямую маршрутизацию между точками «A» и «Б».

Во-первых, на сервере под управлением Linux нам следует установить пакет OpenSWAN:

sudo apt-get install openswan

…и изменить значения параметров в файле /etc/sysctl.conf в соответствии с /etc/ipsec.d/examples/sysctl.conf:

# example entries for /etc/sysctl.conf
# forwarding is needed for subnet or l2tp connections
net.ipv4.ip_forward = 1

# rp_filter is stupid and cannot deal decrypted packets "appearing out of
# nowhere"
net.ipv4.conf.default.rp_filter = 0

# when using 1 interface for two networks, and in some other cases with
# NETKEY, the kernel thinks it can be clever but breaks things.
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.conf.all.log_martians = 0
net.ipv4.conf.default.log_martians = 0
# these are non-ipsec specific security policies you should use
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0

Затем определить основные настройки и конфигурацию VPN-подключения в файле /etc/ipsec.conf. Ниже привожу пример конфигурации для нашего случая:

# /etc/ipsec.conf - Openswan IPsec configuration file
# RCSID $Id: ipsec.conf.in,v 1.15.2.6 2006-10-19 03:49:46 paul Exp $

# This file:  /usr/share/doc/openswan/ipsec.conf-sample
#
# Manual:     ipsec.conf.5

version	2.0	# conforms to second version of ipsec.conf specification

# basic configuration
config setup
	# plutodebug / klipsdebug = "all", "none" or a combation from below:
	# "raw crypt parsing emitting control klips pfkey natt x509 private"
	# eg: plutodebug="control parsing"
	#
	# !!!
	plutodebug=none
	klipsdebug=none
	strictcrlpolicy=no
	interfaces=%defaultroute
	protostack=netkey
	#
	# ONLY enable plutodebug=all or klipsdebug=all if you are a developer !!
	#
	# NAT-TRAVERSAL support, see README.NAT-Traversal
	nat_traversal=no
	#virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
	#
	# enable this if you see "failed to find any available worker"
	nhelpers=0
	# Close down old connection when new one using same ID shows up.
	uniqueids=yes

# Add connections here

conn %default
	keyingtries=0
	disablearrivalcheck=no
	#authby=rsasig
	leftrsasigkey=%dns
	rightrsasigkey=%dns
	# Add connections here

conn MyConnection1
	type=tunnel
	left=178.49.6.146
	leftsubnet=192.168.0.0/25
	right=178.49.6.151
	rightsubnet=192.168.0.128/25
	keylife=3600s
	keyexchange=ike
	ike=3des-md5-modp1024
	ikelifetime=28800s
	esp=3des-md5
	pfs=yes
	authby=secret
	auto=start
	#DPD
	dpddelay=30
	dpdtimeout=120
	dpdaction=hold
include /etc/ipsec.d/examples/no_oe.conf

Следующим шагом будет задание пароля в файле /etc/ipsec.secrets:

178.49.6.151 178.49.6.146: PSK "mypassword"

На этом настройка OpenSWAN на сервере закончена, сервис следует перезапустить:

sudo ipsec setup restart

Для того, чтобы пакеты из локальной сети уходили в VPN-туннель, нам следует переопределить правило маскирования адресов для локальной сети 192.168.0.0/25 на сервере под управлением Linux (там, где у нас стоит OpenSWAN):

iptables -t mangle -A PREROUTING -d 192.168.0.128/25 -j MARK --set-mark 1
iptables -t nat -A POSTROUTING -s 192.168.0.0/25 -m mark ! --mark 1 -o eth1 -j SNAT --to-source 178.49.6.146

Переходим к настройке D-Link DIR-130. Во вкладке SETUP / VPN Settings создаём VPN профиль «IPSec — Internet Protocol Seecurity» со следующими параметрами:

IPSEC SETTING:
Enable: да;
Name : MyIPSec1;
Local Net /Mask: 192.168.0.128/25;
Выбрать: Site to Site;
Remote IP: 178.49.6.146;
Remote Local LAN Net /Mask : 192.168.0.0/25;
Authentication: Pre-shared Key: mypassword;
Local ID : IP address: 178.49.6.151;
Remote ID : IP address: 178.49.6.146;
#
PHASE 1:
Выбрать: Main mode;
NAT-T Enable: нет;
Keep Alive / DPD: DPD (Dead Peer Detection);
DH Group : 2 - modp 1024 bit;
IKE Proposal List :
#1: Chiper: 3DES, Hash: MD5;
#2: Chiper: 3DES, Hash: MD5;
#3: Chiper: 3DES, Hash: MD5;
#4: Chiper: 3DES, Hash: MD5;
#5: Chiper: 3DES, Hash: MD5;
IKE Lifetime : 28800 Seconds;
#
PHASE 2:
PFS Enable: да Perfect Forward Secrecy PFS;
PFS DH Group: 2 - modp 1024 bit;
IPSec Proposal List :
#1: Chiper: 3DES, Hash: MD5;
#2: Chiper: 3DES, Hash: MD5;
#3: Chiper: 3DES, Hash: MD5;
#4: Chiper: 3DES, Hash: MD5;
#5: Chiper: 3DES, Hash: MD5;
IPSec Lifetime : 3600 Seconds;

Сохраняем, на этом настройка закончена.

Что такое VPN?

Меня всегда забавляло, когда операторы гордо заявляли о том, что они являются провайдерами услуги VPN (раз, дватри).

VPN — это технология, позволяющая объединить частные сети, располженные в разных уголках земли в единую сеть. Например, обеспечить пиринг между сетями офисов в Москве (192.168.77.0/24) и Новосибирске (192.168.54.0/24).

Сама по себе услуга «от провайдера» — это избавление от необходимости покупки соответствующего оборудования.

В любом случае сеть VPN можно организовать самостоятельно, используя пакет Openswan на Linux и/или оборудование типа D–Link DIR–130. При этом, это будет настоящая частная сеть с шифрованием данных.

Я оказываю платные консультации по организации сетей VPN (настройки програмного обеспечения Openswan и оборудования). Пишите ваш запрос на mail@ksn.name.