IPIP IPsec VPN tunnel inta u dhaxaysa mishiinka Linux iyo Mikrotik gadaasha bixiyaha NAT

Linux: Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-91-guud x86_64)

  • Eth0 1.1.1.1/32 dibadda IP
  • ipip-ipsec0 192.168.0.1/30 ayaa noqon doonta tunnelkeena

Miktoik: CCR 1009, RouterOS 6.46.5

  • Eth0 10.0.0.2/30 gudaha IP ka bixiyaha. NAT IP-ga dibadda ee bixiyaha waa mid firfircoon.
  • ipip-ipsec0 192.168.0.2/30 ayaa noqon doonta tunnelkeena

Waxaan ku abuuri doonaa IPsec tunnel mashiinka Linux anagoo adeegsanayna racoon. Ma qeexi doono faahfaahinta, waxaa jira mid wanaagsan maqaal у vvpoloskin.

Ku rakib xirmooyinka lagama maarmaanka ah:

sudo install racoon ipsec-tools

Waxaan dejineynaa racoon, waxay shuruud ahaan u shaqeyn doontaa sidii server-ka ipsec. Maaddaama mikrotik ee qaabka ugu weyn uusan gudbin karin aqoonsi macmiil oo dheeri ah, iyo cinwaanka IP-ga dibadda ee uu ku xirayo Linux waa firfircoon yahay, adeegsiga furaha horay loo wadaagay (ogolaanshaha erayga sirta ah) ma shaqeyn doono, maadaama erayga sirta ah uu la mid yahay cinwaanka IP-ga martigeliyaha isku xira, ama leh aqoonsi.

Waxaan isticmaali doonaa oggolaanshaha anagoo adeegsanayna furayaasha RSA.

Daemon-ka racoon wuxuu isticmaalaa furayaasha qaabka RSA, mikrotikna wuxuu isticmaalaa qaabka PEM. Haddii aad abuurto furayaal adoo isticmaalaya utility plainrsa-gen ee la socota racoon, markaa ma awoodi doontid inaad u beddesho furaha dadweynaha ee Mikrotika qaabka PEM iyada oo caawinteeda - waxay u beddeshaa kaliya hal jiho: PEM ilaa RSA. Openssl iyo ssh-keygen midkoodna ma akhrin karo furaha uu soo saaray plainrsa-gen, markaa beddelaaddu suurtagal ma noqon doonto iyaga oo la isticmaalo.

Waxaan soo saari doonaa furaha PEM anagoo adeegsanayna openssl ka dibna waxaan u bedeli doonaa racoon anagoo adeegsanayna 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

Waxaan gelin doonaa furayaasha la helay galka: /etc/racoon/certs/server. Ha iloobin inaad dejiso milkiilaha isticmaalaha magaciisa hoostiisa racoon daemon la bilaabay (badanaa xidid) ilaa 600 ogolaansho.

Waxaan sharxi doonaa dejinta mikrotik marka la isku xiro WinBox.

U soo deji server-name.pub.pem furaha mikrotik: Menu “Files” - “Upload”.

Fur qaybta "IP" - "IP sec" - "Furayaasha" tab. Hadda waxaan soo saareynaa furayaasha - badhanka "Samee Furaha", ka dibna dhoofin furaha dadweynaha ee mikrotika "Expor Pub. Furaha", waxaad ka soo dejisan kartaa qaybta "Files", midig-guji faylka - "Download".

Waxaan soo dejineynaa furaha dadweynaha ee racoon, "Import", liiska hoos-u-hoosaadka ee "Magaca faylka" ee goobta waxaan ka raadineynaa server-name.pub.pem aan horay u soo dejinay.

Furaha guud ee mikrotik wuxuu u baahan yahay in la beddelo

plainrsa-gen -i mikrotik.pub.pem -f mikrotik.pub.key

oo geli faylka /etc/racoon/certs, adigoon iloobin milkiilaha iyo xuquuqda.

racoon config oo leh faallooyin: /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

Ku noqo qaybta "IP" - "IPsec"

"Profiles" tab
Xildhibaan
qiimaha

magaca
Go'aankaaga (by default default)

Hash Algorithm
sha512

Algorithm-ka sirta
aes-128

Kooxda DH-Group
modp2048

Proposhal_check
sheegasho

Lifetime
1d 00:00:00

Socdaalka NAT
run ( calaamee sanduuqa)

DPD
120

DPD fashilka ugu badan
5

Saaxiibada tab
Xildhibaan
qiimaha

magaca
Go'aankaaga (hadda kadib waxaa loo yaqaan MyPeer)

Cinwaanka
1.1.1.1 (Mashiinnada IP Linux)

Cinwaanka Maxaliga ah
10.0.0.2 (IP WAN interface mikrotik)

Profile
Default

Habka Beddelka
ugu weyn ee

dadban
been ah

Dir INITIAL_CONTACT
run

Tabaha soo jeedinta
Xildhibaan
qiimaha

magaca
Go'aankaaga (hadda kadib waxaa loo yaqaan MyPeerProposal)

Xaqiijin Algorithms
sha512

Encr. Algorithms
aes-128-cbc

Lifetime
08:00:00

Kooxda PFS
modp2048

"Aqoonsiga" tab
Xildhibaan
qiimaha

Asxaabta
MyPeer

Atuuh. Habka
rsa key

Key
mikrotik.privet.key

Furaha Fog
server-name.pub.pem

Kooxda Qaababka Siyaasadda
Default

Silsiladda Notrack
madhan

Nooca Aqoonsigayga
baabuur

Nooca Aqoonsiga fog
baabuur

Ciyaarta By
id fog

Habaynta Qaabka
madhan

Siyaasad abuur
maya

Tab "Siyaasadaha - Guud"
Xildhibaan
qiimaha

Asxaabta
MyPeer

tunnel
run

Src. Cinwaanka
192.168.0.0/30

Dest. Cinwaanka
192.168.0.0/30

Protocol
255 (dhammaan)

Template
been ah

Tab "Siyaasadaha - Tallaabo"
Xildhibaan
qiimaha

Action
qarsoodi

heerka
u baahan

IPsec Protocols
gaar ahaan

Soo jeedinta
MyPeerProposal

Waxay u badan tahay, sidayda oo kale, inaad ku dhejisay is-dhexgalka WAN-gaaga; xeerkan wuxuu u baahan yahay in la hagaajiyo si baakadaha ipsec ee baxaya ay u galaan tunnel-kayaga:
Tag qaybta "IP" - "Firewall".
"NAT" tab, fur qaanuunka snt/masquerade.

Tab horumarsan
Xildhibaan
qiimaha

Siyaasadda IPsec
baxay: midna

Dib u bilaabaya shaydaanka racoon

sudo systemctl restart racoon

Haddii racoon uusan bilaabin dib u bilaabashada, markaa waxaa jira qalad ku jira qaabeynta; syslog, racoon wuxuu soo bandhigayaa macluumaadka ku saabsan lambarka khadka ee qaladka lagu ogaaday.

Marka OS-ga kabaha la geliyo, daemon-ka racoon-ku wuxuu bilaabmaa ka hor inta aan la soo saarin is-dhexgalka shabakada, waxaanan ku qeexnay ikhtiyaarka adag_address ee qaybta dhegeysiga; waxaad u baahan tahay inaad ku darto unugga racoon faylka nidaamka
/lib/systemd/system/racoon.service, ee qaybta [Unit], line After=network.target.

Hadda tunnel-kayaga ipsec waa inuu kor u kacaa, fiiri wax soo saarka:

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

Haddii tunneladu aysan kor u kicin, fiiri syslog, ama journalctl -u racoon.

Hadda waxaad u baahan tahay inaad habayso interfaces L3 si taraafikada loo maro. Waxaa jira xulashooyin kala duwan, waxaan isticmaali doonaa IPIP, maadaama mikrotik ay taageerto, waxaan isticmaali lahaa vti, laakiin, nasiib daro, weli laguma hirgelin mikrotik. Waxay kaga duwan tahay IPIP in ay sidoo kale koobin karto multicast oo ay ku dhejin karto fwmarks baakadaha kuwaas oo lagu sifeyn karo iptables iyo iproute2 (routing siyaasadda ku salaysan). Haddii aad u baahan tahay shaqada ugu badan, markaa, tusaale ahaan, GRE. Laakin ha iloobin in aan ku bixino shaqeyn dheeraad ah oo leh madax weyn.

Waxaad arki kartaa tarjumaadda dulmar wanaagsan oo ku saabsan is-dhexgalka tunnel-ka halkan.

On 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

Hadda waxaad ku dari kartaa waddooyinka shabakadaha ka dambeeya mikrotik

sudo ip route add A.B.C.D/Prefix via 192.168.255.2

Si interface-kayaga iyo dariiqaheenna kor loogu qaado ka dib dib-u-kicinta, waxaan u baahanahay inaan ku qeexno interface-ka /etc/network/interfaces oo aan ku darno dariiqyada halkaas ka dambeeya, ama wax kasta ku qor hal fayl, tusaale ahaan, / iwm/ ipip-ipsec0.conf oo u soo jiid boostada, ha ilaawin milkiilaha faylka, xuquuqaha oo ka dhig mid la fulin karo.

Hoos waxaa ku yaal fayl tusaale

#!/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

On Mikrotik:

Qaybta "Interfaces", ku dar interface cusub "tunnel IP":

Tabka "tunalka IP" - "Guud"
Xildhibaan
qiimaha

magaca
Adigoo go'aankaaga ah (hadda kadib waxaa loo yaqaan IPIP-IPsec0)

QOFKA
1480 (haddii aan la cayimin, mikrotik wuxuu bilaabay inuu gooyo mtu ilaa 68)

Cinwaanka Maxaliga ah
192.168.0.2

Ciwaanka Fog
192.168.0.1

IPsec Secret
Demi garoonka (hadii kale Peer cusub ayaa la abuuri doonaa)

Ilaali
Demi goobta (haddii kale interface-ku si joogto ah ayuu u dami doonaa, maadaama mikrotika uu leeyahay qaab u gaar ah xirmooyinkan oo aanu la shaqayn Linux)

DSCP
dhaxasho

Ha jajabin
maya

Ku dheji TCP MSS
run

Allow Dariiqa Dhakhso leh
run

Qaybta "IP" - "Cinwaanka", ku dar cinwaanka:

Xildhibaan
qiimaha

Cinwaanka
192.168.0.2/30

Wajahadda
IPIP-IPsec0

Hadda waxaad ku dari kartaa dariiqyada shabakadda ee ka dambeeya mishiinka Linux; markaad ku darto waddo, albaabku wuxuu noqon doonaa interface IPIP-IPsec0.

PS

Maaddaama server-keena Linux uu yahay ku-meel-gaar, waxaa macno leh in la dejiyo cabbirka Clamp TCP MSS ee is-dhexgalka ipip:

samee fayl /etc/iptables.conf oo wata waxyaabahan soo socda:

*mangle
-A POSTROUTING -o ipip+ -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
COMMIT

iyo gudaha /etc/network/interfaces
Dib-u-soo-celinta iptables-ka-soo-celinta </etc/iptables.conf

Waxaan haystaa nginx oo ku shaqeeya shabakada ka dambeysa mikrotik (ip 10.10.10.1), ka dhig mid laga heli karo internetka, ku dar /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 

Ha iloobin inaad ku darto rukhsadaha ku habboon iptables haddii aad leedahay filtarrada baakadaha karti u leh.

Caafimaadkaagu ha ahaado!

Source: www.habr.com