Tunail IPIP IPsec VPN eadar inneal Linux agus Mikrotik air cùl solaraiche NAT

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

  • Eth0 1.1.1.1/32 IP taobh a-muigh
  • Bidh ipip-ipsec0 192.168.0.1/30 mar an tunail againn

Miktoik: CCR 1009, RouterOS 6.46.5

  • Eth0 10.0.0.2/30 IP a-staigh bhon t-solaraiche. Tha IP NAT taobh a-muigh an t-solaraiche fiùghantach.
  • Bidh ipip-ipsec0 192.168.0.2/30 mar an tunail againn

Cruthaichidh sinn tunail IPsec air inneal Linux a’ cleachdadh racoon. Cha toir mi cunntas air a’ mhion-fhiosrachadh, tha fear math ann artaigil у vvpoloskin.

Stàlaich na pacaidean riatanach:

sudo install racoon ipsec-tools

Bidh sinn a’ rèiteachadh racoon, bidh e mar fhrithealaiche ipsec le cumha. Leis nach urrainn dha mikrotik sa phrìomh mhodh aithnichear teachdaiche a bharrachd a thar-chuir, agus gu bheil an seòladh IP taobh a-muigh tron ​​​​bheil e a’ ceangal ri Linux fiùghantach, chan obraich le bhith a’ cleachdadh iuchair ro-roinnte (ceadachadh facal-faire), oir feumaidh am facal-faire a bhith air a mhaidseadh an dàrna cuid le seòladh IP na an òstair ceangail, no le aithnichear.

Cleachdaidh sinn cead le bhith a’ cleachdadh iuchraichean RSA.

Bidh an daemon racoon a’ cleachdadh iuchraichean ann an cruth RSA, agus bidh mikrotik a’ cleachdadh an cruth PEM. Ma ghineas tu iuchraichean a’ cleachdadh a’ ghoireas plainrsa-gen a thig an cois racoon, cha bhith e comasach dhut an iuchair phoblach airson Mikrotika a thionndadh gu cruth PEM le a chuideachadh - bidh e ag atharrachadh ann an aon taobh a-mhàin: PEM gu RSA. Cha b’ urrainn do openssl no ssh-keygen an iuchair ghineadh le plainrsa-gen a leughadh, agus mar sin cha ghabh an tionndadh a dhèanamh gan cleachdadh nas motha.

Ginidh sinn iuchair PEM a’ cleachdadh openssl agus an uairsin tionndaidhidh sinn e airson racoon a’ cleachdadh 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

Cuiridh sinn na h-iuchraichean a fhuair sinn sa phasgan: /etc/racoon/certs/server. Na dì-chuimhnich gun cuir thu sealbhadair an neach-cleachdaidh fon ainm a tha an daemon racoon air a chuir air bhog (mar as trice freumh) gu 600 cead.

Bheir mi cunntas air suidheachadh mikrotik nuair a nì mi ceangal tro WinBox.

Luchdaich suas an iuchair server-name.pub.pem gu mikrotik: Menu “Faidhlichean” - “Upload”.

Fosgail an earrann “IP” - “IP sec” - tab “Keys”. A-nis bidh sinn a’ gineadh iuchraichean - am putan “Generate Key”, an uairsin às-mhalairt an iuchair phoblach mikrotika “Expor Pub. Key", faodaidh sibh a luchdachadh a-nuas bho "Faidhlichean" earrann, deas-cliog air an fhaidhle - "Luchdaich a-nuas".

Bidh sinn a’ toirt a-steach an iuchair phoblach racoon, “Import”, anns an liosta tuiteam-sìos den raon “Ainm faidhle” a choimheadas sinn airson ainm an fhrithealaiche.pub.pem a luchdaich sinn sìos na bu thràithe.

Feumar an iuchair phoblach mikrotik a thionndadh

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

agus cuir anns a’ phasgan /etc/racoon/certs, gun a bhith a’ dìochuimhneachadh mun t-sealbhadair agus na còraichean.

racoon config le beachdan: /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; # Сжимать передаваемые данные, алгоритм сжатия предлагается только один.
}

rèiteachadh mikrotik

Till don roinn "IP" - "IPsec"

"Pròifilean" tab
Parameter
luach

Ainm
A rèir do thoil fhèin (gu bunaiteach)

Algorithm Hash
sha512

Algorithm crioptachaidh
aos-128

DH-Buidheann
modh 2048

Proposhal_check
tagradh

Alasdair MacColla
1d 00:00:00

NAT Traversal
fìor (thic sa bhogsa)

DPD
120

DPD Fàilligeadh as àirde
5

Clàr co-aoisean
Parameter
luach

Ainm
Mar as toil leat (ris an canar MyPeer an-seo)

seòladh
1.1.1.1 (innealan IP Linux)

Seòladh Ionadail
10.0.0.2 (microtik eadar-aghaidh IP WAN)

Cunntas
default

Modh iomlaid
prìomh

Tha e ciallach
ceàrr

Cuir INITIAL_CONTACT
fìor

Clàr tairgse
Parameter
luach

Ainm
Mar as toil leat (MyPeerProposal an seo)

Ùghdar. Algorithms
sha512

Encr. Algorithms
aes-128-cbc

Alasdair MacColla
08:00:00

Buidheann PFS
modh 2048

tab "Dearbh-aithne".
Parameter
luach

Piorra
Mo Pheadair

Ath. Dòigh-obrach
iuchair rsa

prìomh
mikrotik.privet.key

Iuchair iomallach
server-name.pub.pem

Buidheann teamplaid poileasaidh
default

Slabhraidh Notrack
falamh

An seòrsa ID agam
càr

Seòrsa ID iomallach
càr

Maids Le
id iomallach

Rèiteachadh Modh
falamh

Cruthaich Poileasaidh
chan eil

Tab "Poileasaidhean - Coitcheann"
Parameter
luach

Piorra
Mo Pheadair

Tunail
fìor

Src. Seòladh
192.168.0.0/30

Deist. Seòladh
192.168.0.0/30

Pròtacal
255 (uile)

teamplaid
ceàrr

Tab "Poileasaidhean - Gnìomh"
Parameter
luach

Gnìomh
Encrypt

Ìre
feum

Pròtacalan IPsec
esp

Moladh
MyPeerProposal

Is coltaiche, mar mise, gu bheil snat / masquerade agad air a rèiteachadh air an eadar-aghaidh WAN agad; feumar an riaghailt seo atharrachadh gus am bi pacaidean ipsec a tha a’ dol a-mach a’ dol a-steach don tunail againn:
Rach don roinn "IP" - "Calla-teine".
Tab “NAT”, fosgail an riaghailt snat/masquerade againn.

Tab adhartach
Parameter
luach

Poileasaidh IPsec
a-mach: gin

Ath-thòiseachadh an racoon demon

sudo systemctl restart racoon

Mura tòisich racoon air ath-thòiseachadh, tha mearachd anns an rèiteachadh; ann an syslog, tha racoon a’ taisbeanadh fiosrachadh mun àireamh loidhne anns an deach a’ mhearachd a lorg.

Nuair a thòisicheas an OS, tòisichidh an daemon racoon mus tèid an eadar-aghaidh lìonra a thogail, agus shònraich sinn an roghainn strict_address anns an roinn èisteachd; feumaidh tu an aonad racoon a chuir ris an fhaidhle systemd
/lib/systemd/system/racoon.service, anns an roinn [Aonad], loidhne After=network.target.

A-nis bu chòir na tunailean ipsec againn a bhith suas, thoir sùil air an toradh:

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

Mura h-eil na tunailean suas, seall air syslog, no journalctl -u racoon.

A-nis feumaidh tu eadar-aghaidh L3 a rèiteachadh gus an tèid trafaic a stiùireadh. Tha diofar roghainnean ann, cleachdaidh sinn IPIP, leis gu bheil mikrotik a ’toirt taic dha, bhithinn a’ cleachdadh vti, ach, gu mì-fhortanach, cha deach a chuir an gnìomh fhathast ann am mikrotik. Tha e eadar-dhealaichte bho IPIP leis gum faod e cuideachd multicast a chuairteachadh agus fwmarks a chuir air pacaidean, leis an urrainnear an sìoladh ann an iptables agus iproute2 (slighe stèidhichte air poileasaidh). Ma tha feum agad air comas-gnìomh as motha, an uairsin, mar eisimpleir, GRE. Ach na dì-chuimhnich gum pàigh sinn airson gnìomhachd a bharrachd le ceann mòr os cionn.

Chì thu an eadar-theangachadh de dheagh lèirmheas air eadar-aghaidh tunail an seo.

Air 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

A-nis faodaidh tu slighean airson lìonraidhean a chuir air cùl mikrotik

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

Gus an tèid ar n-eadar-aghaidh agus na slighean againn a thogail às deidh ath-thòiseachadh, feumaidh sinn cunntas a thoirt air an eadar-aghaidh ann an /etc/network/interfaces agus slighean a chur ris anns a’ phost-suas, no a h-uile càil a sgrìobhadh ann an aon fhaidhle, mar eisimpleir, /etc/ ipip-ipsec0.conf agus tarraing e tro phost-suas, na dì-chuimhnich mu shealbhadair an fhaidhle, còraichean agus dèan e so-ghnìomhaichte.

Gu h-ìosal tha faidhle eisimpleir

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

Air Mikrotik:

Earrann “Interfaces”, cuir eadar-aghaidh ùr “IP tunail”:

Tab “IP tunail” - “Coitcheann”
Parameter
luach

Ainm
A rèir do thoil fhèin (air ainmeachadh an-seo mar IPIP-IPsec0)

DUINE
1480 (mura h-eil e air a shònrachadh, bidh mikrotik a’ tòiseachadh a ’gearradh mtu gu 68)

Seòladh Ionadail
192.168.0.2

Seòladh Iomallach
192.168.0.1

Dìomhair IPsec
Cuir dheth an raon (air neo thèid Peer ùr a chruthachadh)

Cùramach
Cuir dheth an raon (air dhòigh eile bidh an eadar-aghaidh an-còmhnaidh a’ tionndadh dheth, leis gu bheil a chruth fhèin aig mikrotika airson na pacaidean sin agus nach obraich e le Linux)

DSCP
oighre

Na dèan Fragment
chan eil

Clamp TCP MSS
fìor

Leig le Fast Path
fìor

Earrann “IP” - “Seòlaidhean”, cuir an seòladh:

Parameter
luach

seòladh
192.168.0.2/30

Interface
IPIP-IPsec0

A-nis faodaidh tu slighean a chuir ris an lìonra air cùl inneal Linux; nuair a chuireas tu slighe ris, is e geata an eadar-aghaidh IPIP-IPsec0 againn.

PS

Leis gu bheil ar frithealaiche Linux tar-ghluasadach, tha e ciallach am paramadair Clamp TCP MSS a shuidheachadh airson eadar-aghaidh ipip air:

cruthaich faidhle /etc/iptables.conf leis an t-susbaint a leanas:

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

agus ann an /etc/network/interfaces
post-up iptables-restore </etc/iptables.conf

Tha nginx agam a’ ruith air an lìonra air cùl mikrotik (ip 10.10.10.1), dèan e ruigsinneach bhon eadar-lìn, cuir ri /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 

Na dìochuimhnich na ceadan iomchaidh a chur ri iptables ma tha sìoltachain pacaid air an comasachadh.

Bi fallain!

Source: www.habr.com

Cuir beachd ann