Linux: Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-91-generic x86_64)
- Eth0 1.1.1.1/32 extern IP
- ipip-ipsec0 192.168.0.1/30 kommer att vara vÄr tunnel
MikroTik: CCR 1009, RouterOS 6.46.5
- Eth0 10.0.0.2/30 intern IP frÄn leverantören. Extern IP Àr leverantörens dynamiska NAT.
- ipip-ipsec0 192.168.0.2/30 kommer att vara vÄr tunnel
IPsec-tunneln pÄ Linux-maskinen kommer att sÀttas upp med hjÀlp av racoon. Jag kommer inte att beskriva detaljerna, det finns en bra för .
Installera nödvÀndiga paket:
sudo install racoon ipsec-toolsKonfigurera racoon, den kommer i princip att fungera som ipsec-server. Eftersom MikroTik i huvudlÀge inte kan överföra ett extra klientidentifierare och den externa IP-adressen som den ansluter till Linux Àr dynamisk, kommer det inte att fungera att anvÀnda preshared key (lösenordsautorisering), eftersom lösenordet mÄste matcha antingen med IP-adressen pÄ den anslutande vÀrden eller med identifikatorn.
Vi kommer att anvÀnda autentisering med RSA-nycklar.
Demonen racoon anvÀnder nycklar i RSA-format, medan MikroTik anvÀnder PEM-format. Om man genererar nycklar med verktyget plainrsa-gen som kommer med racoon, gÄr det inte att konvertera den offentliga nyckeln för MikroTik till PEM-format med det, eftersom det endast konverterar Ät ett hÄll: PEM till RSA. Den genererade nyckeln av plainrsa-gen kunde inte lÀsas av varken openssl eller ssh-keygen, sÄ vi kan inte heller utföra konverteringen med dem.
Vi kommer att generera en PEM-nyckel med hjÀlp av openssl, och sedan konvertera den för racoon med hjÀlp av 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.keyDe erhÄllna nycklarna lÀggs i mappen: /etc/racoon/certs/server. Glöm inte att stÀlla in Àgaren som den anvÀndare som demon racoon körs som (vanligtvis root), och behörigheterna 600.
Jag kommer att beskriva konfigurationen av MikroTik nÀr vi ansluter via WinBox.
Ladda upp nyckeln server-name.pub.pem till MikroTik: Meny «Files» â «Upload».
Ăppna avsnittet «IP» â «IPsec» â fliken «Keys». Nu genererar vi nycklar â knappen «Generate Key», och sedan exporterar vi den offentliga nyckeln frĂ„n MikroTik «Export Pub. Key», den kan laddas ner frĂ„n avsnittet «Files», högerklicka pĂ„ filen â «Download».
Importera den offentliga nyckeln för racoon, «Import», i rullgardinsmenyn för fÀltet «File name» letar vi efter server-name.pub.pem som vi laddade upp tidigare.
Den offentliga nyckeln för MikroTik behöver konverteras
plainrsa-gen -i mikrotik.pub.pem -f mikrotik.pub.keyoch placera i mappen /etc/racoon/certs, glöm inte Àgaren och behörigheterna.
Konfiguration för racoon med kommentarer: /etc/racoon/racoon.conf
log info; # LoggnivÄ, vid felsökning anvÀnder vi Debug eller Debug2.
listen {
isakmp 1.1.1.1 [500]; # Adress och port dÀr demon kommer att lyssna.
isakmp_natt 1.1.1.1 [4500]; # Adress och port dÀr demon kommer att lyssna för klienter bakom NAT.
strict_address; # Utför obligatorisk kontroll av bindning till ovan angivna IP.
}
path certificate "\/etc\/racoon\/certs"; # SökvÀg till mappen med certifikat.
remote anonymous { # Sektion som stÀller in parametrar för hur demon arbetar med ISAKMP och förhandling av lÀgen med anslutande vÀrdar. Eftersom IP-adressen som Mikrotik ansluter frÄn Àr dynamisk, anvÀnder vi anonymous, vilket tillÄter anslutning frÄn vilken adress som helst. Om IP för vÀrdarna Àr statisk kan vi ange en specifik adress och port.
passive on; # Anger "server" lÀge för demon, den kommer inte att försöka initiera anslutningar.
nat_traversal on; # Aktiverar anvÀndning av NAT-T-lÀget för klienter, om de Àr bakom NAT.
exchange_mode main; # LĂ€ge för att utbyta anslutningsparametrar, i detta fall â förhandling.
my_identifier address 1.1.1.1; # Identifierar vÄr linux-vÀrd med dess IP-adress.
certificate_type plain_rsa "server\/server-name.priv.key"; # Serverns privata nyckel.
peers_certfile plain_rsa "mikrotik.pub.key"; # Mikrotiks offentliga nyckel.
proposal_check claim; # FörhandlingslÀge för ISAKMP-tunneln. Racoon kommer att anvÀnda vÀrdens (initiatorns) vÀrden för sessionens varaktighet och nyckellÀngd, om dess sessionstid Àr lÀngre, eller om lÀngden pÄ dess nyckel Àr kortare Àn initiatorns. Om sessionstiden Àr kortare Àn initiatorns, kommer racoon att anvÀnda sitt eget vÀrde för sessionens varaktighet och kommer att skicka ett RESPONDER-LIFETIME-meddelande.
proposal { # Parametrar för ISAKMP-tunneln.
encryption_algorithm aes; # Krypteringsmetod för ISAKMP-tunneln.
hash_algorithm sha512; # Hash-algoritm som anvÀnds för ISAKMP-tunneln.
authentication_method rsasig; # Autentiseringsmetod för ISAKMP-tunneln - med RSA-nycklar.
dh_group modp2048; # NyckellÀngd för Diffie-Hellman-algoritmen vid förhandling av ISAKMP-tunneln.
lifetime time 86400 sec; # Sessionens varaktighet.
}
generate_policy on; # Automatisk skapande av ESP-tunnlar utifrÄn begÀran frÄn den anslutande vÀrden.
}
sainfo anonymous { # Parametrar för ESP-tunnlar, anonymous - angivna parametrar kommer att anvÀndas som standardparametrar. För olika klienter, portar, protokoll kan olika parametrar anges, matchning sker baserat pÄ IP-adresser, portar, protokoll.
pfs_group modp2048; # NyckellÀngd för Diffie-Hellman-algoritmen för ESP-tunnlar.
lifetime time 28800 sec; # Giltighetstid för ESP-tunnlar.
encryption_algorithm aes; # Krypteringsmetod för ESP-tunnlar.
authentication_algorithm hmac_sha512; # Hash-algoritm som anvÀnds för autentisering av ESP-tunnlar.
compression_algorithm deflate; # Komprimera överförda data, komprimeringsmetoden föreslÄs endast en.
}
Mikrotik-konfiguration
GĂ„ tillbaka till avsnittet "IP" â "IPsec"
Fliken "Profiler"
Parameter
VĂ€rde
Namn
Valfritt (standardvÀrdet Àr default)
Hash-algoritm
sha512
Encryption Algorithm
aes-128
DH-grupp
modp2048
Proposhal_check
krav
LivslÀngd
1d 00:00:00
NAT Traversal
true (markera rutan)
DPD
120
Maximalt antal DPD-fel
5
Fliken "Peers"
Parameter
VĂ€rde
Namn
Valfritt (dÀrefter MyPeer)
Address
1.1.1.1 (IP pÄ Linux-maskinen)
Lokalt adress
10.0.0.2 (IP för WAN-grÀnssnittet pÄ mikrotik)
Profil
default
UtbyteslÀge
main
Passiv
false
Skicka INITIAL_CONTACT
true
Fliken "Förslag"
Parameter
VĂ€rde
Namn
Valfritt (dÀrefter MyPeerProposal)
Auth. algoritmer
sha512
Krypteringsalgoritmer
aes-128-cbc
LivslÀngd
08:00:00
PFS-grupp
modp2048
Fliken "Identiteter"
Parameter
VĂ€rde
Peer
MyPeer
Autentiseringsmetod
rsa nyckel
Nyckel
mikrotik.privet.key
FjÀrrnyckel
server-name.pub.pem
Policy-mallgrupp
default
Notrack-kedja
tom
Min ID-typ
auto
FjÀrr-ID-typ
auto
Matcha efter
fjÀrr-id
LĂ€geskonfiguration
tom
Generera policy
nej
Fliken "Policies â AllmĂ€nt"
Parameter
VĂ€rde
Peer
MyPeer
Tunnel
true
Src. adress
192.168.0.0/30
Dest. adress
192.168.0.0/30
â alla, om du anvĂ€nder HTTPS för kommunikationen mellan balansieraren och instanserna, mĂ„ste du ladda certifikatet pĂ„ dem. I det hĂ€r exemplet kommer vi inte att göra det, utan bara lĂ€mna port 80.
255 (alla)
Mall
false
Fliken "Policies â Ă
tgÀrd"
Parameter
VĂ€rde
Action
encrypt
NivÄ
krÀvs
IPsec-protokoll
esp
Förslag
MyPeerProposal
Du har förmodligen, precis som jag, snat/maskerat pÄ WAN-grÀnssnittet, detta regel mÄste justeras sÄ att utgÄende ipsec-paket gÄr genom vÄr tunnel:
Vi gĂ„r till avsnittet "IP" â "Firewall".
Fliken "NAT", öppnar vÄr snat/maskerat-regel.
Fliken "Avancerat"
Parameter
VĂ€rde
IPsec-policy
ut: ingen
Starta om daemonen racoon
sudo systemctl restart racoonOm racoon inte startar om, betyder det att det finns ett fel i konfigurationen, syslog racoon ger information om radnumret dÀr felet har pÄtrÀffats.
Daemonen racoon startar vid OS-uppstart innan nÀtverksgrÀnssnitten har aktiverats, och vi angav i avsnittet listen alternativet strict_address, det Àr nödvÀndigt att lÀgga till i systemd-enheten racoon.
/lib/systemd/system/racoon.service, ĐČ ŃĐ”ĐșŃĐžŃ [Unit], ŃŃŃĐŸĐșŃ After=network.target.
Nu bör vÄra ipsec-tunnlar ha aktiverats, vi kontrollerar utdata:
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 som mikrotik kopplar till"
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 som mikrotik kopplar till" 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 som mikrotik kopplar till" dst 1.1.1.1
proto esp reqid 0 mode tunnelOm tunnlarna inte har aktiverats, kontrollera syslog, eller journalctl -u racoon.
Nu mÄste L3-grÀnssnitten konfigureras sÄ att trafik kan routas. Det finns olika alternativ, vi kommer att anvÀnda IPIP, eftersom det stöds av mikrotik. Jag skulle ha anvÀnt vti, men tyvÀrr har mikrotik fortfarande inte implementerat detta. IPIP skiljer sig genom att det dessutom kan inkapsla multicast och sÀtta etiketter (fwmark) pÄ paket, som sedan kan filtreras i iptables och iproute2 (policy-baserad routing). Om maximal funktionalitet behövs - till exempel GRE. Men kom ihÄg att vi betalar för den extra funktionaliteten med högre overhead.
ĂversĂ€ttningen av en bra översikt av tunnelgrĂ€nssnitt kan ses .
PĂ„ 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-ipsec0Nu kan vi lÀgga till rutter för nÀtverk bakom mikrotik
sudo ip route add A.B.C.D/Prefix via 192.168.255.2För att vÄrt grÀnssnitt och rutter ska aktiveras efter omstart, mÄste vi beskriva grÀnssnittet i /etc/network/interfaces och dÀr ocksÄ lÀgga till rutter i post-up, eller skriva allt i en fil, till exempel /etc/ipip-ipsec0.conf och aktivera den genom post-up. Glöm inte att ange filÀgaren, rÀttigheterna och göra den körbar.
Under katten exempel pÄ en fil
#!/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.2PĂ„ Mikrotik:
Avsnitt "Interfaces", lÀgg till ett nytt grÀnssnitt "IP tunnel":
Flik "IP tunnel" - "AllmÀnt"
Parameter
VĂ€rde
Namn
Valfritt (fortsÀttningsvis IPIP-IPsec0)
ip a show
1480 (om inget anges, börjar mikrotik att skÀra mtu till 68)
Lokalt adress
192.168.0.2
FjÀrradress
192.168.0.1
Ipsec Secret
Inaktivera fÀltet (annars skapas en ny Peer)
Keepalive
Inaktivera fÀltet (annars kommer grÀnssnittet att stÀngas av hela tiden, eftersom mikrotik har nÄgot eget format för dessa paket som inte fungerar med linux)
DSCP
Ă€rva
Inte fragmentera
nej
Clamp TCP MSS
true
TillÄt snabb vÀg
true
Avsnitt "IP" - "Adresser", lÀgg till adress:
Parameter
VĂ€rde
Address
192.168.0.2/30
GrÀnssnitt
IPIP-IPsec0
Nu kan vi börja lÀgga till rutter i nÀtverk bakom linux-maskinen. NÀr en rutt lÀggs till kommer gatewayn att bli vÄrt grÀnssnitt IPIP-IPsec0.
PS
Eftersom vÄr linux-server Àr transit kan det vara meningsfullt att stÀlla in parametern Clamp TCP MSS för ipip-grÀnssnitt:
skapa filen /etc/iptables.conf med följande innehÄll:
*mangle
-A POSTROUTING -o ipip+ -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
COMMIToch i /etc/network/interfaces
post-up iptables-restore < /etc/iptables.conf
I nÀtverket bakom mikrotik har jag nginx (ip 10.10.10.1), gör den tillgÀnglig frÄn internet, lÀgg till 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
#PÄ mikrotik, i mangle-tabellen, mÄste du lÀgga till en route-regel med destination 192.168.0.1 för paket med kÀlladress 10.10.10.1 och portar 80, 443.
# OpenVPN-servern fungerar ocksÄ pÄ Linux 172.16.0.1/24, för klienter som anvÀnder anslutningen till den som gateway ger vi tillgÄng till internet
-A POSTROUTING -s 172.16.0.0/24 -o eth0 -j SNAT --to-source 1.1.1.1
COMMIT Glöm inte att lÀgga till motsvarande behörigheter i iptables om du har aktiverat paketfilter.
Var försiktig!
KĂ€lla: habr.com
