Объединяем два офиса с помощью шифрованного туннеля. В первом офисе роутером является Mikrotik, во втором сервер с Linux. На сервере установлена Ubuntu 12.04, на которой будет установлен и настроен openswan. Поскольку IP на обоих концах фиксированные и дополнительных подключающихся по vpn клиентов не планируется, L2TP использовать не будем. Только чистый IPSec.
Первый офис. Сеть 192.168.100.0/24.
Компьютер на Linux c двумя интерфейсами:
- Внутренний 192.168.100.1
- Внешний xxx.xxx.xxx.xxx
Второй офис. Сеть 192.168.200.0/24.
Mikrotik с двумя интерфейсами:
- Внутренний 192.168.200.1
- Внешний yyy.yyy.yyy.yyy
Настройки на микротике просты до безобразия. Всего две строки:
/ip ipsec peer add address=xxx.xxx.xxx.xxx/32 enc-algorithm=3des \ generate-policy=port-override hash-algorithm=md5 lifetime=1h secret=MYSECRETPASSWORD /ip firewall nat add chain=srcnat dst-address=192.168.100.0/24 src-address=192.168.200.0/24 \ place-before=0
Первая строка создаёт соединение. Вторая – отключает NAT для трафика между офисами.
Больше ничего настраивать не надо. Как только микротик увидит свою вторую половину, он сам поймёт, какие полиси надо создать.
На линуксе следует поставить openswan (или strongswan, см. внизу страницы):
# apt-get install openswan
Добавить две строки в /etc/rc.local:
for i in `ls /proc/sys/net/ipv4/conf/*/send_redirects`; do echo 0 > $i; done for i in `ls /proc/sys/net/ipv4/conf/*/accept_redirects`; do echo 0 > $i; done
И положить два файла в /etc:
1. /etc/ipsec.conf
config setup nat_traversal=yes protostack=netkey uniqueids=yes force_keepalive=yes keep_alive=60 oe=off nhelpers=0 conn mikrotik type=tunnel keyingtries=0 disablearrivalcheck=no authby=secret esp=aes-sha1 ike=3des-md5-modp1024 ikelifetime=1h salifetime=1h keyexchange=ike pfs=no forceencaps=yes auto=start left=xxx.xxx.xxx.xxx leftsourceip=192.168.100.1 leftsubnet=192.168.100.0/24 right=yyy.yyy.yyy.yyy rightsourceip=192.168.200.1 rightsubnet=192.168.200.0/24
Если не указать leftsourceip и rightsourceip, то openswan будет инкапсулировать только проходящие через сервер пакеты. Как следствие, весь locally-generated трафик, посылаемый в сеть другого офиса, будет улетать в никуда. Если так получилось, что из одного офиса пингуются все компьютеры другого офиса, кроме сервера, то первым делом стоит проверить, правильно ли указаны leftsourceip и rightsourceip. Это должны быть внутренние IP-адреса роутеров.
Ещё важный нюанс – ikelifetime и salifetime. Они должны совпадать с lifetime, указанном на микротике. Если установить разные значения, то соединение установится, но через некоторое время разорвется.
2. /etc/ipsec.secrets
xxx.xxx.xxx.xxx yyy.yyy.yyy.yyy : PSK "MYSECRETPASSWORD"
Поскольку сервер настроен на раздачу интернета (SNAT или MASQUERADE), то осталось добавить правило, исключающее нат для трафика между офисами:
#iptables -t nat -I POSTROUTING 1 -s 192.168.100.0/24 -d 192.168.200.0/24 -j ACCEPT
Запускаем openswan:
service ipsec start
Бонус-пак. Полезные команды для разбора полетов.
/etc/init.d/ipsec status
# ipsec auto --status
# ipsec verify
Обновление от 2016-04-06.
Что делать, если вместо openswan в дистрибутиве есть только strongswan.
Немного поправить ipsec.conf, удалив две строки и исправив три:
Tags: Copy-Paste HOWTOkeyexchange=ikev1
pfs=no
forceencaps=yes
auto=startleft=xxx.xxx.xxx.xxx
leftsourceip=192.168.100.1
leftsubnet=192.168.100.1/24
right=yyy.yyy.yyy.yyy
rightsourceip=192.168.200.1
rightsubnet=192.168.200.1/24