Linux: Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-91-generic x86_64)
- Eth0 1.1.1.1/32 gawas IP
- Ang ipip-ipsec0 192.168.0.1/30 mao ang among tunnel
Miktoik: CCR 1009, RouterOS 6.46.5
- Eth0 10.0.0.2/30 internal IP gikan sa provider. Ang eksternal nga NAT IP sa provider dinamiko.
- Ang ipip-ipsec0 192.168.0.2/30 mao ang among tunnel
Ang tunel sa IPsec naka-on Linux Atong i-alsa ang sakyanan gamit ang racoon. Dili na ko mohatag og dugang detalye, naa'y maayo у .
I-install ang gikinahanglan nga mga pakete:
sudo install racoon ipsec-toolsAtong i-configure ang racoon, nga mo-akto isip IPsec server. Tungod kay ang Mikrotik sa main mode dili makapadala og dugang nga client identifier, ang external IP address diin kini makakonekta Linux Ang dynamic, ang paggamit og preshared key (password authorization) dili mogana, kay ang password kinahanglan nga ipares sa IP address sa nagkonektar nga host o sa usa ka identifier.
Atong gamiton ang pagtugot gamit ang RSA keys.
Ang racoon daemon naggamit sa mga yawe sa RSA format, ug mikrotik naggamit sa PEM format. Kung makamugna ka og mga yawe gamit ang plainrsa-gen utility nga adunay racoon, nan dili nimo mahimo ang pag-convert sa public key para sa Mikrotika ngadto sa PEM format uban sa tabang niini - kini nag-convert lamang sa usa ka direksyon: PEM ngadto sa RSA. Ang openssl o ssh-keygen dili makabasa sa namugna nga yawe pinaagi sa plainrsa-gen, mao nga ang pagkakabig dili usab posible nga gamiton kini.
Maghimo kami usa ka PEM key gamit ang openssl ug dayon i-convert kini alang sa racoon gamit ang 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.keyAtong ibutang ang nadawat nga mga yawe sa folder: /etc/racoon/certs/server. Ayaw kalimti nga itakda ang tag-iya sa tiggamit sa ilalum sa kansang ngalan ang racoon daemon gilunsad (kasagaran gamut) sa 600 nga mga pagtugot.
Akong ihulagway ang mikrotik setup kung magkonektar pinaagi sa WinBox.
I-upload ang server-name.pub.pem key sa mikrotik: Menu “Files” - “Upload”.
Ablihi ang seksyon nga "IP" - "IP sec" - tab nga "Mga yawe". Karon makamugna kami og mga yawe - ang "Generate Key" nga buton, unya i-export ang mikrotika public key nga "Expor Pub. Yawe", mahimo nimo kini i-download gikan sa seksyon nga "Mga File", pag-right-click sa file - "Pag-download".
Gi-import namo ang racoon public key, "Import", sa drop-down list sa "File name" nga field among gipangita ang server-name.pub.pem nga among gi-download sa sayo pa.
Ang mikrotik public key kinahanglan nga makabig
plainrsa-gen -i mikrotik.pub.pem -f mikrotik.pub.keyug ibutang kini sa /etc/racoon/certs folder, nga dili makalimot sa tag-iya ug katungod.
racoon config nga adunay mga komento: /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 config
Balik sa seksyon nga "IP" - "IPsec"
"Mga Profile" nga tab
Parameter
bili
ngalan
Sa imong pagkabuotan (sa default default)
Hash Algorithm
sha512
Algoritma sa Pag-encrypt
aes-128
DH-Grupo
modp2048
Proposhal_check
pag-angkon
Tibuok Kinabuhi nga
1d 00:00:00
NAT Traversal
tinuod (tsek ang kahon)
DPD
120
DPD Maximum nga kapakyasan
5
Tab sa mga kaedad
Parameter
bili
ngalan
Sa imong pagkabuotan (pagkahuman gitawag nga MyPeer)
Address
1.1.1.1 (IP Linux nga mga makina)
Lokal nga Address
10.0.0.2 (IP WAN interface mikrotik)
Profile
Default
Pag-ilis sa Mode
nag-unang
Pasaporte
bakak nga mga
Ipadala INITIAL_CONTACT
tinuod nga
Tab sa sugyot
Parameter
bili
ngalan
Sa imong pagkabuotan (pagkahuman gitawag nga MyPeerProposal)
Awth. Algorithm
sha512
Si Encr. Algorithm
aes-128-cbc
Tibuok Kinabuhi nga
08:00:00
Grupo sa PFS
modp2048
"Mga Identidad" nga tab
Parameter
bili
Ang kauban
MyPeer
Atuh. Pamaagi
rsa yawe
Key
mikrotik.privet.key
Layo nga Yawi
server-name.pub.pem
Grupo sa Template sa Polisiya
Default
Notrack Chain
walay sulod
Akong ID Type
sakyanan
Layo nga ID Type
sakyanan
Match Ni
layo nga id
Pag-configure sa Mode
walay sulod
Paghimo og Polisiya
Dili
Tab "Mga Polisiya - Kinatibuk-an"
Parameter
bili
Ang kauban
MyPeer
Tunel
tinuod nga
Si Src. Address
192.168.0.0/30
Ang Dest. Address
192.168.0.0/30
Protocol
255 (tanan)
Plantilya
bakak nga mga
Tab "Mga Polisiya - Aksyon"
Parameter
bili
Action
Encrypt
Level
nagkinahanglan
Mga Protokol sa IPsec
esp
Proposal
MyPeerProposal
Lagmit, sama kanako, ikaw adunay snat/masquerade nga na-configure sa imong WAN interface; kini nga lagda kinahanglang i-adjust aron ang mga outgoing ipsec packets moadto sa among tunnel:
Lakaw ngadto sa seksyon nga "IP" - "Firewall".
"NAT" nga tab, ablihi ang among snat/masquerade nga lagda.
Advanced nga Tab
Parameter
bili
Polisiya sa IPsec
gawas: wala
I-restart ang racoon nga demonyo
sudo systemctl restart racoonKung ang racoon dili magsugod sa pagsugod pag-usab, nan adunay sayup sa config; sa syslog, ang racoon nagpakita sa kasayuran bahin sa numero sa linya diin ang sayup nakit-an.
Kung nag-boot ang OS, ang racoon daemon magsugod sa wala pa ang mga interface sa network gipataas, ug among gipiho ang kapilian nga strict_address sa seksyon sa pagpamati; kinahanglan nimo nga idugang ang racoon unit sa systemd file
/lib/systemd/system/racoon.service, sa [Unit] nga seksyon, linya After=network.target.
Karon ang among ipsec tunnels kinahanglan nga pataas, tan-awa ang 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 tunnelKung ang mga tunel wala pa, tan-awa ang syslog, o journalctl -u racoon.
Karon kinahanglan nimo nga i-configure ang mga interface sa L3 aron ang trapiko madala. Adunay lain-laing mga kapilian, atong gamiton IPIP, tungod kay mikrotik nagsuporta niini, ako mogamit sa vti, apan, sa kasubo, kini wala pa gipatuman sa mikrotik. Lahi kini sa IPIP tungod kay mahimo usab nga i-encapsulate ang multicast ug ibutang ang mga fwmark sa mga pakete, diin mahimo silang masala sa mga iptables ug iproute2 (pag-ruta nga nakabase sa palisiya). Kung kinahanglan nimo ang labing kadaghan nga gamit, nan, pananglitan, GRE. Apan ayaw kalimti nga nagbayad kami alang sa dugang nga pag-andar nga adunay dako nga overhead nga ulo.
Imong makita ang hubad sa usa ka maayong pagrepaso sa mga interface sa tunnel .
sa 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-ipsec0Karon mahimo nimong idugang ang mga ruta alang sa mga network luyo sa mikrotik
sudo ip route add A.B.C.D/Prefix via 192.168.255.2Aron mapataas ang among interface ug mga ruta pagkahuman sa pag-reboot, kinahanglan namon nga ihulagway ang interface sa /etc/network/interfaces ug idugang ang mga ruta didto sa post-up, o isulat ang tanan sa usa ka file, pananglitan, /etc/ ipip-ipsec0.conf ug ibira kini pinaagi sa post-up, ayaw kalimti ang bahin sa tag-iya sa file, mga katungod ug himoa kini nga ma-executable.
Sa ubos usa ka pananglitan nga file
#!/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.2Sa Mikrotik:
Seksyon "Mga Interface", pagdugang usa ka bag-ong interface "IP tunnel":
Tab "IP tunnel" - "General"
Parameter
bili
ngalan
Sa imong pagkabuotan (pagkahuman gitawag nga IPIP-IPsec0)
MTU
1480 (kon dili espesipiko, ang mikrotik magsugod sa pagputol sa mtu ngadto sa 68)
Lokal nga Address
192.168.0.2
Hilit nga Address
192.168.0.1
Sekreto sa IPsec
I-deactivate ang field (kon dili usa ka bag-ong Peer ang pagabuhaton)
Mapadayonon
I-deactivate ang field (kung dili ang interface kanunay nga mapalong, tungod kay ang mikrotika adunay kaugalingon nga format alang niini nga mga pakete ug dili molihok sa Linux)
Ang DSCP
pagpanunod
Ayaw Pagtipiktipik
Dili
I-clamp ang TCP MSS
tinuod nga
Tugoti ang Paspas nga Dalan
tinuod nga
Seksyon "IP" - "Address", idugang ang adres:
Parameter
bili
Address
192.168.0.2/30
interface
IPIP-IPsec0
Karon mahimo nimong idugang ang mga ruta sa network sa luyo sa usa ka makina sa Linux; kung magdugang usa ka ruta, ang ganghaan mao ang among interface sa IPIP-IPsec0.
PS
Tungod kay ang among Linux server kay transitive, makatarunganon nga ibutang ang Clamp TCP MSS parameter alang sa mga interface sa ipip niini:
paghimo og file /etc/iptables.conf uban sa mosunod nga mga sulod:
*mangle
-A POSTROUTING -o ipip+ -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
COMMITug sa /etc/network/interfaces
post-up iptables-restore </etc/iptables.conf
Ako adunay nginx nga nagdagan sa network luyo sa mikrotik (ip 10.10.10.1), himoa kini nga ma-access gikan sa Internet, idugang kini sa /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 Ayaw kalimti nga idugang ang angay nga mga pagtugot sa mga iptables kung imong gipaandar ang mga packet filter.
Panalanginan ka!
Source: www.habr.com
