Linux: Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-91-generic x86_64)
- Eth0 1.1.1.1/32 ārējā IP
- ipip-ipsec0 192.168.0.1/30 būs mūsu tunelis
Miktoik: CCR 1009, RouterOS 6.46.5
- Eth0 10.0.0.2/30 iekšējais IP no nodrošinātāja. Pakalpojumu sniedzēja ārējais NAT IP ir dinamisks.
- ipip-ipsec0 192.168.0.2/30 būs mūsu tunelis
Mēs izveidosim IPsec tuneli Linux mašīnā, izmantojot racoon. Es neaprakstīšu detaļas, ir laba
Instalējiet nepieciešamās pakotnes:
sudo install racoon ipsec-tools
Mēs konfigurējam racoon, tas nosacīti darbosies kā ipsec serveris. Tā kā mikrotik galvenajā režīmā nevar pārsūtīt papildu klienta identifikatoru un ārējā IP adrese, caur kuru tas savieno ar Linux, ir dinamiska, iepriekš koplietotās atslēgas izmantošana (paroles autorizācija) nedarbosies, jo parolei ir jāsakrīt vai nu ar lietotāja IP adresi. savienojošo resursdatoru vai ar identifikatoru.
Mēs izmantosim autorizāciju, izmantojot RSA atslēgas.
Jenots dēmons izmanto atslēgas RSA formātā, un mikrotik izmanto PEM formātu. Ja ģenerējat atslēgas, izmantojot racon komplektācijā iekļauto utilītu plainrsa-gen, tad ar tās palīdzību Mikrotika publisko atslēgu nevarēs konvertēt uz PEM formātu – tā pārvēršas tikai vienā virzienā: PEM uz RSA. Ne openssl, ne ssh-keygen nevarēja nolasīt plainrsa-gen ģenerēto atslēgu, tāpēc arī konvertēšanu nevar veikt, izmantojot tos.
Mēs ģenerēsim PEM atslēgu, izmantojot openssl, un pēc tam pārveidosim to par racoon, izmantojot 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
Saņemtās atslēgas ievietosim mapē: /etc/racoon/certs/server. Neaizmirstiet iestatīt tā lietotāja īpašniekam, ar kura vārdu tiek palaists jenots dēmons (parasti root), uz 600 atļaujām.
Es aprakstīšu mikrotik iestatīšanu, pieslēdzoties caur WinBox.
Augšupielādējiet servera-name.pub.pem atslēgu uz mikrotik: Izvēlne "Faili" - "Augšupielādēt".
Atveriet sadaļu "IP" - "IP sec" - cilni "Atslēgas". Tagad mēs ģenerējam atslēgas - pogu “Ģenerēt atslēgu”, pēc tam eksportējam mikrotikas publisko atslēgu “Expor Pub. Atslēga", to varat lejupielādēt sadaļā "Faili", ar peles labo pogu noklikšķiniet uz faila - "Lejupielādēt".
Mēs importējam jenots publisko atslēgu “Importēt”, lauka “Faila nosaukums” nolaižamajā sarakstā mēs meklējam servera nosaukums.pub.pem, kuru lejupielādējām iepriekš.
Mikrotik publiskā atslēga ir jāpārveido
plainrsa-gen -i mikrotik.pub.pem -f mikrotik.pub.key
un ievietojiet to mapē /etc/racoon/certs, neaizmirstot par īpašnieku un tiesībām.
racoon konfigurācija ar komentāriem: /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 konfigurācija
Atgriezties uz sadaļu "IP" - "IPsec"
Cilne "Profili".
Parametrs
Vērtība
Vārds
Pēc jūsu ieskatiem (pēc noklusējuma)
Hash algoritms
sha512
Šifrēšanas algoritms
aes-128
DH grupa
modp2048
Proposhal_check
pretendēt
Mūžs
1d 00:00:00
NAT šķērsošana
taisnība (atzīmējiet izvēles rūtiņu)
DPD
120
DPD Maksimālā kļūme
5
Vienaudžu cilne
Parametrs
Vērtība
Vārds
Pēc jūsu ieskatiem (turpmāk tekstā MyPeer)
Adrese
1.1.1.1 (IP Linux iekārtas)
Vietējā adrese
10.0.0.2 (IP WAN interfeiss mikrotik)
Profils
noklusējuma
Apmaiņas režīms
galvenais
Pasīvs
nepatiess
Sūtīt INITIAL_CONTACT
patiess
Priekšlikumu cilne
Parametrs
Vērtība
Vārds
Pēc jūsu ieskatiem (turpmāk tekstā MyPeerProposal)
Auth. Algoritmi
sha512
Encr. Algoritmi
aes-128-cbc
Mūžs
08:00:00
PFS grupa
modp2048
Cilne "Identitātes".
Parametrs
Vērtība
Peer
MyPeer
Atuh. Metode
rsa atslēga
Taustiņš
mikrotik.privet.key
Tālvadības atslēga
servera nosaukums.pub.pem
Politikas veidņu grupa
noklusējuma
Notrack ķēde
tukšs
Mans ID veids
auto
Attālā ID tips
auto
Atbilst
attālais id
Režīma konfigurācija
tukšs
Izveidot politiku
Nē
Cilne “Politikas — vispārīgi”
Parametrs
Vērtība
Peer
MyPeer
Tunelis
patiess
Src. Adrese
192.168.0.0/30
Gal. Adrese
192.168.0.0/30
Protokols
255 (visi)
Krāsains
nepatiess
Cilne “Politikas — darbība”
Parametrs
Vērtība
Darbība
šifrēt
Mājaslapas veids
pieprasītājs
IPsec protokoli
esp
Priekšlikums
MyPeerProposal
Visticamāk, tāpat kā man, jūsu WAN saskarnē ir konfigurēta snat/masquerade; šis noteikums ir jāpielāgo, lai izejošās ipsec paketes nonāktu mūsu tunelī:
Dodieties uz sadaļu "IP" - "Ugunsmūris".
Cilnē "NAT" atveriet mūsu snat/masquerade noteikumu.
Cilne Papildu
Parametrs
Vērtība
IPsec politika
ārā: nav
Jenots dēmona restartēšana
sudo systemctl restart racoon
Ja racoon nesākas pēc restartēšanas, tad konfigurācijā ir kļūda; syslog logā racoon parāda informāciju par rindas numuru, kurā tika konstatēta kļūda.
Kad operētājsistēma tiek sāknēta, racoon dēmons tiek palaists, pirms tiek parādītas tīkla saskarnes, un klausīšanās sadaļā mēs norādījām opciju strict_address; jums jāpievieno racoon vienība systemd failam.
/lib/systemd/system/racoon.service, sadaļas [Unit] rindā After=network.target.
Tagad mūsu ipsec tuneļiem vajadzētu būt augšā, apskatiet izvadi:
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
Ja tuneļi nav izveidoti, skatiet syslog vai journalctl -u racoon.
Tagad jums ir jākonfigurē L3 saskarnes, lai varētu maršrutēt trafiku. Ir dažādi varianti, izmantosim IPIP, tā kā mikrotik atbalsta, es izmantotu vti, bet diemžēl vēl nav ieviests mikrotikā. Tas atšķiras no IPIP ar to, ka var papildus iekapsulēt multiraidi un ievietot fwmarks uz paketēm, ar kurām tās var filtrēt iptables un iproute2 (uz politiku balstīta maršrutēšana). Ja nepieciešama maksimāla funkcionalitāte, tad, piemēram, GRE. Taču neaizmirstiet, ka mēs maksājam par papildu funkcionalitāti ar lielu augšējo galvu.
Jūs varat redzēt tulkojumu labam tuneļa saskarņu pārskatam
Operētājsistēmā 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
Tagad jūs varat pievienot maršrutus tīkliem aiz mikrotik
sudo ip route add A.B.C.D/Prefix via 192.168.255.2
Lai mūsu saskarne un maršruti tiktu parādīti pēc pārstartēšanas, mums ir jāapraksta saskarne /etc/network/interfaces un jāpievieno maršruti tur post-up, vai arī jāraksta viss vienā failā, piemēram, /etc/ ipip-ipsec0.conf un izvelciet to caur post-up, neaizmirstiet par faila īpašnieku, tiesībām un padariet to izpildāmu.
Zemāk ir faila piemērs
#!/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
Vietnē Mikrotik:
Sadaļā “Interfeisi”, pievienojiet jaunu interfeisu “IP tunelis”:
Cilne “IP tunelis” - “Vispārīgi”
Parametrs
Vērtība
Vārds
Pēc jūsu ieskatiem (turpmāk tekstā IPIP-IPsec0)
MTU
1480 (ja nav norādīts, mikrotik sāk griezt mtu uz 68)
Vietējā adrese
192.168.0.2
Attālā adrese
192.168.0.1
IPsec noslēpums
Deaktivizējiet lauku (pretējā gadījumā tiks izveidots jauns līdzinieks)
uzturēt dzīvu
Deaktivizējiet lauku (pretējā gadījumā saskarne pastāvīgi izslēgsies, jo mikrotikai šīm pakotnēm ir savs formāts un tā nedarbojas ar Linux)
DSCP
mantot
Nesadrumstalojiet
Nē
Saspiediet TCP MSS
patiess
Atļaut ātro ceļu
patiess
Sadaļā “IP” - “Adreses”, pievienojiet adresi:
Parametrs
Vērtība
Adrese
192.168.0.2/30
interfeiss
IPIP-IPsec0
Tagad varat pievienot maršrutus tīklam aiz Linux mašīnas; pievienojot maršrutu, vārteja būs mūsu IPIP-IPsec0 saskarne.
PS
Tā kā mūsu Linux serveris ir pārejošs, ir lietderīgi tajā iestatīt parametru Clamp TCP MSS ipip saskarnēm:
izveidojiet failu /etc/iptables.conf ar šādu saturu:
*mangle
-A POSTROUTING -o ipip+ -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
COMMIT
un mapē /etc/network/interfaces
post-up iptables-restore < /etc/iptables.conf
Man ir nginx, kas darbojas tīklā aiz mikrotik (ip 10.10.10.1), padariet to pieejamu no interneta, pievienojiet to /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
Ja ir iespējoti pakešu filtri, neaizmirstiet pievienot atbilstošās atļaujas iptables.
Palikt veseliem!
Avots: www.habr.com