IPIP IPsec VPN qhov ntawm lub tshuab Linux thiab Mikrotik qab NAT tus kws kho mob

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

  • Eth0 1.1.1.1/32 sab nraud IP
  • ipip-ipsec0 192.168.0.1/30 yuav yog peb qhov

Cov ntsiab lus: CCR 1009, RouterOS 6.46.5

  • Eth0 10.0.0.2/30 sab hauv IP los ntawm tus kws kho mob. Tus kws kho mob sab nraud NAT IP yog dynamic.
  • ipip-ipsec0 192.168.0.2/30 yuav yog peb qhov

Peb yuav tsim ib qho IPsec qhov ntawm lub tshuab Linux siv racoon. Kuv yuav tsis piav qhia meej, muaj qhov zoo ib tsab xov xwm у vvpolosk ua.

Nruab cov pob khoom tsim nyog:

sudo install racoon ipsec-tools

Peb configure racoon, nws yuav conditionally ua raws li ipsec server. Txij li thaum mikrotik hauv hom tseem ceeb tsis tuaj yeem xa tus neeg siv tus lej ntxiv, thiab qhov chaw nyob IP sab nraud los ntawm qhov nws txuas mus rau Linux yog qhov muaj zog, siv tus yuam sij preshared (password tso cai) yuav tsis ua haujlwm, txij li tus password yuav tsum sib phim nrog tus IP chaw nyob. tus tswv tsev txuas, lossis nrog tus cim.

Peb yuav siv kev tso cai siv RSA yuam sij.

Lub racoon daemon siv cov yuam sij hauv RSA hom, thiab mikrotik siv PEM hom. Yog tias koj tsim cov yuam sij siv cov khoom siv plinrsa-gen uas tuaj nrog racoon, ces koj yuav tsis tuaj yeem hloov cov yuam sij pej xeem rau Mikrotika rau PEM hom nrog nws cov kev pab - nws hloov pauv tsuas yog hauv ib qho kev taw qhia: PEM rau RSA. Tsis yog openssl lossis ssh-keygen tuaj yeem nyeem tus yuam sij tsim los ntawm plainrsa-gen, yog li kev hloov pauv tsis tuaj yeem ua tiav siv lawv ib yam.

Peb yuav tsim tus yuam sij PEM siv openssl thiab tom qab ntawd hloov nws rau racoon siv plinrsa-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

Peb yuav muab cov yuam sij tau txais rau hauv daim nplaub tshev: /etc/racoon/certs/server. Tsis txhob hnov ​​​​qab teeb tsa tus tswv ntawm tus neeg siv raws li nws lub npe racoon daemon tau pib (feem ntau hauv paus) rau 600 tso cai.

Kuv yuav piav qhia txog kev teeb tsa mikrotik thaum txuas ntawm WinBox.

Upload lub server-name.pub.pem tus yuam sij rau mikrotik: Ntawv qhia zaub mov "Cov ntaub ntawv" - "Upload".

Qhib ntu "IP" - "IP sec" - "Keys" tab. Tam sim no peb tsim cov yuam sij - lub "Tsim Key" khawm, ces xa tawm mikrotika pej xeem yuam sij "Expor Pub. Qhov tseem ceeb", koj tuaj yeem rub tawm los ntawm ntu "Cov ntaub ntawv", txoj nyem rau ntawm cov ntaub ntawv - "Download".

Peb import tus yuam sij rau pej xeem racoon, "Ntshuam", hauv daim ntawv teev npe poob ntawm "Cov ntaub ntawv npe" teb peb saib rau server-name.pub.pem peb rub tawm ua ntej.

Mikrotik pej xeem yuam sij yuav tsum tau hloov dua siab tshiab

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

thiab muab tso rau hauv /etc/racoon/certs folder, tsis txhob hnov ​​qab txog tus tswv thiab txoj cai.

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

kev config

Rov qab mus rau ntu "IP" - "IPsec"

"Profiles" tab
Parameter
nqi

lub npe
Ntawm koj qhov kev txiav txim siab (los ntawm lub neej ntawd)

Hash Algorithm
sha512

Encryption Algorithm
ua-128

DH-Pab
xwm 2048

Proposhal_check
thov

lub neej
1d 00:00:00 Nws

NTUA Traversal
tseeb (kos lub thawv)

DPD
120

DPD Qhov siab tshaj plaws ua tsis tiav
5

Peers tab
Parameter
nqi

lub npe
Ntawm koj qhov kev txiav txim siab (tom qab no hu ua MyPeer)

chaw nyob
1.1.1.1 (IP Linux tshuab)

Chaw Nyob
10.0.0.2 (IP WAN interface mikrotik)

Profile
ua ntej

Hloov Hom
ntsiab

Passive
cuav

Xa INITIAL_CONTACT
muaj tseeb

Tswv yim tab
Parameter
nqi

lub npe
Ntawm koj qhov kev txiav txim siab (tom qab no hu ua MyPeerProposal)

Auth. Algorithms
sha512

Encr. Algorithms
ib-128-cbc

lub neej
08:00:00

PFS Group
xwm 2048

"Identities" tab
Parameter
nqi

Cov phooj ywg
MyPeer

Atuh. Txoj kev
rsa key

Ntsiab
mikrotik.privet.key

Cov Chaw Taws Xob
server-name.pub.pem

Txoj Cai Template Group
ua ntej

Notrack Chain
khoob

Kuv Hom ID
pib

Tej thaj chaw deb ID hom
pib

Match By
remote id

Hom Configuration
khoob

Tsim Txoj Cai
tsis muaj

Tab "Policies - General"
Parameter
nqi

Cov phooj ywg
MyPeer

qhov
muaj tseeb

Src. Chaw nyob
192.168.0.0/30

Deest. Chaw nyob
192.168.0.0/30

raws tu qauv
255 (tag nrho)

template
cuav

Tab "Policies - Action"
Parameter
nqi

Action
encrypt

theem
tus thov

IPsec raws tu qauv
esp

Qhia tawm
MyPeerProposal

Feem ntau, zoo li kuv, koj muaj snat / masquerade teeb tsa ntawm koj qhov WAN interface; txoj cai no yuav tsum tau hloov kho kom cov pob ntawv ipsec tawm mus rau hauv peb qhov:
Mus rau ntu "IP" - "Firewall".
"NAT" tab, qhib peb txoj cai snat/masquerade.

Advanced Tab
Parameter
nqi

IPsec Txoj Cai
out: nra

Restarting dab racoon

sudo systemctl restart racoon

Yog tias racoon tsis pib thaum rov pib dua, tom qab ntawd muaj qhov yuam kev hauv config; hauv syslog, racoon qhia cov ntaub ntawv hais txog kab xov tooj uas tau kuaj pom qhov yuam kev.

Thaum lub OS khau raj, racoon daemon pib ua ntej lub network interfaces raug coj los, thiab peb tau teev cov kev xaiv strict_address nyob rau hauv seem mloog; koj yuav tsum tau ntxiv cov racoon chav rau cov ntaub ntawv systemd
/lib/systemd/system/racoon.service, nyob rau hauv seem [Unit], kab Tom qab=network.target.

Tam sim no peb ipsec qhov yuav tsum tau nce, saib cov zis:

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

Yog tias cov tunnels tsis nce, saib syslog, lossis journalctl -u racoon.

Tam sim no koj yuav tsum tau teeb tsa L3 interfaces kom cov tsheb khiav tau. Muaj cov kev xaiv sib txawv, peb yuav siv IPIP, txij li mikrotik txhawb nqa nws, kuv yuav siv vti, tab sis, hmoov tsis, nws tseem tsis tau siv hauv mikrotik. Nws txawv ntawm IPIP nyob rau hauv uas nws muaj peev xwm ntxiv encapsulate multicast thiab muab fwmarks rau cov pob ntawv uas lawv tuaj yeem lim hauv iptables thiab iproute2 (txoj cai raws li txoj cai). Yog tias koj xav tau kev ua haujlwm siab tshaj plaws, ces, piv txwv li, GRE. Tab sis tsis txhob hnov ​​​​qab tias peb them rau kev ua haujlwm ntxiv nrog lub taub hau loj.

Koj tuaj yeem pom qhov kev txhais lus ntawm kev tshuaj xyuas zoo ntawm qhov kev sib tshuam S, SѓS,.

Hauv 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

Tam sim no koj tuaj yeem ntxiv txoj hauv kev rau network tom qab mikrotik

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

Txhawm rau kom peb cov kev sib tshuam thiab cov txheej txheem yuav tsum tau tsa tom qab rov pib dua, peb yuav tsum piav qhia txog qhov cuam tshuam hauv /etc/network/interfaces thiab ntxiv cov kev muaj nyob rau tom qab, lossis sau txhua yam hauv ib cov ntaub ntawv, piv txwv li, /etc/ ipip-ipsec0.conf thiab rub nws los ntawm kev tshaj tawm, tsis txhob hnov ​​​​qab txog tus tswv cov ntaub ntawv, txoj cai thiab ua kom nws ua tiav.

Hauv qab no yog ib qho piv txwv cov ntaub ntawv

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

Hauv Mikrotik:

Tshooj "Interfaces", ntxiv qhov tshiab interface "IP qhov":

Tab "IP qhov" - "General"
Parameter
nqi

lub npe
Ntawm koj qhov kev txiav txim siab (tom qab no hu ua IPIP-IPsec0)

TUS NEEG
1480 (yog tias tsis tau teev tseg, mikrotik pib txiav mtu mus rau 68)

Chaw Nyob
192.168.0.2

Chaw Nyob Chaw Nyob
192.168.0.1

IPsec zais cia
Deactivate lub teb ( txwv tsis pub tus neeg sib tw tshiab yuav raug tsim)

Khaws Tseg
Deactivate lub teb ( txwv tsis pub lub interface yuav tas li tig tawm, txij li mikrotika muaj nws tus kheej hom rau cov pob no thiab tsis ua hauj lwm nrog Linux)

DSCP
inherit

Txhob Fragment
tsis muaj

Clamp TCP MSS
muaj tseeb

Cia Txoj Kev Ceev
muaj tseeb

Tshooj "IP" - "Chaw Nyob", ntxiv qhov chaw nyob:

Parameter
nqi

chaw nyob
192.168.0.2/30

interface
IPIP-IPsec0

Tam sim no koj tuaj yeem ntxiv txoj hauv kev rau lub network tom qab lub tshuab Linux; thaum ntxiv txoj hauv kev, lub rooj vag yuav yog peb IPIP-IPsec0 interface.

PS

Txij li thaum peb cov neeg rau zaub mov Linux yog qhov hloov pauv, nws ua rau kev nkag siab los teeb tsa Clamp TCP MSS parameter rau ipip interfaces ntawm nws:

tsim cov ntaub ntawv /etc/iptables.conf nrog cov ntsiab lus hauv qab no:

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

thiab hauv /etc/network/interfaces
post-up iptables-restore < /etc/iptables.conf

Kuv muaj nginx khiav ntawm lub network tom qab mikrotik (ip 10.10.10.1), ua kom nws nkag tau los ntawm Is Taws Nem, ntxiv rau /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 

Tsis txhob hnov ​​​​qab ntxiv cov kev tso cai tsim nyog rau iptables yog tias koj muaj pob ntawv lim tau qhib.

Noj qab nyob zoo!

Tau qhov twg los: www.hab.com

Ntxiv ib saib