Нақби IPIP IPsec VPN байни мошини Linux ва Mikrotik дар паси провайдери NAT

Linux: Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-91-умумии x86_64)

  • Eth0 1.1.1.1/32 IP беруна
  • ipip-ipsec0 192.168.0.1/30 нақби мо хоҳад буд

Миктоик: CCR 1009, RouterOS 6.46.5

  • Eth0 10.0.0.2/30 IP дохилӣ аз провайдер. IP-и берунаи NAT провайдер динамикӣ аст.
  • ipip-ipsec0 192.168.0.2/30 нақби мо хоҳад буд

Мо нақби IPsec-ро дар мошини Linux бо истифода аз racoon эҷод мекунем. Ман тафсилотро тавсиф намекунам, як чизи хубе ҳаст мақола у ввполоскин.

Бастаҳои заруриро насб кунед:

sudo install racoon ipsec-tools

Мо racoon-ро танзим мекунем, он шартан ҳамчун сервери ipsec амал мекунад. Азбаски микротик дар реҷаи асосӣ идентификатори иловагии муштариро интиқол дода наметавонад ва суроғаи IP-и беруние, ки тавассути он ба Linux пайваст мешавад, динамикӣ аст, бо истифода аз калиди пешакии муштарак (авторизатсияи парол) кор намекунад, зеро парол бояд ё бо суроғаи IP мувофиқ бошад. мизбони пайвасткунанда ё бо идентификатор.

Мо иҷозатро бо истифода аз калидҳои RSA истифода хоҳем кард.

Демон racoon калидҳоро дар формати RSA истифода мебарад ва mikrotik формати PEM -ро истифода мебарад. Агар шумо калидҳоро бо истифода аз утилитаи plainrsa-gen тавлид кунед, ки бо racoon меояд, пас шумо наметавонед калиди ҷамъиятии Микротикаро бо ёрии он ба формати PEM табдил диҳед - он танҳо дар як самт табдил меёбад: PEM ба RSA. На openssl ва на ssh-keygen калиди тавлидшударо тавассути plainrsa-gen хонда наметавонанд, аз ин рӯ бо истифода аз онҳо низ табдил додан ғайриимкон хоҳад буд.

Мо калиди PEM-ро бо истифода аз openssl тавлид мекунем ва сипас онро барои racoon бо истифода аз 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

Мо калидҳои гирифташударо дар ҷузвдон ҷойгир мекунем: /etc/racoon/certs/server. Фаромӯш накунед, ки соҳиби корбаре, ки бо номи он демон racoon оғоз шудааст (одатан реша) ба 600 иҷозат таъин кунед.

Ман танзимоти микротикро ҳангоми пайвастшавӣ тавассути WinBox тавсиф мекунам.

Калиди server-name.pub.pem-ро ба микротик бор кунед: Менюи "Файлҳо" - "Боркунӣ".

Бахши "IP" - "IP sec" - ҷадвали "Калидҳо" -ро кушоед. Ҳоло мо калидҳоро тавлид мекунем - тугмаи "Таҷдиди калид" ва сипас калиди ҷамъиятии микротикаи "Export Pub" -ро содир мекунем. Калид, шумо метавонед онро аз бахши "Файлҳо" зеркашӣ кунед, тугмаи рости мушро пахш кунед - "Зеркашӣ".

Мо калиди ҷамъиятии racoon-ро ворид мекунем, "Ворид", дар рӯйхати афтанда дар майдони "Номи файл" мо сервер-name.pub.pem-ро, ки қаблан бор карда будем, ҷустуҷӯ мекунем.

Калиди ҷамъиятии mikrotik бояд табдил дода шавад

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

ва онро дар папкаи /etc/racoon/certs гузоред, дар бораи соҳиб ва ҳуқуқҳо фаромӯш накунед.

конфигуратсияи racoon бо шарҳҳо: /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; # Сжимать передаваемые данные, алгоритм сжатия предлагается только один.
}

конфигуратсияи микротик

Бозгашт ба бахши "IP" - "IPsec"

Ҷадвали "Профилҳо"
Параметр
арзиши

ном
Бо ихтиёри шумо (бо нобаёнӣ)

Алгоритми ҳаш
ШАХНУН

Алгоритми рамзгузорӣ
aes-128

DH-гурӯҳ
modp2048

Санҷиши пешниҳод
Даъво

Умр
1г 00:00:00

NAT Traversal
дуруст (қуттичаро қайд кунед)

DPD
120

DPD Нокомии ҳадди аксар
5

Ҷадвали ҳамсолон
Параметр
арзиши

ном
Бо ихтиёри шумо (минбаъд MyPeer номида мешавад)

Нишонӣ
1.1.1.1 (мошинҳои IP Linux)

Суроғаи маҳаллӣ
10.0.0.2 (Интерфейси IP WAN микротик)

Чеҳра
Пешфарз

Усули мубодила
асосӣ

Пасванди
бардурӯғ

Ирсоли INITIAL_CONTACT
ҳақиқӣ

Ҷадвали пешниҳод
Параметр
арзиши

ном
Бо ихтиёри шумо (минбаъд MyPeerProposal номида мешавад)

Автор. Алгоритмҳо
ШАХНУН

Encr. Алгоритмҳо
aes-128-cbc

Умр
08:00:00

Гурӯҳи PFS
modp2048

Ҷадвали "Шахсиятҳо"
Параметр
арзиши

Ҳамсол
MyPeer

Атух. Усул
калиди rsa

калид
mikrotik.privet.key

Калиди дурдаст
server-name.pub.pem

Гурӯҳи Шаблонҳои Сиёсат
Пешфарз

Занҷири Нотрак
холӣ аст

Навъи ID ман
мошин

Навъи ID-и дурдаст
мошин

Match By
ID-и дурдаст

Танзимоти режим
холӣ аст

Эҷоди сиёсат
Не

Ҷадвали "Сиёсат - умумӣ"
Параметр
арзиши

Ҳамсол
MyPeer

нақби
ҳақиқӣ

Src. Суроға
192.168.0.0/30

Дест. Суроға
192.168.0.0/30

Протокол
255 (ҳама)

Шаблон
бардурӯғ

Ҷадвали "Сиёсат - Амал"
Параметр
арзиши

Чорабиниҳои
шифргузори

сатҳи
талаб мекунанд

Протоколҳои IPsec
Махсусан

Пешниҳод
MyPeerProposal

Эҳтимол, мисли ман, шумо дар интерфейси WAN-и худ snat/masquerade танзим кардаед; ин қоида бояд танзим карда шавад, то бастаҳои содиротии ipsec ба нақби мо ворид шаванд:
Ба қисмати "IP" - "Сивер" гузаред.
Ҷадвали "NAT", қоидаи snat/masquerade моро кушоед.

Ҷадвали пешрафта
Параметр
арзиши

Сиёсати IPsec
берун: нест

Аз нав оғоз кардани деви ракон

sudo systemctl restart racoon

Агар racoon ҳангоми бозоғозӣ оғоз накунад, пас дар конфигуратсия хатогӣ вуҷуд дорад; дар syslog, racoon маълумотро дар бораи рақами сатре, ки дар он хатогӣ ошкор шудааст, нишон медиҳад.

Вақте, ки OS пурбор мешавад, демони racoon пеш аз кушода шудани интерфейсҳои шабака оғоз мешавад ва мо дар бахши гӯш кардан варианти strict_addressро муайян кардем; шумо бояд воҳиди раконро ба файли systemd илова кунед
/lib/systemd/system/racoon.service, дар фасли [Воҳид], сатри After=network.target.

Акнун нақбҳои ipsec мо бояд боло бошанд, ба натиҷа нигаред:

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

Агар нақбҳо боло набошанд, ба syslog ё journalctl -u racoon нигаред.

Акнун ба шумо лозим аст, ки интерфейсҳои L3-ро танзим кунед, то трафикро масир кардан мумкин бошад. Вариантҳои гуногун мавҷуданд, мо IPIP-ро истифода хоҳем кард, зеро микротик онро дастгирӣ мекунад, ман vti -ро истифода мебарам, аммо, мутаассифона, он ҳанӯз дар mikrotik татбиқ нашудааст. Он аз IPIP бо он фарқ мекунад, ки он метавонад ба таври иловагӣ мултипликатсияро фаро гирад ва фwмаркҳоро ба пакетҳо гузорад, ки тавассути онҳо онҳоро дар iptables ва iproute2 (маршруткунии бар асоси сиёсат) филтр кардан мумкин аст. Агар ба шумо функсияи ҳадди аксар лозим бошад, пас, масалан, GRE. Аммо фаромӯш накунед, ки мо барои функсияҳои иловагӣ бо сари калон пардохт мекунем.

Шумо метавонед тарҷумаи шарҳи хуби интерфейсҳои нақбро бубинед дар ин ҷо.

Дар 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

Акнун шумо метавонед хатсайрҳоро барои шабакаҳои паси mikrotik илова кунед

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

Барои он ки интерфейс ва масирҳои мо пас аз бозоғозӣ баланд шаванд, мо бояд интерфейсро дар /etc/network/interfaces тавсиф кунем ва дар он ҷо хатсайрҳоро дар пас аз боло илова кунем ё ҳама чизро дар як файл нависед, масалан, /etc/ ipip-ipsec0.conf ва онро тавассути пас аз боло кашед, дар бораи соҳиби файл, ҳуқуқҳо фаромӯш накунед ва онро иҷрошаванда созед.

Дар зер як файли намунавӣ оварда шудааст

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

Дар Микротик:

Бахши "Интерфейсҳо", интерфейси нави "Tunnel IP" илова кунед:

Ҷадвали "Нақби IP" - "Умумӣ"
Параметр
арзиши

ном
Бо ихтиёри шумо (минбаъд IPIP-IPsec0 номида мешавад)

MTU
1480 (агар муайян нашуда бошад, микротик ба буридани mtu ба 68 оғоз мекунад)

Суроғаи маҳаллӣ
192.168.0.2

Суроғаи дурдаст
192.168.0.1

Сирри IPsec
Майдонро ғайрифаъол кунед (дар акси ҳол як ҳамсоли нав эҷод мешавад)

Нигоҳдоранда
Майдонро ғайрифаъол кунед (дар акси ҳол интерфейс ҳамеша хомӯш мешавад, зеро микротика барои ин бастаҳо формати худро дорад ва бо Linux кор намекунад)

DSCP
меравам

Фрагментатсия накунед
Не

TCP MSS-ро пахш кунед
ҳақиқӣ

Роҳи зудро иҷозат диҳед
ҳақиқӣ

Бахши "IP" - "Адресҳо", суроғаро илова кунед:

Параметр
арзиши

Нишонӣ
192.168.0.2/30

интерфейс
IPIP-IPsec0

Акнун шумо метавонед хатсайрҳоро ба шабака дар паси мошини Linux илова кунед; ҳангоми илова кардани масир, шлюз интерфейси IPIP-IPsec0 мо хоҳад буд.

PS

Азбаски сервери Linux-и мо гузаранда аст, дар он танзим кардани параметри Clamp TCP MSS барои интерфейсҳои ipip маъно дорад:

файли /etc/iptables.conf бо мундариҷаи зерин эҷод кунед:

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

ва дар /etc/network/interfaces
post-up iptables-restore < /etc/iptables.conf

Ман nginx дар шабака дар паси mikrotik кор мекунад (ip 10.10.10.1), онро аз Интернет дастрас кунед ва онро ба /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 

Фаромӯш накунед, ки иҷозатҳои мувофиқро ба iptables илова кунед, агар шумо филтрҳои пакетӣ фаъол бошед.

Саломат бошед!

Манбаъ: will.com

Илова Эзоҳ