IPIP IPsec VPN tunnel tali sa Linux makina ug Mikrotik sa luyo sa NAT sa provider

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 nga artikulo у vvpoloskin.

I-install ang gikinahanglan nga mga pakete:

sudo install racoon ipsec-tools

Atong 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.key

Atong 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.key

ug 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 racoon

Kung 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 tunnel

Kung 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 dinhi.

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-ipsec0

Karon 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.2

Aron 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.2

Sa 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
COMMIT

ug 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

Pagpalit kasaligan nga pag-host alang sa mga site nga adunay proteksyon sa DDoS, mga server sa VPS VDS 🔥 Pagpalit og kasaligang website hosting nga adunay proteksyon sa DDoS, VPS VDS servers | ProHoster