IPIP IPsec VPN tunnel antarane mesin Linux lan Mikrotik konco panyedhiya NAT

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

  • Eth0 1.1.1.1/32 IP njaba
  • ipip-ipsec0 192.168.0.1/30 bakal dadi trowongan kita

Miktoik: CCR 1009, RouterOS 6.46.5

  • Eth0 10.0.0.2/30 IP internal saka panyedhiya. IP NAT eksternal panyedhiya dinamis.
  • ipip-ipsec0 192.168.0.2/30 bakal dadi trowongan kita

Kita bakal nggawe trowongan IPsec ing mesin Linux nggunakake racoon. Aku ora bakal njlèntrèhaké rincian, ana sing apik artikel у vvpoloskin.

Instal paket sing dibutuhake:

sudo install racoon ipsec-tools

We ngatur racoon, iku conditionally tumindak minangka server ipsec. Amarga mikrotik ing mode utama ora bisa ngirim pengenal klien tambahan, lan alamat IP eksternal sing disambungake menyang Linux dinamis, nggunakake tombol sing wis dienggo bareng (wewenang sandhi) ora bakal bisa digunakake, amarga sandhi kudu cocog karo alamat IP saka host nyambungake, utawa karo pengenal.

Kita bakal nggunakake wewenang nggunakake tombol RSA.

Daemon racoon nggunakake tombol ing format RSA, lan mikrotik nggunakake format PEM. Yen sampeyan ngasilake tombol nggunakake sarana plainrsa-gen sing dilengkapi karo racoon, sampeyan ora bakal bisa ngowahi kunci umum kanggo Mikrotika menyang format PEM kanthi bantuan - mung ngowahi siji arah: PEM menyang RSA. Sanadyan openssl utawa ssh-keygen ora bisa maca kunci sing digawe dening plainrsa-gen, mula konversi ora bisa ditindakake kanthi nggunakake.

Kita bakal ngasilake kunci PEM nggunakake openssl lan banjur ngowahi kanggo racoon nggunakake 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

Kita bakal sijine tombol ditampa ing folder: /etc/racoon/certs/server. Aja lali nyetel pemilik pangguna sing jenenge daemon racoon diluncurake (biasane ROOT) nganti 600 ijin.

Aku bakal njlèntrèhaké persiyapan mikrotik nalika nyambung liwat WinBox.

Unggah tombol server-name.pub.pem menyang mikrotik: Menu "Files" - "Upload".

Bukak bagean "IP" - "IP sec" - tab "Keys". Saiki kita ngasilake tombol - tombol "Generate Key", banjur ekspor tombol publik mikrotika "Ekspor Pub. Key", sampeyan bisa ngundhuh saka bagean "Files", klik-tengen ing file - "Download".

Kita ngimpor kunci umum racoon, "Impor", ing dhaptar gulung saka kolom "Jeneng File" kita goleki server-name.pub.pem sing diundhuh sadurunge.

Kunci umum mikrotik kudu diowahi

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

lan sijine ing folder / etc / racoon / certs, ora lali bab pemilik lan hak.

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

konfigurasi mikrotik

Bali menyang bagean "IP" - "IPsec"

Tab "Profil".
Parameter
Nilai

jeneng
Ing kawicaksanan sampeyan (kanthi standar)

Algoritma Hash
sha512

Algoritma Enkripsi
aes-128

DH-Grup
modp2048

Proposhal_check
pratelan

Sakumur urip
1d 00:00:00

NAT Traversal
bener (centhang kothak)

DPD
120

Gagal maksimal DPD
5

Tab sebaya
Parameter
Nilai

jeneng
Ing kawicaksanan sampeyan (sabanjuré diarani MyPeer)

Alamat
1.1.1.1 (mesin IP Linux)

Alamat Lokal
10.0.0.2 (IP WAN antarmuka mikrotik)

Profile
standar

Mode Exchange
utama

Pasif
palsu

Kirim INITIAL_CONTACT
bener

Tab Proposal
Parameter
Nilai

jeneng
Ing kawicaksanan sampeyan (sabanjuré diarani MyPeerProposal)

Auth. Algoritma
sha512

Encr. Algoritma
aes-128-cbc

Sakumur urip
08:00:00

Grup PFS
modp2048

Tab "Identitas".
Parameter
Nilai

Kanca
MyPeer

Atuh. Metode
kuncine rsa

Key
mikrotik.privet.key

Tombol Jarak Jauh
server-name.pub.pem

Group Cithakan Kebijakan
standar

Rantai Notrack
kosong

Tipe ID Kula
otomatis

Tipe Remote ID
otomatis

Cocokake Miturut
remote id

Konfigurasi Mode
kosong

Nggawe Kebijakan
ora

Tab "Kebijakan - Umum"
Parameter
Nilai

Kanca
MyPeer

Tunnel
bener

Src. alamat
192.168.0.0/30

Dest. alamat
192.168.0.0/30

Protokol
255 (kabeh)

cithakan
palsu

Tab "Kabijakan - Tindakan"
Parameter
Nilai

Tindakan
encrypt

level
mbutuhake

Protokol IPsec
esp

Proposal
MyPeerProposal

Paling kamungkinan, kaya aku, sampeyan duwe snat / masquerade dikonfigurasi ing antarmuka WAN; aturan iki kudu diatur supaya paket ipsec metu menyang trowongan kita:
Pindhah menyang bagean "IP" - "Firewall".
Tab "NAT", bukak aturan snat/masquerade.

Tab Majeng
Parameter
Nilai

Kebijakan IPsec
metu: ora ana

Miwiti maneh setan racoon

sudo systemctl restart racoon

Yen racoon ora diwiwiti nalika miwiti maneh, mula ana kesalahan ing konfigurasi; ing syslog, racoon nampilake informasi babagan nomer baris sing kesalahan dideteksi.

Nalika OS boot, daemon racoon diwiwiti sadurunge antarmuka jaringan digawa, lan kita nemtokake pilihan strict_address ing bagean ngrungokake; sampeyan kudu nambah unit racoon menyang file systemd
/lib/systemd/system/racoon.service, ing bagean [Unit], baris Sawise = network.target.

Saiki terowongan ipsec kudu munggah, deleng output:

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

Yen trowongan ora munggah, deleng syslog, utawa journalctl -u racoon.

Saiki sampeyan kudu ngatur antarmuka L3 supaya lalu lintas bisa dialihake. Ana macem-macem opsi, kita bakal nggunakake IPIP, amarga mikrotik ndhukung, aku bakal nggunakake vti, nanging, sayangé, iku durung dipun ginakaken ing mikrotik. Beda karo IPIP amarga bisa nambah multicast lan nglebokake fwmarks ing paket, sing bisa disaring ing iptables lan iproute2 (nuntun basis kabijakan). Yen sampeyan perlu fungsi maksimum, banjur, contone, GRE. Nanging aja lali yen kita mbayar fungsi tambahan kanthi sirah nduwur sirah gedhe.

Sampeyan bisa ndeleng terjemahan review apik saka antarmuka trowongan kene.

Ing 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

Saiki sampeyan bisa nambah rute kanggo jaringan konco mikrotik

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

Supaya antarmuka lan rute bisa diunggahake sawise urip maneh, kita kudu njlèntrèhaké antarmuka ing /etc/network/interfaces lan nambah rute ana ing post-up, utawa nulis kabeh ing siji file, contone, /etc/ ipip-ipsec0.conf lan narik liwat post-up, aja lali bab pemilik file, hak lan nggawe eksekusi.

Ing ngisor iki 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

Ing Mikrotik:

Bagean "Antarmuka", tambahake antarmuka anyar "IP trowongan":

Tab "IP tunnel" - "Umum"
Parameter
Nilai

jeneng
Ing kawicaksanan sampeyan (sabanjuré diarani IPIP-IPsec0)

WONG
1480 (yen ora ditemtokake, mikrotik wiwit nglereni mtu dadi 68)

Alamat Lokal
192.168.0.2

Alamat Remote
192.168.0.1

Rahasia IPsec
Mateni lapangan (yen ora, Peer anyar bakal digawe)

tetep urip
Mateni lapangan (yen ora, antarmuka bakal terus mati, amarga mikrotika duwe format dhewe kanggo paket kasebut lan ora bisa digunakake karo Linux)

DSCP
warisan

Aja Fragmen
ora

Clamp TCP MSS
bener

Allow Fast Path
bener

Bagean "IP" - "Alamat", tambahake alamat:

Parameter
Nilai

Alamat
192.168.0.2/30

Interface
IPIP-IPsec0

Saiki sampeyan bisa nambah rute menyang jaringan ing mburi mesin Linux; nalika nambah rute, gateway bakal dadi antarmuka IPIP-IPsec0 kita.

PS

Amarga server Linux kita transitif, mesthine kudu nyetel parameter Clamp TCP MSS kanggo antarmuka ipip:

gawe file /etc/iptables.conf kanthi isi ing ngisor iki:

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

lan ing /etc/network/interfaces
post-up iptables-restore < /etc/iptables.conf

Aku wis nginx mlaku ing jaringan konco mikrotik (ip 10.10.10.1), supaya bisa diakses saka Internet, nambah menyang /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 

Aja lali nambah ijin sing cocog kanggo iptables yen sampeyan wis ngaktifake saringan paket.

Dadi sehat!

Source: www.habr.com

Add a comment