IPIP IPsec VPN torowongan antara mesin Linux Ubuntu jeung Mikrotik balik panyadia NAT

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

  • Eth0 1.1.1.1/32 IP éksternal
  • ipip-ipsec0 192.168.0.1/30 bakal torowongan urang

Miktoik: CCR 1009, RouterOS 6.46.5

  • Eth0 10.0.0.2/30 IP internal ti panyadia. IP NAT éksternal panyadia nyaéta dinamis.
  • ipip-ipsec0 192.168.0.2/30 bakal torowongan urang

Kami bakal nyiptakeun torowongan IPsec dina mesin Linux nganggo racoon. Abdi moal ngajelaskeun detil, aya anu saé artikel у vvpoloskin.

Pasang pakét anu diperyogikeun:

sudo install racoon ipsec-tools

Urang ngonpigurasikeun racoon, eta conditionally bakal meta salaku server ipsec. Kusabab mikrotik dina modeu utama teu bisa ngirimkeun hiji identifier klien tambahan, sarta alamat IP éksternal ngaliwatan nu eta nyambung ka Linux Ubuntu dinamis, ngagunakeun konci preshared (otorisasi sandi) moal jalan, sabab sandi kudu cocog boh jeung alamat IP tina host nyambungkeun, atawa kalawan identifier.

Kami bakal nganggo otorisasi nganggo konci RSA.

Daemon racoon nganggo konci dina format RSA, sareng mikrotik nganggo format PEM. Upami anjeun ngahasilkeun konci nganggo utilitas plainrsa-gen anu disayogikeun sareng racoon, maka anjeun moal tiasa ngarobih konci umum pikeun Mikrotika kana format PEM kalayan bantosanna - éta ngan ukur ngarobih dina hiji arah: PEM ka RSA. Sanes openssl atanapi ssh-keygen tiasa maca konci anu dibangkitkeun ku plainrsa-gen, janten konvérsina ogé moal tiasa dianggo.

Urang bakal ngahasilkeun konci PEM maké openssl lajeng ngarobahna pikeun racoon maké 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

Kami bakal nempatkeun konci anu ditampi dina polder: /etc/racoon/certs/server. Tong hilap nyetél pamilik pangguna anu namina daemon racoon diluncurkeun (biasana akar) ka 600 idin.

Kuring bakal ngajelaskeun setelan mikrotik nalika nyambungkeun via WinBox.

Unggah konci server-name.pub.pem ka mikrotik: Menu "Files" - "Upload".

Buka bagian "IP" - "IP detik" - tab "Konci". Ayeuna urang ngahasilkeun konci - tombol "Generate Key", teras ékspor konci publik mikrotika "Expor Pub. Key", Anjeun bisa ngundeur tina bagian "Files", klik katuhu dina file - "Download".

Urang ngimpor konci umum racoon, "Impor", dina daptar turun-handap tina widang "Ngaran file" urang néangan server-name.pub.pem kami diundeur saméméhna.

Konci publik mikrotik kedah dirobih

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

sarta nempatkeun eta dina folder / jsb / racoon / certs, teu poho ngeunaan nu boga jeung hak.

racoon config kalawan komentar: /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

Balik deui ka bagian "IP" - "IPsec"

Tab "Propil".
parameter
ajen

nami
Dina kawijaksanaan anjeun (sacara standar standar)

Algoritma Hash
sha512

Algoritma Énkripsi
aes-128

DH-Grup
modp2048

Proposhal_check
Klaim

Saumur hirup
1d 00:00:00

NAT Traversal
leres (centang kotak)

DPD
120

gagalna maksimum DPD
5

Tab peers
parameter
ajen

nami
Dina kawijaksanaan anjeun (satuluyna disebut MyPeer)

alamat
1.1.1.1 (mesin IP Linux)

Alamat Lokal
10.0.0.2 (IP WAN panganteur mikrotik)

keureutan
standar

Modeu Tukeuran
utama

pasip
palsu

Kirim INITIAL_CONTACT
bener

Tab Usul
parameter
ajen

nami
Dina kawijaksanaan anjeun (satuluyna disebut MyPeerProposal)

Auth. Algoritma
sha512

Encr. Algoritma
aes-128-cbc

Saumur hirup
08:00:00

Grup PFS
modp2048

Tab "Idéntitas".
parameter
ajen

Babaturan
MyPeer

Atuh. Métode
konci rsa

konci
mikrotik.privet.key

Konci Jauh
server-name.pub.pem

Sarat jeung Kaayaan Citakan Grup
standar

Ranté Notrack
kosong

Tipe ID kuring
otomatis

Tipe ID Jauh
otomatis

Cocog Ku
id jauh

Konfigurasi Mode
kosong

Ngahasilkeun Kabijakan
No

Tab "Kabijakan - Umum"
parameter
ajen

Babaturan
MyPeer

torowongan
bener

Src. Alamat
192.168.0.0/30

Dest. Alamat
192.168.0.0/30

Protocol
255 (sadayana)

template
palsu

Tab "Kabijakan - Aksi"
parameter
ajen

aksi
encrypt

tingkat
merlukeun

Protokol IPsec
esp

Usul
MyPeerProposal

Paling dipikaresep, kawas kuring, anjeun gaduh snat / masquerade ngonpigurasi dina panganteur WAN anjeun; aturan ieu perlu disaluyukeun supados pakét ipsec kaluar asup kana torowongan urang:
Pindah ka bagian "IP" - "Firewall".
Tab "NAT", buka aturan snat/masquerade kami.

Tab Maju
parameter
ajen

Kawijakan IPsec
kaluar: euweuh

Mimitian deui sétan rakun

sudo systemctl restart racoon

Upami racoon henteu ngamimitian deui, teras aya kasalahan dina konfigurasi; dina syslog, racoon nampilkeun inpormasi ngeunaan nomer garis dimana kasalahanna dideteksi.

Nalika OS boot, daemon racoon dimimitian sateuacan antarmuka jaringan dibangkitkeun, sareng kami netepkeun pilihan strict_address dina bagian ngadangukeun; anjeun kedah nambihan unit racoon kana file systemd.
/lib/systemd/system/racoon.service, dina bagian [Unit], garis Saatos = network.target.

Ayeuna torowongan ipsec urang kedah naék, tingali kaluaranna:

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

Lamun torowongan teu nepi, tingali syslog, atawa journalctl -u racoon.

Ayeuna anjeun kudu ngonpigurasikeun interfaces L3 ambéh lalulintas bisa routed. Aya pilihan béda, urang bakal make IPIP, saprak mikrotik ngarojong eta, abdi bakal make vti, tapi, hanjakalna, eta teu acan dilaksanakeun dina mikrotik. Beda sareng IPIP sabab tiasa nambihan multicast sareng nempatkeun fwmarks dina pakét, dimana aranjeunna tiasa disaring dina iptables sareng iproute2 (ruteu dumasar kana kawijakan). Lamun perlu fungsionalitas maksimum, lajeng, contona, GRE. Tapi ulah poho yén urang mayar fungsionalitas tambahan kalayan sirah overhead badag.

Anjeun tiasa ningali tarjamahan tina gambaran alus ngeunaan interfaces torowongan di dieu.

Dina 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

Ayeuna anjeun tiasa nambihan rute pikeun jaringan balik mikrotik

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

Supados antarbeungeut sareng rute urang tiasa diangkat saatos reboot, urang kedah ngajelaskeun antarmuka dina /etc/network/interfaces sareng nambihan rute anu aya dina post-up, atanapi nyerat sadayana dina hiji file, contona, /etc/ ipip-ipsec0.conf jeung narik eta ngaliwatan pos-up, ulah poho ngeunaan nu boga file, hak jeung nyieun laksana.

Di handap ieu conto file

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

Dina Mikrotik:

Bagian "Interfaces", tambahkeun panganteur anyar "IP torowongan":

Tab "IP torowongan" - "Umum"
parameter
ajen

nami
Dina kawijaksanaan anjeun (satuluyna disebut IPIP-IPsec0)

JALMA
1480 (upami teu dieusian, mikrotik mimiti motong mtu ka 68)

Alamat Lokal
192.168.0.2

Alamat Jauh
192.168.0.1

Rahasia IPsec
Nonaktipkeun widang (upami teu kitu, hiji Peer anyar bakal dijieun)

tetep hirup
Nonaktipkeun lapangan (upami henteu, antarmuka bakal terus pareum, sabab mikrotika gaduh format sorangan pikeun bungkusan ieu sareng henteu tiasa dianggo sareng Linux).

DSCP
manggih warisan

Ulah fragmen
No

Clamp TCP MSS
bener

Ngidinan Jalur Gancang
bener

Bagian "IP" - "Alamat", tambahkeun alamatna:

parameter
ajen

alamat
192.168.0.2/30

interface
IPIP-IPsec0

Ayeuna anjeun tiasa nambihan rute ka jaringan tukangeun mesin Linux; nalika nambihan rute, gateway bakal janten antarmuka IPIP-IPsec0 kami.

PS

Kusabab server Linux kami transitif, masuk akal pikeun nyetél parameter Clamp TCP MSS pikeun antarmuka ipip di dinya:

jieun file /etc/iptables.conf kalayan eusi ieu:

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

sareng dina /etc/network/interfaces
post-up iptables-restore < /etc/iptables.conf

Kuring geus nginx jalan dina jaringan balik mikrotik (ip 10.10.10.1), sangkan eta diaksés tina Internet, tambahkeun ka /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 

Tong hilap tambahkeun idin anu pas kana iptables upami anjeun parantos ngaktipkeun saringan pakét.

Séhat!

sumber: www.habr.com

Tambahkeun komentar