IPIP IPsec VPN mina bejn magna Linux u Mikrotik wara l-fornitur NAT

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

  • Eth0 1.1.1.1/32 IP estern
  • ipip-ipsec0 192.168.0.1/30 se tkun il-mina tagħna

Miktoik: CCR 1009, RouterOS 6.46.5

  • Eth0 10.0.0.2/30 IP intern mill-fornitur. L-IP NAT estern tal-fornitur huwa dinamiku.
  • ipip-ipsec0 192.168.0.2/30 se tkun il-mina tagħna

Aħna se noħolqu mina IPsec fuq magna Linux bl-użu ta 'racoon. Mhux se niddeskrivi d-dettalji, hemm waħda tajba artikolu у vvpoloskin.

Installa l-pakketti meħtieġa:

sudo install racoon ipsec-tools

Aħna kkonfigurat racoon, se jaġixxi kondizzjonalment bħala server ipsec. Peress li mikrotik fil-modalità prinċipali ma jistax jittrasmetti identifikatur tal-klijent addizzjonali, u l-indirizz IP estern li permezz tiegħu jgħaqqad mal-Linux huwa dinamiku, l-użu ta’ ċavetta kondiviża minn qabel (awtorizzazzjoni tal-password) mhux se jaħdem, peress li l-password trid tkun imqabbla jew mal-indirizz IP ta’ l-host li jgħaqqad, jew bl-identifikatur.

Se nużaw l-awtorizzazzjoni bl-użu taċ-ċwievet RSA.

Id-daemon Racoon juża ċwievet fil-format RSA, u mikrotik juża l-format PEM. Jekk tiġġenera ċwievet billi tuża l-utilità plainrsa-gen li tiġi ma 'racoon, allura ma tkunx tista' tikkonverti ċ-ċavetta pubblika għal Mikrotika għall-format PEM bl-għajnuna tagħha - tikkonverti biss f'direzzjoni waħda: PEM għal RSA. La openssl u lanqas ssh-keygen ma setgħu jaqraw iċ-ċavetta ġġenerata minn plainrsa-gen, għalhekk il-konverżjoni mhux se tkun possibbli bl-użu tagħhom lanqas.

Aħna se niġġeneraw ċavetta PEM billi tuża openssl u mbagħad naqilbuha għal racoon billi tuża 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

Se npoġġu ċ-ċwievet riċevuti fil-folder: /etc/racoon/certs/server. Tinsiex issettja s-sid tal-utent li taħt ismu jiġi mniedi d-daemon racoon (ġeneralment għerq) għal 600 permess.

Se niddeskrivi s-setup tal-mikrotik meta nikkonnettja permezz tal-WinBox.

Ittella’ ċ-ċavetta server-name.pub.pem fuq mikrotik: Menu “Files” - “Upload”.

Iftaħ it-taqsima "IP" - "IP sec" - tab "Ċwievet". Issa niġġeneraw ċwievet - il-buttuna "Iġġenera Ċavetta", imbagħad tesporta ċ-ċavetta pubblika mikrotika "Expor Pub. Ewlenin", tista 'tniżżlu mit-taqsima "Fajls", ikklikkja fuq il-fajl - "Niżżel".

Aħna nimportaw iċ-ċavetta pubblika racoon, "Import", fil-lista drop-down tal-qasam "Isem tal-fajl" infittxu s-server-name.pub.pem li niżżilna qabel.

Iċ-ċavetta pubblika mikrotik trid tiġi kkonvertita

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

u poġġih fil-folder /etc/racoon/certs, mingħajr ma ninsew dwar is-sid u d-drittijiet.

racoon config bil-kummenti: /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 konfig

Irritorna għat-taqsima "IP" - "IPsec"

Tab "Profili".
Parametru
Valur

isem
Fid-diskrezzjoni tiegħek (b'mod awtomatiku)

Algoritmu tal-Hash
sha512

Algoritmu ta 'Kriptaġġ
aes-128

DH-Grupp
modp2048

Proposhal_check
jitlob

Lifetime
1d 00:00:00

NAT Traversal
veru (iċċekkja l-kaxxa)

DPD
120

DPD Falliment massimu
5

Peers tab
Parametru
Valur

isem
Fid-diskrezzjoni tiegħek (minn hawn 'il quddiem imsejħa MyPeer)

indirizz
1.1.1.1 (magni IP Linux)

Indirizz Lokali
10.0.0.2 (IP WAN interface mikrotik)

Profil
inadempjenza

Modalità tal-Kambju
prinċipali

Passive
falza

Ibgħat INITIAL_CONTACT
veru

Tab tal-proposta
Parametru
Valur

isem
Fid-diskrezzjoni tiegħek (minn hawn 'il quddiem imsejħa MyPeerProposal)

Awt. Algoritmi
sha512

Encr. Algoritmi
aes-128-cbc

Lifetime
08:00:00

Grupp PFS
modp2048

Tab "Identitajiet".
Parametru
Valur

Pari
MyPeer

Atuh. Metodu
ċavetta rsa

Ewlenin
mikrotik.privet.key

Ċavetta mill-Bogħod
server-name.pub.pem

Grupp Mudell ta' Politika
inadempjenza

Katina Notrack
vojta

It-Tip tal-ID tiegħi
auto

Tip ta' ID mill-bogħod
auto

Match By
id remot

Konfigurazzjoni tal-Modalità
vojta

Iġġenera Politika
le

Tab "Politiki - Ġenerali"
Parametru
Valur

Pari
MyPeer

Mina
veru

Src. Indirizz
192.168.0.0/30

Dest. Indirizz
192.168.0.0/30

Protokoll
255 (kollha)

Template
falza

Tab "Politiki - Azzjoni"
Parametru
Valur

azzjoni
kriptaġġ

Livell
jeħtieġu

Protokolli IPsec
esp

Proposta
MyPeerProposal

X'aktarx, bħali, għandek snat/masquerade kkonfigurat fuq l-interface WAN tiegħek; din ir-regola trid tiġi aġġustata sabiex il-pakketti ipsec ħerġin jidħlu fil-mina tagħna:
Mur fit-taqsima "IP" - "Firewall".
Tab "NAT", iftaħ ir-regola tagħna snat/masquerade.

Tab Avvanzata
Parametru
Valur

Politika IPsec
barra: xejn

Jibda mill-ġdid id-dimostrazzjoni tar-rakun

sudo systemctl restart racoon

Jekk Racoon ma jibdax malli jerġa' jibda, allura jkun hemm żball fil-konfigurazzjoni; fis-syslog, Racoon juri informazzjoni dwar in-numru tal-linja li fih instab l-iżball.

Meta l-OS boots, id-daemon racoon jibda qabel ma jittellgħu l-interfaces tan-netwerk, u speċifikajna l-għażla strict_address fit-taqsima listen; trid iżżid l-unità racoon mal-fajl systemd
/lib/systemd/system/racoon.service, fit-taqsima [Unità], linja Wara=network.target.

Issa l-mini ipsec tagħna għandhom ikunu up, ħares lejn l-output:

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

Jekk il-mini mhumiex up, ħares lejn syslog, jew journalctl -u racoon.

Issa għandek bżonn tikkonfigura l-interfaces L3 sabiex it-traffiku jkun jista 'jiġi mgħoddi. Hemm għażliet differenti, se nużaw IPIP, peress li mikrotik jappoġġjaha, jien nuża vti, iżda, sfortunatament, għadu ma ġiex implimentat f'mikrotik. Hija differenti mill-IPIP peress li tista' wkoll tinkapsula multicast u tpoġġi fwmarks fuq pakketti, li bihom jistgħu jiġu ffiltrati f'iptables u iproute2 (rotot ibbażat fuq il-politika). Jekk għandek bżonn funzjonalità massima, allura, pereżempju, GRE. Imma tinsiex li nħallsu għal funzjonalità addizzjonali b'ras kbira.

Tista 'tara t-traduzzjoni ta' ħarsa ġenerali tajba tal-interfaces tal-mini hawn.

Fuq 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

Issa tista 'żżid rotot għan-netwerks wara mikrotik

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

Sabiex l-interface u r-rotot tagħna jitqajmu wara reboot, għandna bżonn niddeskrivu l-interface f'/etc/network/interfaces u nżidu r-rotot hemm fil-post-up, jew niktbu kollox f'fajl wieħed, pereżempju, /etc/ ipip-ipsec0.conf u iġbedha permezz ta 'post-up, tinsiex dwar is-sid tal-fajl, id-drittijiet u tagħmilha eżekutibbli.

Hawn taħt hemm fajl eżempju

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

Fuq Mikrotik:

Taqsima "Interfaces", żid interface ġdid "IP mina":

Tab “IP mina” - “Ġenerali”
Parametru
Valur

isem
Fid-diskrezzjoni tiegħek (minn hawn 'il quddiem imsejħa IPIP-IPsec0)

MTU
1480 (jekk mhux speċifikat, mikrotik jibda jaqta 'mtu għal 68)

Indirizz Lokali
192.168.0.2

Indirizz mill-bogħod
192.168.0.1

IPsec Sigriet
Iddiżattiva l-qasam (inkella jinħoloq Peer ġdid)

keepalive
Iddiżattiva l-qasam (inkella l-interface tintefa kontinwament, peress li mikrotika għandha l-format tagħha stess għal dawn il-pakketti u ma taħdimx mal-Linux)

DSCP
jirtu

M'għandekx Framment
le

Clamp TCP MSS
veru

Ħalli Fast Path
veru

Taqsima "IP" - "Indirizzi", żid l-indirizz:

Parametru
Valur

indirizz
192.168.0.2/30

interface
IPIP-IPsec0

Issa tista 'żżid rotot man-netwerk wara magna Linux; meta żżid rotta, il-portal se jkun l-interface IPIP-IPsec0 tagħna.

PS

Peress li s-server Linux tagħna huwa tranżittiv, jagħmel sens li tissettja l-parametru Clamp TCP MSS għal interfaces ipip fuqu:

oħloq fajl /etc/iptables.conf bil-kontenut li ġej:

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

u f'/etc/network/interfaces
post-up iptables-restore < /etc/iptables.conf

Għandi nginx qed jaħdem fuq in-netwerk wara mikrotik (ip 10.10.10.1), jagħmilha aċċessibbli mill-Internet, żidha ma' /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 

Tinsiex iżżid il-permessi xierqa ma' iptables jekk għandek il-filtri tal-pakketti attivati.

Tkun b'saħħithom!

Sors: www.habr.com

Żid kumment