IPIP IPsec VPN ọwara n'etiti Linux igwe na Mikrotik n'azụ NAT na-eweta

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

  • Eth0 1.1.1.1/32 IP
  • ipip-ipsec0 192.168.0.1/30 ga-abụ ọwara anyị

Miktoik: CCR 1009, RouterOS 6.46.5

  • Eth0 10.0.0.2/30 IP n'ime onye na-eweta ya. NAT IP mpụga nke onye na-eweta dị ike.
  • ipip-ipsec0 192.168.0.2/30 ga-abụ ọwara anyị

Anyị ga-emepụta ọwara IPsec na igwe Linux na-eji racoon. Agaghị m akọwa nkọwa, enwere nke ọma otu isiokwu у vvpoloskin.

Wụnye ngwugwu ndị dị mkpa:

sudo install racoon ipsec-tools

Anyị na-ahazi racoon, ọ ga-arụ ọrụ dịka ihe nkesa ipsec. Ebe ọ bụ na mikrotik na isi ọnọdụ enweghị ike ibunye ihe njirimara ndị ahịa ọzọ, na adreesị IP mpụga nke ọ na-ejikọ na Linux dị ike, iji igodo preshared (ikike okwuntughe) agaghị arụ ọrụ, ebe ọ bụ na paswọọdụ ga-adakọrịrị na adreesị IP nke onye nnabata njikọ, ma ọ bụ jiri njirimara.

Anyị ga-eji igodo RSA jiri ikike.

Daemon racoon na-eji igodo n'ụdị RSA, na mikrotik na-eji usoro PEM. Ọ bụrụ na iji ngwa plainrsa-gen mepụta igodo na-abịa na racoon, ị gaghị enwe ike ịtụgharị igodo ọha maka Mikrotika ka ọ bụrụ usoro PEM site n'enyemaka ya - ọ na-atụgharị naanị n'otu ụzọ: PEM ka RSA. Ma openssl ma ọ bụ ssh-keygen enweghị ike ịgụ igodo emepụtara site na plainrsa-gen, yabụ ntụgharị agaghị ekwe omume iji ha.

Anyị ga-ewepụta igodo PEM site na iji openssl wee tụgharịa ya maka racoon site na iji 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

Anyị ga-etinye igodo enwetara na folda: /etc/racoon/certs/server. Echefula ịtọ onye nwe onye ọrụ n'okpuru aha ya ewepụtara racoon daemon (na-abụkarị mgbọrọgwụ) na ikike 600.

M ga-akọwa ntọala mikrotik mgbe ejikọtara site na WinBox.

Bulite igodo sava-name.pub.pem na mikrotik: NchNhr “Files” - “Bulite”.

Mepee ngalaba "IP" - "IP sec" - "Igodo" taabụ. Ugbu a, anyị na-ewepụta igodo - bọtịnụ "Mepụta igodo", wee bupụ igodo ọha mikrotika "Expor Pub. Igodo, ị nwere ike ibudata ya na ngalaba "Files", pịa aka nri na faịlụ - "Download".

Anyị na-ebubata igodo ọha racoon, “Bubata”, na ndetu ndọpụta nke ubi “aha faịlụ” anyị na-achọ aha sava-name.pub.pem anyị budataburu na mbụ.

Ekwesịrị ịgbanwe igodo ọha mikrotik

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

ma tinye ya na folda /etc/racoon/certs, na-echefughị ​​maka onye nwe ya na ikike.

racoon config na nkọwa: /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

Laghachi na ngalaba "IP" - "IPsec"

"Profaịlụ" tab
Ogologo
uru

aha
N'aka gị (site na ndabara ndabara)

Hash Algorithm
sha512

Algorithm nzuzo
afọ-128

DH-Group
modp2048

Proposhal_check
Mgbarakwa

ndụ
1d 00:00:00

Njegharị NAT
eziokwu (pịa igbe ahụ)

DPD
120

DPD kacha ọdịda
5

Ndị ọgbọ tab
Ogologo
uru

aha
N'uche gị (nke a na-akpọ MyPeer)

Address
1.1.1.1 (igwe Linux IP)

Adreesị mpaghara
10.0.0.2 (IP WAN interface mikrotik)

Profaịlụ
ndabara

Ọnọdụ mgbanwe
isi

Ịfefe
ụgha

Ziga INITIAL_CONTACT
ezi

Atụmatụ tab
Ogologo
uru

aha
N'uche gị (nke a na-akpọ MyPeerProposal)

Auth. Algorithms
sha512

Ndekọ Algorithms
aes-128-cbc

ndụ
08:00:00

Otu PFS
modp2048

"Identities" tab
Ogologo
uru

Ọgbọ
MyPeer

Atọh. Usoro
rsa igodo

Key
mikrotik.privet.key

Remote Igodo
server-name.pub.pem

Otu Template Policy
ndabara

Notrack Chain
efu

Ụdị NJ m
ụgbọ ala

Ụdị NJ dịpụrụ adịpụ
ụgbọ ala

Dakọtara Site
ebe dịpụrụ adịpụ id

Nhazi ọnọdụ
efu

Mepụta amụma
Ee e

Taabụ "Amụma - General"
Ogologo
uru

Ọgbọ
MyPeer

ọwara
ezi

Src. Adreesị
192.168.0.0/30

Dest. Adreesị
192.168.0.0/30

Protocol
255 (ha niile)

template
ụgha

Taabụ "Amụma - Omume"
Ogologo
uru

Action
encrypt

Ọkwa
chọrọ

Protocol IPsec
sp

Ihe ngosi
MyPeerProposal

O yikarịrị, dị ka m, ị haziela snat / masquerade na interface WAN gị; iwu a kwesịrị imezigharị ka ngwugwu ipsec na-apụ apụ banye n'ọwara anyị:
Gaa na ngalaba "IP" - "Firewall".
"NAT" taabụ, mepee iwu snat/masquerade anyị.

Tab dị elu
Ogologo
uru

Iwu IPsec
pụọ: onweghị

Na-amaliteghachi mmụọ ọjọọ racoon

sudo systemctl restart racoon

Ọ bụrụ na racoon ebidoghị ịmalitegharị, mgbe ahụ enwere mperi na nhazi ahụ; na syslog, racoon na-egosiputa ozi gbasara akara ahịrị ebe achọpụtara njehie ahụ.

Mgbe akpụkpọ ụkwụ OS, racoon daemon na-amalite tupu ewelite ihu netwọkụ, anyị akọwapụtakwara nhọrọ siri ike_address na ngalaba ntị; ịkwesịrị ịgbakwunye ngalaba racoon na faịlụ sistemu.
/lib/systemd/system/racoon.service, na ngalaba [Unit], ahịrị After=network.target.

Ugbu a tunnels ipsec anyị kwesịrị ịdị elu, lee anya na mmepụta:

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

Ọ bụrụ na tunnels adịghị elu, lelee syslog, ma ọ bụ journalctl-u racoon.

Ugbu a ịkwesịrị ịhazi oghere L3 ka okporo ụzọ nwee ike ịpụ. Enwere nhọrọ dị iche iche, anyị ga-eji IPIP, ebe ọ bụ na mikrotik na-akwado ya, m ga-eji vti, ma, ọ dị mwute ikwu, emebeghị ya na mikrotik. Ọ dị iche na IPIP n'ihi na ọ nwere ike tinyekwa multicast ma tinye fwmarks na ngwugwu nke a ga-eji mee ya na iptables na iproute2 (usoro usoro iwu dabere). Ọ bụrụ na ịchọrọ ịrụ ọrụ kachasị, mgbe ahụ, dịka ọmụmaatụ, GRE. Ma echefula na anyị na-akwụ ụgwọ maka ọrụ ndị ọzọ na nnukwu isi n'elu.

Ị nwere ike ịhụ ntụgharị asụsụ nke ezigbo nyocha nke oghere ọwara ebe a.

Na 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

Ugbu a ị nwere ike itinye ụzọ maka netwọk n'azụ mikrotik

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

Ka e wee nwee ike ịmalite interface anyị na ụzọ anyị mgbe ịmalitegharịa, anyị kwesịrị ịkọwa interface na /etc/network/interfaces ma tinye ụzọ n'ebe ahụ na post-elu, ma ọ bụ dee ihe niile n'otu faịlụ, dịka ọmụmaatụ, /etc/ ipip-ipsec0.conf ma dọpụta ya site na post-elu, echefula banyere onye nwe faịlụ, ikike ma mee ka ọ rụọ ọrụ.

N'okpuru bụ faịlụ ihe atụ

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

Na Mikrotik:

Nkebi “Interfaces”, gbakwunye interface ọhụrụ “ọwara IP”:

Taabụ "Ọwara IP" - "General"
Ogologo
uru

aha
N'uche gị (nke a na-akpọ IPIP-IPsec0)

MTU
1480 (ọ bụrụ na akọwaghị ya, mikrotik na-amalite ịkpụ mtu ruo 68)

Adreesị mpaghara
192.168.0.2

Adreesị dịpụrụ adịpụ
192.168.0.1

IPsec nzuzo
Gbanyụọ ubi ahụ (ma ọ bụghị ya, a ga-emepụta ọgbọ ọhụrụ)

Chebe
Gbanyụọ ubi ahụ (ma ọ bụghị ya, interface ahụ ga-agbanyụ mgbe niile, ebe ọ bụ na mikrotika nwere usoro nke ya maka ngwugwu ndị a na anaghị arụ ọrụ na Linux)

DSCP
keta

Ebibila iberibe
Ee e

Mgbochi TCP MSS
ezi

Nye ohere ngwa ngwa
ezi

Nkebi "IP" - "Adreesi", tinye adreesị:

Ogologo
uru

Address
192.168.0.2/30

interface
IPIP-IPsec0

Ugbu a ị nwere ike itinye ụzọ na netwọk n'azụ igwe Linux; mgbe ị na-agbakwunye ụzọ, ọnụ ụzọ ga-abụ interface IPIP-IPsec0 anyị.

PS

Ebe ọ bụ na ihe nkesa Linux anyị na-agbanwe agbanwe, ọ bụ ihe ezi uche dị na ịtọ ntọala TCP MSS maka oghere ipip na ya:

mepụta faịlụ /etc/iptables.conf na ọdịnaya ndị a:

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

na /etc/network/interfaces
post-up iptables-weghachi </etc/iptables.conf

Enwere m nginx na-agba ọsọ na netwọk n'azụ mikrotik (ip 10.10.10.1), mee ka ọ dị na Ịntanetị, tinye ya na /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 

Echefula ịgbakwunye ikike kwesịrị ekwesị na iptables ma ọ bụrụ na ị nwere ihe nzacha ngwugwu.

Nwee ahụ ike!

isi: www.habr.com

Tinye a comment