IPIP IPsec VPN kotopo lipakeng tsa mochini oa Linux le Mikrotik ka morao ho mofani oa NAT

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

  • Eth0 1.1.1.1/32 IP e kantle
  • ipip-ipsec0 192.168.0.1/30 e tla ba kotopo ea rona

Miktoik: CCR 1009, RouterOS 6.46.5

  • Eth0 10.0.0.2/30 IP ea ka hare ho tsoa ho mofani. NAT IP ea kantle ea mofani e matla.
  • ipip-ipsec0 192.168.0.2/30 e tla ba kotopo ea rona

Re tla theha kotopo ea IPsec mochining oa Linux o sebelisang racoon. Ha ke na ho hlalosa lintlha, ho na le e ntle sehlooho у vvpoloskin.

Kenya liphutheloana tse hlokahalang:

sudo install racoon ipsec-tools

Re lokisa racoon, e tla sebetsa e le seva sa ipsec. Kaha mikrotik ka mokhoa o ka sehloohong ha e khone ho fetisetsa sekhetho se eketsehileng sa bareki, 'me aterese ea IP e ka ntle eo e hokahanyang le Linux e matla, ho sebelisa senotlolo se arolelanoang pele (tumello ea password) e ke ke ea sebetsa, kaha phasewete e tlameha ho tsamaisana le aterese ea IP. moamoheli ea hokahanyang, kapa ka sesupo.

Re tla sebelisa tumello re sebelisa linotlolo tsa RSA.

Daemon ea racoon e sebelisa linotlolo ka sebopeho sa RSA, 'me mikrotik e sebelisa sebopeho sa PEM. Haeba u hlahisa linotlolo u sebelisa plainrsa-gen utility e tlang le racoon, joale u ke ke ua khona ho fetola senotlolo sa sechaba bakeng sa Mikrotika ho sebopeho sa PEM ka thuso ea eona - e fetolela ka tsela e le 'ngoe feela: PEM ho RSA. Leha e le openssl kapa ssh-keygen e ne e khona ho bala senotlolo se hlahisitsoeng ke plainrsa-gen, kahoo phetolo e ke ke ea khonahala le ho e sebelisa.

Re tla hlahisa senotlolo sa PEM re sebelisa openssl ebe re se fetolela bakeng sa racoon re sebelisa 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

Re tla kenya linotlolo tse amoheloang foldareng: /etc/racoon/certs/server. Se ke oa lebala ho beha mong'a mosebelisi eo lebitso la hae la racoon e qalisoang (hangata e le motso) ho litumello tse 600.

Ke tla hlalosa ho seta ha mikrotik ha o hokela ka WinBox.

Kenya konopo ea server-name.pub.pem ho mikrotik: Menu "Lifaele" - "Kenya".

Bula karolo ea "IP" - "IP sec" - "Linotlolo" tab. Hona joale re hlahisa linotlolo - konopo ea "Generate Key", ebe u romela senotlolo sa sechaba sa mikrotika "Expor Pub. Key", o ka e jarolla ho tsoa karolong ea "Files", tobetsa ka ho le letona faeleng - "Download".

Re kenya senotlolo sa sechaba sa racoon, "Import", lenaneng le theohang la "File Name" tšimong eo re e batlang seva-name.pub.pem eo re e kopitsitseng pejana.

Senotlolo sa sechaba sa mikrotik se hloka ho fetoloa

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

'me ue kenye foldareng ea /etc/racoon/certs, u sa lebale ka mong'a lona le litokelo.

racoon config le litlhaloso: /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

Khutlela karolong ea "IP" - "IPsec"

"Profiles" tab
Parameter
boleng

lebitso
Ka boikhethelo ba hau (ka ho sa feleng)

Hash algorithm
sha512

Algorithm ea encryption
tse-128

DH-Sehlopha
modp2048

Proposhal_check
Kleima

Bophelong
1d 00:00:00

Phatlalatso ea NAT
'nete (sheba lebokose)

DPD
120

DPD Ho hloleha ho hoholo
5

Taba ea lithaka
Parameter
boleng

lebitso
Ka boikhethelo ba hau (eo hamorao e tla bitsoa MyPeer)

Address
1.1.1.1 (mechini ea IP Linux)

Aterese ea Sebaka
10.0.0.2 (IP WAN interface mikrotik)

Profile
ya kamehla

Mokhoa oa Phapanyetsano
ka sehloohong

E makatsang
bohata

Romella INITIAL_CONTACT
'nete

Taba ea tlhahiso
Parameter
boleng

lebitso
Ka boikhethelo ba hau (eo hamorao e tla bitsoa MyPeerProposal)

Auth. Algorithms
sha512

Encr. Algorithms
aes-128-cbc

Bophelong
08:00:00

Sehlopha sa PFS
modp2048

"Identities" tab
Parameter
boleng

Lithaka
MyPeer

Atuh. Mokhoa
rsa senotlolo

Key
mikrotik.privet.key

Senotlolo sa Remote
lebitso la seva.pub.pem

Policy Template Group
ya kamehla

Notrack Chain
se nang letho

Mofuta oa ID ea ka
koloi

Mofuta oa ID o hole
koloi

Match By
id e hole

Tlhophiso ya Mokgwa
se nang letho

Hlahisa Leano
Che

Taba "Maano - Kakaretso"
Parameter
boleng

Lithaka
MyPeer

Tunnel
'nete

Src. Aterese
192.168.0.0/30

Dest. Aterese
192.168.0.0/30

melaoana
255 (kaofela)

thempleite
bohata

Taba "Maano - Ketso"
Parameter
boleng

Action
ho kenyeletsa

Nete
hloka

IPsec Protocols
esp

Proposal
MyPeerProposal

Mohlomong, joalo ka 'na, u na le snat/masquerade e hlophisitsoeng sebopehong sa hau sa WAN; molao ona o hloka ho lokisoa e le hore lipakete tsa ipsec tse tsoang ka har'a kotopo ea rona:
Eya ho "IP" - "Firewall" karolo.
"NAT", bula molao oa rona oa snat/masquerade.

Taba e tsoetseng pele
Parameter
boleng

Leano la IPsec
tsoa: ha ho letho

Ho qala hape modemona oa racoon

sudo systemctl restart racoon

Haeba racoon e sa qale ha e qala hape, ho na le phoso ho config; ho syslog, racoon e bonts'a tlhahisoleseling mabapi le nomoro ea mohala eo phoso e fumanoeng ho eona.

Ha lihoete tsa OS, daemon ea racoon e qala pele li-interface tsa marang-rang li hlahisoa, 'me re hlalositse khetho e thata_ea aterese karolong ea ho mamela; o hloka ho eketsa yuniti ea racoon faeleng ea systemd.
/lib/systemd/system/racoon.service, karolong ea [Unit], mola After=network.target.

Joale lithapo tsa rona tsa ipsec li lokela ho phahama, sheba sephetho:

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

Haeba lithanele li sa phahama, sheba syslog, kapa journalctl -u racoon.

Hona joale o hloka ho lokisa li-interface tsa L3 e le hore sephethephethe se ka tsamaisoa. Ho na le likhetho tse fapaneng, re tla sebelisa IPIP, kaha mikrotik e e tšehetsa, ke ne ke tla sebelisa vti, empa, ka bomalimabe, ha e e-s'o sebelisoe ka mikrotik. E fapane le IPIP ka hore e ka kenyelletsa li-multicast le ho beha li-fwmarks lipaketeng, tseo ka tsona li ka hloekisoang ka li-iptables le iproute2 (routing e thehiloeng leanong). Haeba o hloka ts'ebetso e phahameng, joale, mohlala, GRE. Empa u se ke ua lebala hore re lefella ts'ebetso e eketsehileng ka hlooho e kholo ea hlooho.

U ka bona phetolelo ea tlhahlobo e ntle ea lihokelo tsa lithanele mona.

Ho 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

Hona joale o ka eketsa litsela tsa marang-rang ka morao ho mikrotik

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

E le hore sebopeho sa rona le litsela li phahamisoe ka mor'a ho qala bocha, re hloka ho hlalosa sebopeho ho / joalo-joalo / marang-rang / li-interfaces le ho eketsa litsela moo ho poso, kapa ho ngola ntho e 'ngoe le e' ngoe ka faele e le 'ngoe, mohlala, / joalo-joalo. ipip-ipsec0.conf 'me ue hule ka poso, u se ke ua lebala ka mong'a faele, litokelo le ho etsa hore e phethahale.

Ka tlase ke mohlala oa faele

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

Ka Mikrotik:

Karolo ea "Li-interfaces", eketsa sebopeho se secha "IP tunnel":

Taba "IP kotopo" - "Kakaretso"
Parameter
boleng

lebitso
Ka boikhethelo ba hau (eo hamorao e tla bitsoa IPIP-IPsec0)

MTU
1480 (haeba e sa hlalosoa, mikrotik e qala ho khaola motho ho isa ho 68)

Aterese ea Sebaka
192.168.0.2

Aterese e Hole
192.168.0.1

IPsec Lekunutu
Tlosa lebala (ho seng joalo ho tla etsoa Peer e ncha)

Boloka chelete
Tlosa tšimo (ho seng joalo sebopeho se tla tima kamehla, kaha mikrotika e na le sebopeho sa eona bakeng sa liphutheloana tsena 'me ha e sebetse le Linux)

DSCP
rua

U se ke ua Rata
Che

Hlakola TCP MSS
'nete

Lumella Tsela e Potlakileng
'nete

Karolo ea "IP" - "Liaterese", eketsa aterese:

Parameter
boleng

Address
192.168.0.2/30

segokanyimmediamentsi sa sebolokigolo
IPIP-IPsec0

Joale o ka eketsa litsela marang-rang ka mor'a mochini oa Linux; ha o eketsa tsela, heke e tla ba sebopeho sa rona sa IPIP-IPsec0.

PS

Kaha seva sa rona sa Linux se fetoha, hoa utloahala ho beha paramente ea Clamp TCP MSS bakeng sa li-interface tsa ipip ho eona:

theha faele /etc/iptables.conf ka litaba tse latelang:

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

le ho /etc/network/interfaces
post-up iptables-restore </etc/iptables.conf

Ke na le nginx e sebetsang marang-rang ka morao ho mikrotik (ip 10.10.10.1), etsa hore e fumanehe ho tsoa Inthaneteng, e kenyelle ho /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 

Se ke oa lebala ho kenyelletsa litumello tse nepahetseng ho li-iptables haeba u na le li-filters tsa pakete tse nolofalitsoeng.

Tlhohonolofatse!

Source: www.habr.com

Eketsa ka tlhaloso