linux: Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-91-generic x86_64)
- Eth0 1.1.1.1/32 externá IP
- iip-ipsec0 192.168.0.1/30 bude náš tunel
Miktoik: CCR 1009, RouterOS 6.46.5
- Eth0 10.0.0.2/30 interná IP od poskytovateľa. Externá IP adresa NAT poskytovateľa je dynamická.
- iip-ipsec0 192.168.0.2/30 bude náš tunel
Vytvoríme IPsec tunel na linuxovom stroji pomocou racoon. Nebudem popisovať detaily, je tam jeden dobrý
Nainštalujte potrebné balíčky:
sudo install racoon ipsec-tools
Nakonfigurujeme racoon, bude podmienečne fungovať ako server ipsec. Keďže mikrotik v hlavnom režime nemôže prenášať ďalší identifikátor klienta a externá IP adresa, cez ktorú sa pripája k Linuxu, je dynamická, použitie predzdieľaného kľúča (autorizácia heslom) nebude fungovať, pretože heslo sa musí zhodovať buď s IP adresou pripájajúceho sa hostiteľa alebo s identifikátorom.
Využijeme autorizáciu pomocou RSA kľúčov.
Démon racoon používa kľúče vo formáte RSA a mikrotik používa formát PEM. Ak vygenerujete kľúče pomocou utility plainrsa-gen, ktorá sa dodáva s racoon, potom s jej pomocou nebudete môcť previesť verejný kľúč pre Mikrotiku do formátu PEM – konvertuje sa iba jedným smerom: PEM na RSA. Openssl ani ssh-keygen nedokázali prečítať vygenerovaný kľúč pomocou plainrsa-gen, takže konverziu nie je možné vykonať ani pomocou nich.
Vygenerujeme kľúč PEM pomocou openssl a potom ho skonvertujeme na racoon pomocou 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
Prijaté kľúče vložíme do priečinka: /etc/racoon/certs/server. Nezabudnite nastaviť vlastníka používateľa, pod menom ktorého sa spúšťa démon racoon (zvyčajne root), na 600 oprávnení.
Popíšem nastavenie mikrotiku pri pripojení cez WinBox.
Nahrajte kľúč server-name.pub.pem do mikrotiku: Menu „Súbory“ - „Nahrať“.
Otvorte sekciu „IP“ - „IP sec“ - karta „Kľúče“. Teraz vygenerujeme kľúče – tlačidlo „Generovať kľúč“, následne exportujeme verejný kľúč mikrotika „Expor Pub. Key", môžete si ho stiahnuť zo sekcie "Súbory", kliknite pravým tlačidlom myši na súbor - "Stiahnuť".
Importujeme verejný kľúč racoon, „Import“, v rozbaľovacom zozname poľa „File name“ hľadáme server-name.pub.pem, ktorý sme si stiahli skôr.
Verejný kľúč mikrotiku je potrebné skonvertovať
plainrsa-gen -i mikrotik.pub.pem -f mikrotik.pub.key
a vložte ho do priečinka /etc/racoon/certs, pričom nezabudnite na vlastníka a práva.
racoon config s komentármi: /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; # Сжимать передаваемые данные, алгоритм сжатия предлагается только один.
}
konfigurácia mikrotiku
Vráťte sa do sekcie "IP" - "IPsec"
Karta "Profily".
Parameter
Hodnota
Meno
Podľa vlastného uváženia (predvolene)
Algoritmus Hash
sha512
Šifrovací algoritmus
aes-128
DH-Group
modp2048
Proposhal_check
nárok
Život
1d 00:00:00
NAT Traversal
pravda (začiarknite políčko)
DPD
120
DPD Maximálna porucha
5
Karta Peers
Parameter
Hodnota
Meno
Podľa vášho uváženia (ďalej len MyPeer)
adresa
1.1.1.1 (počítače IP Linux)
Miestna adresa
10.0.0.2 (IP WAN rozhranie mikrotik)
Profil
štandardné
Režim výmeny
hlavné
Pasívne
nepravdivý
Odoslať INITIAL_CONTACT
pravdivý
Karta Návrh
Parameter
Hodnota
Meno
Podľa vášho uváženia (ďalej len MyPeerProposal)
Auth. Algoritmy
sha512
Encr. Algoritmy
aes-128-cbc
Život
08:00:00
Skupina PFS
modp2048
Karta „Identity“.
Parameter
Hodnota
hruška
MyPeer
Atuh. Metóda
rsa kľúč
Kľúč
mikrotik.privet.key
Diaľkový kľúč
názov-servera.pub.pem
Skupina šablón politiky
štandardné
Notrack reťazec
prázdny
Typ môjho ID
auto
Vzdialený typ ID
auto
Zápas podľa
vzdialené id
Konfigurácia režimu
prázdny
Generovať politiku
žiadny
Karta „Pravidlá – Všeobecné“
Parameter
Hodnota
hruška
MyPeer
Tunel
pravdivý
Src. Adresa
192.168.0.0/30
Dest. Adresa
192.168.0.0/30
Protokol
255 (všetky)
šablóna
nepravdivý
Karta "Pravidlá - Akcia"
Parameter
Hodnota
akčná
šifrovanie
Úroveň
vyžadovať
Protokoly IPsec
esp
Návrh
MyPeerProposal
S najväčšou pravdepodobnosťou, ako ja, máte na svojom rozhraní WAN nakonfigurované snat/masquerade; toto pravidlo je potrebné upraviť tak, aby odchádzajúce pakety ipsec smerovali do nášho tunela:
Prejdite do sekcie "IP" - "Firewall".
Na karte „NAT“ otvorte naše pravidlo snat/maškaráda.
Karta Rozšírené
Parameter
Hodnota
Politika IPsec
von: žiadny
Reštartovanie démona mývala
sudo systemctl restart racoon
Ak sa racoon po reštarte nespustí, potom je chyba v konfigurácii, v syslog zobrazuje racoon informáciu o čísle linky, v ktorej bola chyba zistená.
Keď sa operačný systém spustí, démon racoon sa spustí pred spustením sieťových rozhraní a v sekcii počúvania sme zadali možnosť strict_address; musíte pridať jednotku racoon do súboru systemd
/lib/systemd/system/racoon.service, v sekcii [Unit] riadok After=network.target.
Teraz by mali byť naše tunely ipsec zapnuté, pozrite sa na výstup:
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
Ak tunely nie sú zapnuté, pozrite sa na syslog alebo journalctl -u racoon.
Teraz musíte nakonfigurovať rozhrania L3 tak, aby bolo možné smerovať prevádzku. Su rozne moznosti, my pouzijeme IPIP, kedze to podporuje mikrotik, ja by som pouzil vti, ale bohuzial v mikrotiku to zatial nebolo implementovane. Od IPIP sa líši tým, že môže dodatočne zapuzdrovať multicast a vkladať fwmarky na pakety, pomocou ktorých ich možno filtrovať v iptables a iproute2 (smerovanie založené na politike). Ak potrebujete maximálnu funkčnosť, potom napríklad GRE. Nezabudnite však, že za ďalšie funkcie platíme veľkou režijnou výškou.
Môžete vidieť preklad dobrého prehľadu tunelových rozhraní
V systéme 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
Teraz môžete pridať trasy pre siete za mikrotik
sudo ip route add A.B.C.D/Prefix via 192.168.255.2
Aby sa naše rozhranie a trasy po reštarte zvýšili, musíme rozhranie opísať v /etc/network/interfaces a pridať tam trasy v post-up, alebo zapísať všetko do jedného súboru, napríklad /etc/ ipip-ipsec0.conf a pretiahnite ho cez post-up, nezabudnite na vlastníka súboru, práva a urobte ho spustiteľným.
Nižšie je uvedený príklad súboru
#!/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
Na Mikrotiku:
V sekcii „Rozhrania“ pridajte nové rozhranie „IP tunel“:
Karta „IP tunel“ - „Všeobecné“
Parameter
Hodnota
Meno
Podľa vášho uváženia (ďalej len IPIP-IPsec0)
MTU
1480 (ak nie je uvedené, mikrotik začne rezať mtu na 68)
Miestna adresa
192.168.0.2
Vzdialená adresa
192.168.0.1
Tajné IPsec
Deaktivujte pole (inak sa vytvorí nový Peer)
udržať nažive
Deaktivujte pole (inak sa bude rozhranie neustále vypínať, keďže mikrotika má pre tieto balíčky vlastný formát a nefunguje s Linuxom)
DSCP
zdediť
Nefragmentovať
žiadny
Svorka TCP MSS
pravdivý
Povoliť rýchlu cestu
pravdivý
V časti „IP“ - „Adresy“ pridajte adresu:
Parameter
Hodnota
adresa
192.168.0.2/30
Rozhranie
IPIP-IPsec0
Teraz môžete pridávať trasy do siete za počítač so systémom Linux; pri pridávaní trasy bude bránou naše rozhranie IPIP-IPsec0.
PS
Keďže náš server Linux je tranzitívny, má zmysel nastaviť na ňom parameter Clamp TCP MSS pre rozhrania ipip:
vytvorte súbor /etc/iptables.conf s nasledujúcim obsahom:
*mangle
-A POSTROUTING -o ipip+ -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
COMMIT
a v /etc/network/interfaces
post-up iptables-restore < /etc/iptables.conf
Na sieti za mikrotikom mám spustený nginx (ip 10.10.10.1), sprístupnite ho z internetu, pridajte do /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
Nezabudnite pridať príslušné povolenia k iptables, ak máte povolené filtre paketov.
Byť zdravý!
Zdroj: hab.com