Мы с друзьями активно используем технологии построения частных сетей 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;
Сохраняем, на этом настройка закончена.