19 11/14
00:47

IPsec между Linux и Mikrotik.

Объединяем два офиса с помощью шифрованного туннеля. В первом офисе роутером является 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, удалив две строки и исправив три:

keyexchange=ikev1
pfs=no
forceencaps=yes
auto=start

left=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


You must be logged in to post a comment.