IPIP IPsec VPN tinèl ant machin Linux ak Mikrotik dèyè founisè NAT

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

  • Eth0 1.1.1.1/32 ekstèn IP
  • ipip-ipsec0 192.168.0.1/30 pral tinèl nou an

Miktoik: CCR 1009, RouterOS 6.46.5

  • Eth0 10.0.0.2/30 IP entèn nan men founisè a. IP NAT ekstèn founisè a dinamik.
  • ipip-ipsec0 192.168.0.2/30 pral tinèl nou an

Nou pral kreye yon tinèl IPsec sou yon machin Linux lè l sèvi avèk racoon. Mwen pa pral dekri detay yo, gen yon bon youn atik у vvpoloskin.

Enstale pakè ki nesesè yo:

sudo install racoon ipsec-tools

Nou konfigirasyon racoon, li pral kondisyonèl aji kòm yon sèvè ipsec. Piske mikrotik nan mòd prensipal pa ka transmèt yon idantifyan kliyan adisyonèl, epi adrès IP ekstèn nan kote li konekte ak Linux se dinamik, lè l sèvi avèk yon kle pre-pataje (otorizasyon modpas) pa pral travay, paske modpas la dwe matche swa ak adrès IP la nan. lame a konekte, oswa ak idantifyan.

Nou pral sèvi ak otorizasyon lè l sèvi avèk kle RSA.

Racoon daemon sèvi ak kle nan fòma RSA a, ak mikrotik sèvi ak fòma PEM la. Si ou jenere kle lè l sèvi avèk sèvis piblik plainrsa-gen ki vini ak racoon, Lè sa a, ou pa pral kapab konvèti kle piblik la pou Mikrotika nan fòma PEM avèk èd li - li konvèti sèlman nan yon direksyon: PEM nan RSA. Ni openssl ni ssh-keygen pa t 'kapab li kle ki te pwodwi pa plainrsa-gen, kidonk konvèsyon an pa pral posib lè l sèvi avèk yo tou.

Nou pral jenere yon kle PEM lè l sèvi avèk openssl ak Lè sa a, konvèti li pou racoon lè l sèvi avèk 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

Nou pral mete kle yo resevwa nan katab la: /etc/racoon/certs/server. Pa bliye mete pwopriyetè itilizatè a sou non ki gen demon racoon lanse (anjeneral rasin) sou 600 otorizasyon.

Mwen pral dekri konfigirasyon mikrotik la lè w konekte atravè WinBox.

Voye kle a server-name.pub.pem nan mikrotik: Meni "Fichiye" - "Telechaje".

Louvri seksyon "IP" - "IP sec" - "Kle" tab. Koulye a, nou jenere kle - bouton "Generate Key", Lè sa a, ekspòte kle piblik mikrotika "Expor Pub. Kle", ou ka telechaje li nan seksyon "Fichiye", klike sou dosye a - "Download".

Nou enpòte kle piblik racoon, "Enpòte", nan lis deroule nan jaden "File name" nou chèche server-name.pub.pem nou telechaje pi bonè.

Kle piblik mikrotik la bezwen konvèti

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

epi mete l nan katab /etc/racoon/certs, san bliye pwopriyetè a ak dwa yo.

konfigirasyon racoon ak kòmantè: /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 konfigirasyon

Retounen nan seksyon "IP" - "IPsec"

Tab "Pwofil".
Paramèt
Valè

Non
Dapre diskresyon ou (pa default)

Hash Algorithm
Sha512

Algoritm chifreman
aes-128

DH-Gwoup
modp2048

Proposhal_check
reklame

Tout lavi
1j 00:00:00

NAT Traversal
vre (tcheke bwat la)

DPD
120

DPD Maksimòm echèk
5

Kanmarad tab
Paramèt
Valè

Non
Dapre diskresyon ou (ki refere yo kòm MyPeer)

adrès
1.1.1.1 (IP Linux machin)

Adrès lokal
10.0.0.2 (IP WAN koòdone mikrotik)

Profile
default

Mode Echanj
prensipal

Pasif
fo

Voye INITIAL_CONTACT
vrè

Tab Pwopozisyon
Paramèt
Valè

Non
Dapre diskresyon ou (ki refere yo kòm MyPeerProposal)

Otorite. Algoritm
Sha512

Enkr. Algoritm
aes-128-cbc

Tout lavi
08:00:00

Gwoup PFS
modp2048

Tab "Idantite".
Paramèt
Valè

Ant elèv yo
MyPeer

Atuh. Metòd
kle rsa

Kle
mikrotik.privet.key

Remote kle
server-name.pub.pem

Gwoup modèl politik
default

Notrack chèn
vid

Kalite ID mwen an
oto

Kalite ID Remote
oto

Match By
id aleka

Konfigirasyon mòd
vid

Jenere Policy
pa gen okenn

Tab "Règleman - Jeneral"
Paramèt
Valè

Ant elèv yo
MyPeer

tinèl
vrè

Src. Adrès
192.168.0.0/30

Dest. Adrès
192.168.0.0/30

Pwotokòl
255 (tout)

modèl
fo

Tab "Règleman - Aksyon"
Paramèt
Valè

Aksyon
ankripte

Nivo
mande

Pwotokòl IPsec
esp

Pwopozisyon
MyPeerProposal

Gen plis chans, tankou mwen, ou te konfigirasyon snat/masquerade sou koòdone WAN ou a; règ sa a bezwen ajiste pou pake ipsec sortan yo antre nan tinèl nou an:
Ale nan seksyon "IP" - "Firewall".
Onglet "NAT", louvri règ snat/masquerade nou an.

Tab Avanse
Paramèt
Valè

Règleman IPsec
soti: okenn

Rekòmanse move lespri raton an

sudo systemctl restart racoon

Si racoon pa kòmanse lè rekòmanse, lè sa a gen yon erè nan konfigirasyon an; nan syslog, racoon montre enfòmasyon sou nimewo liy kote erè a te detekte.

Lè sistèm eksplwatasyon an demare, demon racoon la kòmanse anvan koòdone rezo yo parèt, epi nou espesifye opsyon strik_address nan seksyon koute a; ou bezwen ajoute inite racoon nan fichye systemd la.
/lib/systemd/system/racoon.service, nan seksyon [Inite], liy After=network.target.

Koulye a, tinèl ipsec nou yo ta dwe leve, gade pwodiksyon an:

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

Si tinèl yo pa leve, gade syslog, oswa journalctl -u racoon.

Koulye a, ou bezwen konfigirasyon interfaces L3 pou trafik yo ka dirije. Gen diferan opsyon, nou pral sèvi ak IPIP, depi mikrotik sipòte li, mwen ta itilize vti, men, malerezman, li poko aplike nan mikrotik. Li diferan de IPIP nan ke li ka anplis enkapsile multicast epi mete fwmarks sou pake, pa ki yo ka filtre nan iptables ak iproute2 (routage ki baze sou politik). Si ou bezwen fonksyonalite maksimòm, lè sa a, pou egzanp, GRE. Men, pa bliye ke nou peye pou fonctionnalités adisyonèl ak yon gwo tèt anlè.

Ou ka wè tradiksyon an nan yon revizyon bon nan entèfas tinèl isit la.

Sou 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

Koulye a, ou ka ajoute wout pou rezo dèyè mikrotik

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

Nan lòd pou koòdone nou yo ak wout yo dwe leve soti vivan apre yon rdemare, nou bezwen dekri koòdone a nan /etc/network/interfaces epi ajoute wout la nan post-up la, oswa ekri tout bagay nan yon sèl dosye, pou egzanp, /etc/ ipip-ipsec0.conf epi rale li nan post-up, pa bliye sou mèt kay la dosye, dwa epi fè li ègzèkutabl.

Anba a se yon egzanp dosye

#!/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

Sou Mikrotik:

Seksyon "Entèfas", ajoute yon nouvo koòdone "IP tinèl":

Tab "IP tinèl" - "Jeneral"
Paramèt
Valè

Non
Dapre diskresyon ou (ki refere yo kòm IPIP-IPsec0)

Mtu
1480 (si yo pa espesifye, mikrotik kòmanse koupe mtu a 68)

Adrès lokal
192.168.0.2

Adrès Remote
192.168.0.1

IPsec sekrè
Dezaktive jaden an (otreman yo pral kreye yon nouvo Peer)

kenbe vivan
Dezaktive jaden an (otreman koòdone a ap toujou ap fèmen, paske mikrotika gen pwòp fòma li pou pakè sa yo epi li pa travay ak Linux)

DSCP
eritye

Pa Fragmente
pa gen okenn

Kranpon TCP MSS
vrè

Pèmèt chemen rapid
vrè

Seksyon "IP" - "Adrès", ajoute adrès la:

Paramèt
Valè

adrès
192.168.0.2/30

Entèfas
IPIP-IPsec0

Koulye a, ou ka ajoute wout nan rezo a dèyè yon machin Linux; lè w ajoute yon wout, pòtay pral koòdone IPIP-IPsec0 nou an.

PS

Depi sèvè Linux nou an se tranzitif, li fè sans pou mete paramèt Clamp TCP MSS pou interfaces ipip sou li:

kreye yon fichye /etc/iptables.conf ak sa ki annapre yo:

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

ak nan /etc/network/interfaces
post-up iptables-restore < /etc/iptables.conf

Mwen gen nginx kouri sou rezo a dèyè mikrotik (ip 10.10.10.1), fè li aksesib sou entènèt la, ajoute li nan /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 

Pa bliye ajoute otorizasyon ki apwopriye yo nan iptables si ou gen filtè pake aktive.

Fè sante!

Sous: www.habr.com

Add nouvo kòmantè