IPIP IPsec VPN eefin laarin ẹrọ Linux ati Mikrotik lẹhin olupese NAT

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

  • Eth0 1.1.1.1/32 ita IP
  • ipip-ipsec0 192.168.0.1/30 yoo jẹ oju eefin wa

Miktoik: CCR 1009, RouterOS 6.46.5

  • Eth0 10.0.0.2/30 ti abẹnu IP lati olupese. NAT IP ita ti olupese jẹ agbara.
  • ipip-ipsec0 192.168.0.2/30 yoo jẹ oju eefin wa

A yoo ṣẹda oju eefin IPsec lori ẹrọ Linux nipa lilo racoon. Mo ti yoo ko apejuwe awọn alaye, nibẹ ni kan ti o dara nkan у vvpoloskin.

Fi sori ẹrọ awọn idii pataki:

sudo install racoon ipsec-tools

A tunto racoon, yoo ṣiṣẹ ni majemu bi olupin ipsec. Niwọn igba ti mikrotik ni ipo akọkọ ko le ṣe atagba idanimọ alabara afikun, ati adiresi IP ita nipasẹ eyiti o sopọ si Linux jẹ agbara, lilo bọtini ti a ti tẹlẹ (aṣẹ ọrọ igbaniwọle) kii yoo ṣiṣẹ, nitori ọrọ igbaniwọle gbọdọ baamu boya pẹlu adiresi IP ti agbalejo asopọ, tabi pẹlu idamo.

A yoo lo aṣẹ nipa lilo awọn bọtini RSA.

Racoon daemon nlo awọn bọtini ni ọna kika RSA, ati pe mikrotik nlo ọna kika PEM. Ti o ba ṣe ina awọn bọtini ni lilo ohun elo plainrsa-gen ti o wa pẹlu racoon, lẹhinna o kii yoo ni anfani lati yi bọtini ita gbangba fun Mikrotika si ọna kika PEM pẹlu iranlọwọ rẹ - o yipada nikan ni itọsọna kan: PEM si RSA. Bẹni openssl tabi ssh-keygen ko le ka bọtini ti ipilẹṣẹ nipasẹ plainrsa-gen, nitorinaa iyipada ko le ṣe ni lilo wọn boya.

A yoo ṣe ipilẹṣẹ bọtini PEM kan nipa lilo openssl ati lẹhinna yipada fun racoon nipa lilo 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

A yoo fi awọn bọtini ti a gba sinu folda: /etc/racoon/certs/server. Maṣe gbagbe lati ṣeto oniwun olumulo labẹ orukọ ẹniti a ṣe ifilọlẹ daemon racoon (nigbagbogbo gbongbo) si awọn igbanilaaye 600.

Emi yoo ṣe apejuwe iṣeto mikrotik nigbati o ba sopọ nipasẹ WinBox.

Ṣe igbasilẹ bọtini olupin-name.pub.pem si mikrotik: Akojọ “Awọn faili” - “Po si”.

Ṣii apakan “IP” - “IP iṣẹju-aaya” - “Awọn bọtini” taabu. Bayi a ṣe ina awọn bọtini - bọtini “Iṣẹda Key”, lẹhinna okeere bọtini gbangba mikrotika “Expor Pub. Bọtini, o le ṣe igbasilẹ lati apakan “Awọn faili”, tẹ-ọtun lori faili naa - “Download”.

A ṣe agbewọle bọtini gbogbo eniyan racoon, “Iwọle”, ninu atokọ jabọ-silẹ ti aaye “Orukọ faili” ti a wa fun orukọ olupin-pub.pem ti a ṣe igbasilẹ tẹlẹ.

Bọtini gbangba mikrotik nilo lati yipada

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

ki o si fi sii /etc/racoon/certs folda, ko gbagbe nipa eni ati awọn ẹtọ.

racoon konfigi pẹlu comments: /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 konfigi

Pada si apakan "IP" - "IPsec"

"Awọn profaili" taabu
Apaadi
Itumo

Name
Ni ipinnu rẹ (nipasẹ aiyipada)

Hash alugoridimu
Oju 512

Alugoridimu ìsekóòdù
aes-128

DH-Ẹgbẹ
modp2048

Proposhal_check
Beere

s'aiye
1d 00:00:00

NAT Traversal
otitọ (ṣayẹwo apoti)

DPD
120

Ikuna ti o pọju DPD
5

Awọn ẹlẹgbẹ taabu
Apaadi
Itumo

Name
Ni ipinnu rẹ (lẹhin ti a tọka si bi MyPeer)

Adirẹsi
1.1.1.1 (awọn ẹrọ Linux IP)

Adirẹsi agbegbe
10.0.0.2 (IP WAN ni wiwo mikrotik)

Profaili
aiyipada

Ipo paṣipaarọ
akọkọ

palolo
èké

Firanṣẹ INITIAL_CONTACT
otitọ

Aba imọran
Apaadi
Itumo

Name
Ni ipinnu rẹ (lẹhin eyi tọka si bi MyPeerProposal)

Òótọ́. Awọn alugoridimu
Oju 512

Encr. Awọn alugoridimu
aes-128-cbc

s'aiye
08:00:00

Ẹgbẹ PFS
modp2048

"Identities" taabu
Apaadi
Itumo

Ẹlẹgbẹ
MyPeer

Atuh. Ọna
rsa bọtini

Key
mikrotik.privet.bọtini

Bọtini jijin
olupin-orukọ.pub.pem

Afihan Awoṣe Ẹgbẹ
aiyipada

Notrack Pq
ofo

Orisi ID mi
auto

Latọna ID Iru
auto

Baramu Nipa
latọna id

Iṣeto Ipo
ofo

ina Afihan
rara

Taabu "Awọn imulo - Gbogbogbo"
Apaadi
Itumo

Ẹlẹgbẹ
MyPeer

Oju eefin
otitọ

Src. Adirẹsi
192.168.0.0/30

Dest. Adirẹsi
192.168.0.0/30

Ilana
255 (gbogbo)

awoṣe
èké

Taabu "Awọn eto imulo - Igbese"
Apaadi
Itumo

Action
encrypt

ipele
olubere

IPsec Ilana
esp

Idiwọ
MyPeerProposal

O ṣeese julọ, bii emi, o ti tunto snat/masquerade lori wiwo WAN rẹ; Ofin yii nilo lati ṣatunṣe ki awọn apo-iwe ipsec ti njade lọ sinu oju eefin wa:
Lọ si apakan "IP" - "Firewall".
"NAT" taabu, ṣii ofin snat/masquerade wa.

To ti ni ilọsiwaju Tab
Apaadi
Itumo

IPsec Afihan
jade: ko si

Titun eṣu racoon bẹrẹ

sudo systemctl restart racoon

Ti racoon ko ba bẹrẹ ni atunbere, lẹhinna aṣiṣe wa ninu atunto; ni syslog, racoon ṣafihan alaye nipa nọmba laini ninu eyiti a ti rii aṣiṣe naa.

Nigbati awọn bata orunkun OS, racoon daemon bẹrẹ ṣaaju ki o to gbe awọn atọkun nẹtiwọọki soke, ati pe a ṣalaye aṣayan muna_address ni apakan tẹtisi; o nilo lati ṣafikun ẹyọ racoon si faili ti eto.
/lib/systemd/system/racoon.service, ni apakan [Unit], laini Lẹhin = network.target.

Bayi awọn tunnels ipsec yẹ ki o wa soke, wo abajade:

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

Ti awọn eefin ko ba wa ni oke, wo syslog, tabi journalctl -u racoon.

Bayi o nilo lati tunto awọn atọkun L3 ki ijabọ le jẹ ipalọlọ. Awọn aṣayan oriṣiriṣi wa, a yoo lo IPIP, niwon mikrotik ṣe atilẹyin rẹ, Emi yoo lo vti, ṣugbọn, laanu, ko ti ṣe imuse ni mikrotik. O yato si IPIP ni pe o le ni afikun encapsulate multicast ki o si fi fwmarks lori awọn apo-iwe, nipa eyi ti won le wa ni filtered ni iptables ati iproute2 (eto-orisun afisona). Ti o ba nilo iṣẹ ṣiṣe ti o pọju, lẹhinna, fun apẹẹrẹ, GRE. Ṣugbọn maṣe gbagbe pe a sanwo fun iṣẹ-ṣiṣe afikun pẹlu ori-ori nla kan.

O le wo itumọ ti atunyẹwo to dara ti awọn atọkun oju eefin nibi.

Lori 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

Bayi o le ṣafikun awọn ipa-ọna fun awọn nẹtiwọọki lẹhin mikrotik

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

Ni ibere fun wiwo wa ati awọn ipa-ọna lati gbe soke lẹhin atunbere, a nilo lati ṣe apejuwe wiwo ni /etc/network/awọn atọkun ati ṣafikun awọn ipa-ọna nibẹ ni ifiweranṣẹ, tabi kọ ohun gbogbo sinu faili kan, fun apẹẹrẹ, /etc/ ipip-ipsec0.conf ati fa nipasẹ ifiweranṣẹ, maṣe gbagbe nipa oniwun faili, awọn ẹtọ ati jẹ ki o ṣiṣẹ.

Ni isalẹ jẹ faili apẹẹrẹ

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

Lori Mikrotik:

Abala “Awọn atọkun”, ṣafikun wiwo tuntun “oju eefin IP”:

Taabu "IP eefin" - "Gbogbogbo"
Apaadi
Itumo

Name
Ni ipinnu rẹ (lẹhin ti a tọka si bi IPIP-IPsec0)

MTU
1480 (ti ko ba ṣe pato, mikrotik bẹrẹ gige mtu si 68)

Adirẹsi agbegbe
192.168.0.2

Adirẹsi latọna jijin
192.168.0.1

IPsec asiri
Mu aaye naa ṣiṣẹ (bibẹẹkọ yoo ṣẹda Ẹlẹgbẹ tuntun kan)

Idoju
Mu aaye naa ṣiṣẹ (bibẹẹkọ wiwo naa yoo wa ni pipa nigbagbogbo, nitori mikrotika ni ọna kika tirẹ fun awọn idii wọnyi ati pe ko ṣiṣẹ pẹlu Linux)

DSCP
jogun

Má Ṣe Palẹ̀
rara

Dimole TCP MSS
otitọ

Gba Ona Yara laaye
otitọ

Abala “IP” - “Awọn adirẹsi”, ṣafikun adirẹsi naa:

Apaadi
Itumo

Adirẹsi
192.168.0.2/30

ni wiwo
IPIP-IPsec0

Bayi o le ṣafikun awọn ipa-ọna si nẹtiwọọki lẹhin ẹrọ Linux kan; nigba fifi ipa-ọna kan kun, ẹnu-ọna yoo jẹ wiwo IPIP-IPsec0 wa.

PS

Niwọn igba ti olupin Lainos wa jẹ iyipada, o jẹ oye lati ṣeto paramita Clamp TCP MSS fun awọn atọkun ipip lori rẹ:

ṣẹda faili /etc/iptables.conf pẹlu awọn akoonu wọnyi:

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

ati ninu /etc/network/interfaces
ranse si iptables-pada sipo </etc/iptables.conf

Mo ni nginx nṣiṣẹ lori nẹtiwọọki lẹhin mikrotik (ip 10.10.10.1), jẹ ki o wa lati Intanẹẹti, ṣafikun si /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 

Maṣe gbagbe lati ṣafikun awọn igbanilaaye ti o yẹ si iptables ti o ba ni awọn asẹ soso ṣiṣẹ.

Jẹ ilera!

orisun: www.habr.com

Fi ọrọìwòye kun