IPIP IPsec VPN tunnel i le va o masini Linux ma Mikrotik i tua o le NAT

Linux: Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-91-generic x86_64)

  • Eth0 1.1.1.1/32 IP fafo
  • ipip-ipsec0 192.168.0.1/30 o le a avea ma a tatou alavai

Miktoik: CCR 1009, RouterOS 6.46.5

  • Eth0 10.0.0.2/30 IP totonu mai le kamupani. O le NAT IP fafo a le kamupani e tu'uina atu e malosi.
  • ipip-ipsec0 192.168.0.2/30 o le a avea ma a tatou alavai

Matou te fatuina se alalaupapa IPsec i luga o se masini Linux e faʻaaoga ai le racoon. O le a ou le faʻamatalaina auiliiliga, o loʻo i ai se mea lelei se tusiga у vvpoloskin.

Fa'apipi'i afifi mana'omia:

sudo install racoon ipsec-tools

Matou te faʻapipiʻiina racoon, o le a galue faʻapitoa e pei o se ipsec server. Talu ai e le mafai e le mikrotik i le autu autu ona tuʻuina atu se faʻamatalaga faʻaopoopo tagata faʻatau, ma o le tuatusi IP i fafo lea e fesoʻotaʻi atu ai i Linux e malosi, e faʻaaoga ai se ki muaʻi (faʻatagaina upu) o le a le aoga, talu ai e tatau ona fetaui le upu faʻamaonia ma le tuatusi IP o le 'au fa'afeso'ota'i, po'o le fa'asinomaga.

O le a matou faʻaaogaina le faʻatagaina e faʻaaoga ai ki RSA.

E fa'aoga e le racoon daemon ki i le RSA format, ma fa'aogaina e mikrotik le fa'atulagaina PEM. Afai e te gaosia ki e faʻaaoga ai le faʻaogaina o le plainrsa-gen e sau ma le racoon, o le a le mafai ona e faʻaliliuina le ki lautele mo Mikrotika i le PEM format ma lana fesoasoani - e liliu naʻo le tasi itu: PEM i le RSA. E le mafai e le openssl poʻo le ssh-keygen ona faitau le ki na faia e plainrsa-gen, o lea e le mafai ai foi ona faʻaaogaina le liua.

O le a matou fatuina se ki PEM e faʻaaoga ai openssl ona faʻaliliu lea mo le racoon e faʻaaoga ai plainrsa-gen:

#  Генерируем ключ
openssl genrsa -out server-name.pem 1024
# Извлекаем публичный ключ
openssl rsa -in server-name.pem -pubout > server-name.pub.pem
# Конвертируем
plainrsa-gen -i server-name.pem -f server-name.privet.key
plainrsa-gen -i server-name.pub.pem -f server-name.pub.key

O le a matou tuʻuina ki na maua i totonu o le pusa: /etc/racoon/certs/server. Aua nei galo e seti le e ona le tagata faʻaoga i lalo o lona igoa o le racoon daemon e faʻalauiloa (masani aʻa) i le 600 faʻatagaga.

O le a ou faʻamatalaina le seti mikrotik pe a faʻafesoʻotaʻi e ala i WinBox.

Tu'u mai le server-name.pub.pem ki i mikrotik: Menu “File” - “Upload”.

Tatala le vaega "IP" - "IP sec" - "Ki" tab. O lea ua matou fa'atupuina ki - o le "Generate Key" fa'amau, ona fa'aulufale atu lea o le microtika public key "Expor Pub. Key", e mafai ona e sii maia mai le vaega "Files", kiliki-i luga o le faila - "Download".

Matou te faʻaulufale mai le racoon public key, "Import", i le lisi pa'ū i lalo o le "File name" fanua matou te suʻeina le server-name.pub.pem na matou siiina muamua.

E mana'omia le fa'aliliuina ole ki fa'alaua'itele mikrotik

plainrsa-gen -i mikrotik.pub.pem -f mikrotik.pub.key

ma tuu i totonu o le /etc/racoon/certs folder, aua nei galo e ona ma aia tatau.

Racoon config ma faʻamatalaga: /etc/racoon/racoon.conf

log info; # Уровень логирования, при отладке используем Debug или Debug2.

listen {

    isakmp 1.1.1.1 [500]; # Адрес и порт, на котором будет слушать демон.
    isakmp_natt 1.1.1.1 [4500]; # Адрес и порт, на котором будет слушать демон для клиентов за NAT.
    strict_address; # Выполнять обязательную проверку привязки к указанным выше IP.
}

path certificate "/etc/racoon/certs"; # Путь до папки с сертификатами.

remote anonymous { # Секция, задающая параметры для работы демона с ISAKMP и согласования режимов с подключающимися хостами. Так как IP, с которого подключается Mikrotik, динамический, то используем anonymous, что разрешает подключение с любого адреса. Если IP у хостов статический, то можно указать конкретный адрес и порт.

    passive on; # Задает "серверный" режим работы демона, он не будет пытаться инициировать подключения.
    nat_traversal on; # Включает использование режима NAT-T для клиентов, если они за NAT. 
    exchange_mode main; # Режим обмена параметрами подключения, в данном случае ---согласование.
    my_identifier address 1.1.1.1; # Идентифицируем наш linux хост по его ip адресу.
    certificate_type plain_rsa "server/server-name.priv.key"; # Приватный ключ сервера.
    peers_certfile plain_rsa "mikrotik.pub.key"; # Публичный ключ Mikrotik.

    proposal_check claim; # Режим согласования параметров ISAKMP туннеля. Racoon будет использовать значения подключающегося хоста (инициатора) для срока действия сессии                   и длины ключа, если его срок действия сессии больше, или длина его ключа короче, чем у инициатора. Если срок действия сессии короче, чем у инициатора, racoon использует собственное значение срока действия сессии и будет отправлять сообщение RESPONDER-LIFETIME.
    proposal { # Параметры ISAKMP туннеля.

        encryption_algorithm aes; # Метод шифрования ISAKMP туннеля.
        hash_algorithm sha512; # Алгоритм хеширования, используемый для ISAKMP туннеля.
        authentication_method rsasig; # Режим аутентификации для ISAKMP туннеля - по RSA ключам.
        dh_group modp2048; # Длина ключа для алгоритма Диффи-Хеллмана при согласовании ISAKMP туннеля.
        lifetime time 86400 sec; Время действия сессии.
    }

    generate_policy on; # Автоматическое создание ESP туннелей из запроса, пришедшего от подключающегося хоста.
}

sainfo anonymous { # Параметры ESP туннелей, anonymous - указанные параметры будут использованы как параметры по умолчанию. Для разных клиентов, портов, протоколов можно              задавать разные параметры, сопоставление происходит по ip адресам, портам, протоколам.

    pfs_group modp2048; # Длина ключа для алгоритма Диффи-Хеллмана для ESP туннелей.
    lifetime time 28800 sec; # Срок действия ESP туннелей.
    encryption_algorithm aes; # Метод шифрования ESP туннелей.
    authentication_algorithm hmac_sha512; # Алгоритм хеширования, используемый для аутентификации ESP туннелей.
    compression_algorithm deflate; # Сжимать передаваемые данные, алгоритм сжатия предлагается только один.
}

mikrotik config

Toe fo'i i le vaega "IP" - "IPsec"

"Profiles" tab
Parakalafa
tāua

igoa
I lau pule faitalia (e ala i le faaletonu)

Hash Algorithm
sha512

Algoritm fa'ailoga
aes-128

DH-Vaega
modp2048

Proposhal_check
āiā

olaga Atoa
1d 00:00:00

NAT Traversal
moni (siaki le pusa)

DPD
120

DPD Ole maualuga ole toilalo
5

Peers tab
Parakalafa
tāua

igoa
I lau pule faitalia (e ta'ua mulimuli ane o MyPeer)

Address
1.1.1.1 (Masini IP Linux)

Tuatusi Fa'alotoifale
10.0.0.2 (IP WAN interface mikrotik)

tino mai
Leai se totogi

Faiga Faʻafesuiaʻi
tele

Faʻasalaga
sese

Lafo INITIAL_CONTACT
moni

Fa'ailoga Fautuaga
Parakalafa
tāua

igoa
I lau pule faitalia (e ta'ua mulimuli ane o MyPeerProposal)

Auth. Algorithms
sha512

Encr. Algorithms
aes-128-cbc

olaga Atoa
08:00:00

Vaega PFS
modp2048

"Identities" tab
Parakalafa
tāua

Paʻaga
La'u Peer

Atu. Metotia
rsa ki

Key
mikrotik.privet.key

Ki Mamao
server-name.pub.pem

Vaega o Faiga Fa'avae
Leai se totogi

Notrack filifili
gaogao

La'u ID Ituaiga
taʻavale

Ituaiga ID Mamao
taʻavale

Faafetaui E
id mamao

Faiga Fa'atonu
gaogao

Fausia Faiga Faavae
leai

Tab "Faiga Faʻavae - Lautele"
Parakalafa
tāua

Paʻaga
La'u Peer

Vaitafe
moni

Src. tuatusi
192.168.0.0/30

Dest. tuatusi
192.168.0.0/30

Maliega
255 (uma)

mamanu
sese

Tab "Faiga Faʻavae - Faʻatinoga"
Parakalafa
tāua

faatinoga
faʻailoga

Laʻasaga
mana'omia

IPsec Protocols
esp

Fautuaga
MyPeerProposal

E foliga mai, pei o aʻu, o loʻo e faʻapipiʻiina le snat / masquerade i luga o lau WAN interface; o lenei tulafono e manaʻomia ona fetuunai ina ia alu ese atu pusa ipsec i totonu o la matou alavai:
Alu i le vaega "IP" - "Firewall".
"NAT" tab, tatala la matou tulafono faʻapipiʻi/masquerade.

Avanoa Avanoa
Parakalafa
tāua

Faiga Fa'avae IPsec
fafo: leai

Toe amata le temoni racoon

sudo systemctl restart racoon

Afai e le amata le racoon i le toe amataina, ona i ai lea o se mea sese i le config; i le syslog, faʻaalia e le racoon faʻamatalaga e uiga i le numera laina lea na iloa ai le mea sese.

A faʻapipiʻi le OS, e amata le racoon daemon aʻo leʻi faʻatupuina fesoʻotaʻiga fesoʻotaʻiga, ma matou faʻamaonia le filifiliga strict_address i le vaega faʻalogo; e tatau ona e faʻaopoopo le racoon unit i le systemd file
/lib/systemd/system/racoon.service, i le vaega [Iunite], laina After=network.target.

Ole taimi nei e tatau ona i luga a tatou ipsec tunnels, vaʻai i le gaioiga:

sudo ip xfrm policy

src 192.168.255.0/30 dst 192.168.255.0/30 
    dir out priority 2147483648 
    tmpl src 1.1.1.1 dst "IP NAT через который подключается mikrotik"
        proto esp reqid 0 mode tunnel
src 192.168.255.0/30 dst 192.168.255.0/30 
    dir fwd priority 2147483648 
    tmpl src "IP NAT через который подключается mikrotik" dst 1.1.1.1
        proto esp reqid 0 mode tunnel
src 192.168.255.0/30 dst 192.168.255.0/30 
    dir in priority 2147483648 
    tmpl src "IP NAT через который подключается mikrotik" dst 1.1.1.1
        proto esp reqid 0 mode tunnel

Afai e le o i luga alavai, va'ai i le syslog, po'o le journalctl -u racoon.

Ole taimi nei e te manaʻomia le faʻapipiʻiina o fesoʻotaʻiga L3 ina ia mafai ai ona faʻaogaina auala. E i ai filifiliga eseese, o le a matou faʻaogaina le IPIP, talu ai e lagolagoina e mikrotik, o le a ou faʻaaogaina vti, ae, o le mea e leaga ai, e leʻi faʻatinoina i mikrotik. E ese mai le IPIP ona e mafai ona faʻapipiʻi faʻapipiʻi multicast ma tuʻu fwmarks i luga o paʻu, lea e mafai ai ona faʻamama i iptables ma iproute2 (faiga faʻavae faʻavae). Afai e te manaʻomia le maualuga o galuega, ona, mo se faʻataʻitaʻiga, GRE. Ae aua neʻi galo matou te totogia mo galuega faʻaopoopo ma se ulu ulu tele.

E mafai ona e vaʻai i le faʻaliliuga o se iloiloga lelei o fesoʻotaʻiga tunnel iinei.

I luga ole Linux:

# Создаем интерфейс
sudo ip tunnel add ipip-ipsec0 local 192.168.255.1 remote 192.168.255.2 mode ipip
# Активируем
sudo ip link set ipip-ipsec0 up
# Назначаем адрес
sudo ip addr add 192.168.255.1/30 dev ipip-ipsec0

Ole taimi nei e mafai ona e fa'aopoopo auala mo feso'ota'iga i tua o mikrotik

sudo ip route add A.B.C.D/Prefix via 192.168.255.2

Ina ia mafai ona siitia a tatou atinaʻe ma auala pe a uma le toe faʻafouina, e manaʻomia ona tatou faʻamatalaina le atinaʻe i /etc/network/interfaces ma faʻaopopo auala iina i le post-up, pe tusi mea uma i se faila e tasi, mo se faʻataʻitaʻiga, /etc/ ipip-ipsec0.conf ma toso i luga o le post-up, aua neʻi galo e uiga i le faila faila, aia tatau ma faʻatinoina.

Lalo o se faʻataʻitaʻiga faila

#!/bin/bash
ip tunnel add ipip-ipsec0 local 192.168.255.1 remote 192.168.255.2 mode ipip
ip link set ipip-ipsec0 up
ip addr add 192.168.255.1/30 dev ipip-ipsec0

ip route add A.B.C.D/Prefix via 192.168.255.2

luga o Mikrotik:

Vaega "Fesoasoani", faʻaopoopo se atinaʻe fou "IP tunnel":

Tab "IP tunnel" - "Aoao"
Parakalafa
tāua

igoa
I lau pule faitalia (e ta'ua mulimuli ane o le IPIP-IPsec0)

TAGATA
1480 (pe a le faʻamaonia, e amata ona tipi le mikrotik i le 68)

Tuatusi Fa'alotoifale
192.168.0.2

Tuatusi Mamao
192.168.0.1

IPsec Secret
Taofi le fanua (a leai o le a faia se Peer fou)

Taofiofi
Faʻagata le fanua (a leai o le a tape pea le atinaʻe, talu ai o le mikrotika e iai lana lava faatulagaga mo nei afifi ma e le galue ma Linux)

DSCP
mautofi

Aua le Vaevae
leai

Oomi TCP MSS
moni

Fa'ataga le Ala Anapogi
moni

Vaega “IP” – “Addresses”, faaopoopo le tuatusi:

Parakalafa
tāua

Address
192.168.0.2/30

Ofisa
IPIP-IPsec0

Ole taimi nei e mafai ona e faʻaopoopo auala i le fesoʻotaʻiga i tua o se masini Linux; pe a faʻaopoopo se auala, o le faitotoa o le a avea ma a tatou IPIP-IPsec0 interface.

PS

Talu ai o la matou Linux server o loʻo faʻaaogaina, e talafeagai le setiina o le Clamp TCP MSS parakalafa mo fesoʻotaʻiga ipip i luga:

fatu se faila /etc/iptables.conf ma mea nei:

*mangle
-A POSTROUTING -o ipip+ -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
COMMIT

ma i totonu /etc/network/interfaces
post-up iptables-restore </etc/iptables.conf

O loʻo ou tamoʻe le nginx i luga o le upega tafaʻilagi i tua o mikrotik (ip 10.10.10.1), faʻaoga mai le Initaneti, faʻaopoopo i /etc/iptables.conf:

*nat
-A PREROUTING -d 1.1.1.1/32 -p tcp -m multiport --dports 80,443 -j DNAT --to-destination 10.10.10.1
#На mikrotik, в таблице mangle, надо добавить правило route с назначением 192.168.0.1 для пакетов с адресом источника 10.10.10.1 и портов 80, 443.

# Так же на linux работает OpenVPN сервер 172.16.0.1/24, для клиентов которые используют подключение к нему в качестве шлюза даем доступ в интернет
-A POSTROUTING -s 172.16.0.0/24 -o eth0 -j SNAT --to-source 1.1.1.1
COMMIT 

Aua ne'i galo e fa'aopoopo le fa'atagaga talafeagai i iptables pe afai e mafai ona e fa'amama pepa.

Ia soifua maloloina!

puna: www.habr.com

Faaopoopo i ai se faamatalaga