IPIP IPsec VPN umhubhe phakathi komshini we-Linux ne-Mikrotik ngemuva komhlinzeki we-NAT

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

  • I-Eth0 1.1.1.1/32 IP yangaphandle
  • ipip-ipsec0 192.168.0.1/30 izoba umhubhe wethu

Miktoik: I-CCR 1009, i-RouterOS 6.46.5

  • I-Eth0 10.0.0.2/30 IP yangaphakathi evela kumhlinzeki. I-IP yangaphandle ye-NAT yomhlinzeki inamandla.
  • ipip-ipsec0 192.168.0.2/30 izoba umhubhe wethu

Sizodala umhubhe we-IPsec emshinini we-Linux sisebenzisa i-racoon. Ngeke ngichaze imininingwane, kukhona okuhle indatshana у i-vvpoloskin.

Faka amaphakheji adingekayo:

sudo install racoon ipsec-tools

Silungiselela i-racoon, izosebenza ngokwemibandela njengeseva ye-ipsec. Njengoba i-mikrotik ekwimodi eyinhloko ingakwazi ukudlulisa isihlonzi seklayenti esengeziwe, nekheli le-IP langaphandle elixhuma ngalo ku-Linux linamandla, ukusebenzisa ukhiye owabelwe ngaphambili (ukugunyazwa kwephasiwedi) ngeke kusebenze, njengoba iphasiwedi kufanele ifaniswe nekheli le-IP umsingathi oxhumayo, noma ngesihlonzi.

Sizosebenzisa ukugunyazwa sisebenzisa okhiye be-RSA.

I-racoon daemon isebenzisa okhiye ngefomethi ye-RSA, futhi i-mikrotik isebenzisa ifomethi ye-PEM. Uma ukhiqiza okhiye usebenzisa insiza ye-plainrsa-gen eza ne-racoon, lapho-ke ngeke ukwazi ukuguqula ukhiye wasesidlangalaleni we-Mikrotika ube yifomethi ye-PEM ngosizo lwayo - iguqulela ohlangothini olulodwa kuphela: i-PEM ukuya ku-RSA. Ayikho i-openssl noma i-ssh-keygen engakwazi ukufunda ukhiye okhiqizwe yi-plainrsa-gen, ngakho-ke ukuguqulwa ngeke kwenzeke ukuwasebenzisa futhi.

Sizokhiqiza ukhiye we-PEM sisebenzisa i-openssl bese siyiguqulela i-racoon sisebenzisa i-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

Sizofaka okhiye abatholiwe kufolda: /etc/racoon/certs/server. Ungakhohlwa ukusetha umnikazi womsebenzisi okuqanjwe ngaphansi kwegama lakhe i-racoon daemon (imvamisa impande) kuya kuzimvume ezingu-600.

Ngizochaza ukusethwa kwe-mikrotik lapho uxhuma nge-WinBox.

Layisha ukhiye we-server-name.pub.pem ku-mikrotik: Imenyu “Amafayela” - “Layisha”.

Vula ingxenye ethi “IP” - “IP sec” - “Okhiye” ithebhu. Manje sikhiqiza okhiye - inkinobho "Yenza ukhiye", bese sithekelisa ukhiye wasesidlangalaleni we-mikrotika "Expor Pub. Ukhiye", ungayilanda engxenyeni ethi "Amafayela", chofoza kwesokudla efayeleni - "Landa".

Singenisa ukhiye osesidlangalaleni we-racoon, "Ngenisa", kuhlu oluya phansi lwenkambu ethi "Igama lefayela" sibheka i-server-name.pub.pem esiyilande ngaphambilini.

Ukhiye osesidlangalaleni we-mikrotik udinga ukuguqulwa

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

futhi uyibeke kufolda /etc/racoon/certs, ungakhohlwa ngomnikazi namalungelo.

i-racoon config namazwana: /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; # Сжимать передаваемые данные, алгоритм сжатия предлагается только один.
}

i-mikrotik config

Buyela esigabeni esithi "IP" - "IPsec"

"Amaphrofayili".
Ipharamitha
Okushoyo

Igama
Ngokubona kwakho (ngokuzenzakalelayo)

I-Hash Algorithm
sha512

I-algorithm yokubethela
ibe-128

I-DH-Group
isiqephu 2048

I-Proposhal_check
Faka isicelo

Ukuphila konke
1d 00:00:00

Ukuhamba kwe-NAT
iqiniso (hlola ibhokisi)

I-DPD
120

Ukwehluleka okukhulu kwe-DPD
5

Ithebhu yontanga
Ipharamitha
Okushoyo

Igama
Ngokubona kwakho (okuzobizwa kamuva ngokuthi MyPeer)

Ikheli
1.1.1.1 (imishini ye-IP Linux)

Ikheli Lendawo
10.0.0.2 (IP WAN interface mikrotik)

Profile
ezenzakalelayo

Imodi Yokushintshana
main

I-Passive
bamanga

Thumela u-INITIAL_CONTACT
weqiniso

Ithebhu yesiphakamiso
Ipharamitha
Okushoyo

Igama
Ngokubona kwakho (okuzobizwa kamuva ngokuthi MyPeerProposal)

I-Auth. Ama-algorithms
sha512

Encr. Ama-algorithms
i-es-128-cbc

Ukuphila konke
08:00:00

Iqembu le-PFS
isiqephu 2048

"Identity" ithebhu
Ipharamitha
Okushoyo

asinge
Ntanga Yami

Athu. Indlela
rsa ukhiye

Key
mikrotik.privet.key

Ukhiye Okude
iseva-igama.pub.pem

Iqembu Lesifanekiso Senqubomgomo
ezenzakalelayo

I-Notrack Chain
ayinalutho

Uhlobo lwe-ID yami
imoto

Uhlobo lwe-ID yesilawuli kude
imoto

Fanisa Nge
id yerimothi

Ukucushwa Kwemodi
ayinalutho

Khiqiza Inqubomgomo
cha

Ithebhu "Izinqubomgomo - Okujwayelekile"
Ipharamitha
Okushoyo

asinge
Ntanga Yami

Umhubhe
weqiniso

Src. Ikheli
192.168.0.0/30

I-Dest. Ikheli
192.168.0.0/30

uHlelo Lokudlulisa
255 (bonke)

Isifanekiso
bamanga

Ithebhu "Izinqubomgomo - Isenzo"
Ipharamitha
Okushoyo

Action
ukubethela

Izinga
dinga

IPsec Protocols
esp

Isiphakamiso
I-MyPeerProposal

Cishe, njengami, une-snat/masquerade elungiselelwe ku-WAN interface yakho; lo mthetho udinga ukulungiswa ukuze amaphakethe e-ipsec aphumayo angene emhubheni wethu:
Iya engxenyeni ethi "IP" - "Firewall".
"NAT", vula umthetho wethu we-snat/masquerade.

Ithebhu Ethuthukisiwe
Ipharamitha
Okushoyo

Inqubomgomo ye-IPsec
ngaphandle: akukho

Iqala kabusha idemoni le-racoon

sudo systemctl restart racoon

Uma i-racoon ingaqali lapho iqala kabusha, khona-ke kukhona iphutha ku-config; ku-syslog, i-racoon ibonisa ulwazi mayelana nenombolo yomugqa lapho iphutha litholwe khona.

Lapho amabhuzu e-OS eqala, i-racoon daemon iqala ngaphambi kokuthi kuboniswe ukuxhumana kwenethiwekhi, futhi sacacisa inketho ye-strict_address esigabeni sokulalela; udinga ukwengeza iyunithi ye-racoon kufayela le-systemd.
/lib/systemd/system/racoon.service, esigabeni [Iyunithi], umugqa After=network.target.

Manje imigudu yethu ye-ipsec kufanele iphakame, bheka okukhiphayo:

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

Uma imigudu ingekho phezulu, bheka i-syslog, noma i-journalctl -u racoon.

Manje udinga ukumisa ukuxhumana kwe-L3 ukuze ithrafikhi ihanjiswe. Kunezinketho ezahlukene, sizosebenzisa i-IPIP, njengoba i-mikrotik iyayisekela, ngingasebenzisa i-vti, kodwa, ngeshwa, ayikasetshenziswa ku-mikrotik. Ihlukile ku-IPIP ngoba ingahlanganisa ngaphezu kwalokho i-multicast futhi ifake ama-fwmarks kumaphakethe, angahlungwa ngawo kuma-iptables kanye ne-iproute2 (umzila osuselwe kunqubomgomo). Uma udinga ukusebenza okuphezulu, ke, isibonelo, i-GRE. Kodwa ungakhohlwa ukuthi sikhokhela ukusebenza okwengeziwe ngekhanda elikhulu elingaphezulu.

Ungabona ukuhunyushwa kokubuka konke okuhle kwezixhumi ezibonakalayo zethaneli lapha.

Ku-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

Manje ungangeza imizila yamanethiwekhi ngemuva kwe-mikrotik

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

Ukuze ukusebenzelana kwethu nemizila kuphakanyiswe ngemva kokuqaliswa kabusha, sidinga ukuchaza isixhumi esibonakalayo ku/njll/inethiwekhi/izixhumi ezibonakalayo bese sengeza imizila lapho kokuthunyelwe, noma sibhale yonke into efayeleni elilodwa, isibonelo, /etc/ ipip-ipsec0.conf futhi uyidonse ngokuthunyelwe, ungakhohlwa ngomnikazi wefayela, amalungelo futhi ulenze lisebenziseke.

Ngezansi kunefayela eliyisibonelo

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

Mayelana neMikrotik:

Isigaba "Izikhombimsebenzisi", engeza isixhumi esibonakalayo esisha "umhubhe we-IP":

Ithebhu "IP tunnel" - "Okujwayelekile"
Ipharamitha
Okushoyo

Igama
Ngokubona kwakho (ngemuva kwalokhu kuzobizwa nge-IPIP-IPsec0)

MTU
1480 (uma ingacacisiwe, i-mikrotik iqala ukusika umuntu iye ku-68)

Ikheli Lendawo
192.168.0.2

Ikheli Elikude
192.168.0.1

IPsec Imfihlo
Vala inkambu (kungenjalo kuzokwenziwa Ntanga entsha)

Gcina
Vala inkambu (uma kungenjalo isixhumi esibonakalayo sizocima njalo, njengoba i-mikrotika inefomethi yayo yalawa maphakheji futhi ayisebenzi neLinux)

I-DSCP
ifa

Ungaqedi
cha

Bamba i-TCP MSS
weqiniso

Vumela Indlela Esheshayo
weqiniso

Isigaba “IP” - “Amakheli”, engeza ikheli:

Ipharamitha
Okushoyo

Ikheli
192.168.0.2/30

Interface
IPIP-IPsec0

Manje usungangeza imizila kunethiwekhi ngemuva komshini we-Linux; lapho wengeza umzila, isango kuzoba isixhumi esibonakalayo se-IPIP-IPsec0.

PS

Njengoba iseva yethu ye-Linux ishintshashintsha, kunengqondo ukusetha ipharamitha ye-Clamp TCP MSS ye-ipip interfaces kuyo:

dala ifayela /etc/iptables.conf ngokuqukethwe okulandelayo:

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

futhi ku-/etc/network/interfaces
post-up iptables-restore < /etc/iptables.conf

Ngine-nginx esebenza kunethiwekhi ngemuva kwe-mikrotik (ip 10.10.10.1), yenze ifinyeleleke nge-inthanethi, yengeze ku-/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 

Ungakhohlwa ukwengeza izimvume ezifanele kuma-iptable uma unezihlungi zephakethe ezinikwe amandla.

Ukubusisa!

Source: www.habr.com

Engeza amazwana