IPIP IPsec VPN rami tsakanin injin Linux da Mikrotik a bayan mai bada NAT

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

  • Eth0 1.1.1.1/32 IP na waje
  • ipip-ipsec0 192.168.0.1/30 zai zama ramin mu

Miktoik: CCR 1009, RouterOS 6.46.5

  • Eth0 10.0.0.2/30 IP na ciki daga mai badawa. NAT IP na waje na mai bayarwa yana da ƙarfi.
  • ipip-ipsec0 192.168.0.2/30 zai zama ramin mu

Za mu ƙirƙiri rami na IPsec akan na'urar Linux ta amfani da racoon. Ba zan bayyana cikakkun bayanai ba, akwai mai kyau labarin у vvpoloskin.

Sanya fakitin da suka dace:

sudo install racoon ipsec-tools

Mun saita racoon, zai yi aiki da sharaɗi azaman sabar ipsec. Tunda mikrotik a babban yanayin ba zai iya aika ƙarin mai gano abokin ciniki ba, kuma adireshin IP na waje wanda yake haɗawa da Linux yana da ƙarfi, ta amfani da maɓallin da aka riga aka share (iznin kalmar sirri) ba zai yi aiki ba, tunda kalmar sirri dole ne ta dace da ko dai tare da adireshin IP na mai haɗawa, ko tare da mai ganowa.

Za mu yi amfani da izini ta amfani da maɓallan RSA.

Racoon daemon yana amfani da maɓalli a cikin tsarin RSA, kuma mikrotik yana amfani da tsarin PEM. Idan kun samar da maɓallai ta amfani da kayan aikin plainrsa-gen wanda ya zo tare da racoon, to ba za ku iya canza maɓallin jama'a na Mikrotika zuwa tsarin PEM ba tare da taimakonsa - yana jujjuya ta hanya ɗaya kawai: PEM zuwa RSA. Ba openssl ko ssh-keygen ba zai iya karanta maɓallin da aka samar ta plainrsa-gen, don haka juyawa ba zai yiwu ta amfani da su ba.

Za mu samar da maɓallin PEM ta amfani da openssl sannan mu canza shi don racoon ta amfani da 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

Za mu sanya maɓallan da aka karɓa a cikin babban fayil: /etc/racoon/certs/server. Kar a manta saita mai mai amfani a ƙarƙashin sunan wanda aka ƙaddamar da racoon daemon (yawanci tushen) zuwa izini 600.

Zan bayyana saitin mikrotik lokacin haɗi ta WinBox.

Loda maɓallin uwar garken-name.pub.pem zuwa mikrotik: Menu “Files” - “Loading”.

Bude sashin "IP" - "IP sec" - "keys" tab. Yanzu muna samar da maɓallai - maɓallin "Generate Key", sannan mu fitar da maɓallin jama'a na mikrotika "Expor Pub. Maɓalli", zaku iya saukar da shi daga sashin "Files", danna-dama akan fayil ɗin - "Zazzagewa".

Muna shigo da maɓallin jama'a na racoon, "Import", a cikin jerin abubuwan da aka saukar na filin "Sunan fayil" muna neman uwar garken-name.pub.pem da muka zazzage a baya.

Maɓallin jama'a na mikrotik yana buƙatar canzawa

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

kuma saka shi a cikin /etc/racoon/certs babban fayil, ba tare da mantawa game da mai shi da haƙƙin mallaka ba.

racoon config tare da sharhi: /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

Koma zuwa sashin "IP" - "IPsec"

"Profiles" tab
Alamar
Ma'ana

sunan
Bisa ga ra'ayin ku (ta hanyar tsoho)

Hash Algorithm
sha512

Bayani Encryption
zuwa-128

DH-Group
modp2048

Proposhal_check
da'awar

rayuwa
1d 00:00:00

Hanyoyin ciniki na NAT
gaskiya (duba akwatin)

DPD
120

Mafi girman gazawar DPD
5

Takwarorinsu tab
Alamar
Ma'ana

sunan
Bisa ga ra'ayin ku (nan gaba ana kiransa MyPeer)

Adireshin
1.1.1.1 (Injunan IP Linux)

Adireshin gida
10.0.0.2 (IP WAN interface mikrotik)

Profile
tsoho

Yanayin Musanya
main

M
arya

Aika INITIAL_CONTACT
gaskiya

Shawarwari tab
Alamar
Ma'ana

sunan
Bisa ga ra'ayin ku (nan gaba ana kiranta da MyPeerProposal)

Gaskiya. Algorithms
sha512

Encr. Algorithms
aes-128-cbc

rayuwa
08:00:00

PFS Group
modp2048

"Identities" tab
Alamar
Ma'ana

Era
MyPeer

Atuh. Hanya
rsa key

key
mikrotik.privet.key

Maballin nesa
sunan uwar garke.pub.pem

Rukunin Samfuran Manufofin
tsoho

Notrack Sarkar
fanko

Nau'in ID na
mota

Nau'in ID mai nisa
mota

Daidaita By
m id

Yanayin Kanfigareshan
fanko

Ƙirƙirar Siyasa
babu

Tab "Manufofin - Gabaɗaya"
Alamar
Ma'ana

Era
MyPeer

Rami
gaskiya

Src. Adireshi
192.168.0.0/30

Dest. Adireshi
192.168.0.0/30

layinhantsaki
255 (duk)

samfuri
arya

Tab "Manufofin - Aiki"
Alamar
Ma'ana

Action
encrypt

Level
mai nema

IPsec Protocols
leken asiri

shawara
MyPeerProposal

Mafi mahimmanci, kamar ni, kuna da snat/masquerade da aka saita akan ƙirar WAN ku; wannan doka tana buƙatar gyara don fakitin ipsec masu fita su shiga cikin raminmu:
Je zuwa sashin "IP" - "Firewall".
"NAT" shafin, bude tsarin mu na snat/masquerade.

Babban Tab
Alamar
Ma'ana

Manufar IPsec
fita: babu

Sake kunna aljanin racoon

sudo systemctl restart racoon

Idan racoon bai fara ba bayan sake kunnawa, to akwai kuskure a cikin saitin; a cikin syslog, racoon yana nuna bayanai game da lambar layin da aka gano kuskuren.

Lokacin da OS ya yi takalmi, racoon daemon yana farawa kafin a kawo mu'amalar hanyar sadarwa, kuma mun ƙayyade zaɓin tsananin_address a cikin sashin sauraron; kuna buƙatar ƙara rukunin racoon a cikin fayil ɗin da aka tsara.
/lib/systemd/system/racoon.service, a cikin sashin [Unit], layi Bayan=network.target.

Yanzu ya kamata tunnels ɗin mu na ipsec su tashi, duba abin da aka fitar:

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

Idan tunnels ba su tashi ba, duba syslog, ko journalctl -u racoon.

Yanzu kuna buƙatar saita musaya na L3 don a iya karkatar da zirga-zirga. Akwai zaɓuɓɓuka daban-daban, za mu yi amfani da IPIP, tun da mikrotik yana goyan bayan shi, zan yi amfani da vti, amma, da rashin alheri, har yanzu ba a aiwatar da shi a cikin mikrotik ba. Ya bambanta da IPIP a cikin cewa yana iya haɗawa da multicast kuma ya sanya fwmarks a kan fakiti wanda za'a iya tace su a cikin iptables da iproute2 (tushen tsarin siyasa). Idan kuna buƙatar iyakar ayyuka, to, misali, GRE. Amma kar ka manta cewa muna biyan ƙarin ayyuka tare da babban kan sama.

Kuna iya ganin fassarar kyakkyawan bayyani na mu'amalar rami a nan.

A 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

Yanzu zaku iya ƙara hanyoyin hanyoyin sadarwa a bayan mikrotik

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

Domin haɓaka hanyoyin mu da hanyoyin mu bayan sake kunnawa, muna buƙatar bayyana keɓancewa a cikin /etc/network/musaya da ƙara hanyoyin da ke can a cikin post-up, ko rubuta komai a cikin fayil ɗaya, misali, /etc/. ipip-ipsec0.conf kuma cire shi ta hanyar post-up, kar a manta game da mai mallakar fayil, haƙƙoƙin kuma sanya shi aiwatarwa.

A ƙasa akwai fayil ɗin misali

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

Sashe "Interfaces", ƙara sabon dubawa "ramin IP":

Tab "Ramin IP" - "Gaba ɗaya"
Alamar
Ma'ana

sunan
Bisa ga ra'ayin ku (nan gaba ana kiransa IPIP-IPsec0)

MUTUM
1480 (idan ba a ƙayyade ba, mikrotik ya fara yanke mtu zuwa 68)

Adireshin gida
192.168.0.2

Adireshin nesa
192.168.0.1

Sirrin IPsec
Kashe filin (in ba haka ba za a ƙirƙiri sabon Peer)

Mai kiyayewa
Kashe filin (in ba haka ba, dubawar za ta kashe kullun, tun da mikrotika yana da nasa tsarin don waɗannan fakitin kuma baya aiki tare da Linux)

Farashin DSCP
gaji

Kar a Rarraba
babu

Matsa TCP MSS
gaskiya

Bada Tafarki Mai Sauri
gaskiya

Sashe "IP" - "Adireshi", ƙara adireshin:

Alamar
Ma'ana

Adireshin
192.168.0.2/30

Interface
IPIP-IPsec0

Yanzu zaku iya ƙara hanyoyi zuwa hanyar sadarwa a bayan injin Linux; lokacin ƙara hanya, ƙofa zai zama ƙirar IPIP-IPsec0 ɗin mu.

PS

Tun da uwar garken Linux ɗinmu mai jujjuyawa ne, yana da ma'ana don saita ma'aunin TCP MSS don musanya ipip akansa:

ƙirƙirar fayil /etc/iptables.conf tare da abubuwan ciki masu zuwa:

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

kuma a /etc/network/interfaces
post-up iptables-restore </etc/iptables.conf

Ina da nginx da ke gudana akan hanyar sadarwa a bayan mikrotik (ip 10.10.10.1), sanya shi samun dama daga Intanet, ƙara shi zuwa /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 

Kar a manta da ƙara izini masu dacewa zuwa iptables idan kuna da matatar fakitin kunnawa.

Kasance cikin koshin lafiya!

source: www.habr.com

Add a comment