IPIP IPsec VPN سرنگ لينڪس مشين ۽ Mikrotik جي وچ ۾ NAT فراهم ڪندڙ جي پويان

لينڪس: Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-91-generic x86_64)

  • Eth0 1.1.1.1/32 خارجي IP
  • ipip-ipsec0 192.168.0.1/30 اسان جي سرنگ هوندي

ميڪٽوڪ: سي سي آر 1009، روٽر او ايس 6.46.5

  • Eth0 10.0.0.2/30 اندروني IP فراهم ڪندڙ کان. مهيا ڪندڙ جو خارجي NAT IP متحرڪ آهي.
  • ipip-ipsec0 192.168.0.2/30 اسان جي سرنگ هوندي

اسان ريڪون استعمال ڪندي لينڪس مشين تي هڪ IPsec سرنگ ٺاهينداسين. مان تفصيل بيان نه ڪندس، اتي ھڪڙو سٺو آھي هڪ مضمون у vvpoloskin.

انسٽال ڪريو ضروري پيڪيجز:

sudo install racoon ipsec-tools

اسان ريڪون ترتيب ڏيون ٿا، اھو مشروط طور تي ipsec سرور طور ڪم ڪندو. جيئن ته مکيه موڊ ۾ mikrotik هڪ اضافي ڪلائنٽ سڃاڻپ ڪندڙ کي منتقل نٿو ڪري سگهي، ۽ ٻاهرين IP پتي جنهن جي ذريعي اهو لينڪس سان ڳنڍيندو آهي متحرڪ آهي، هڪ پري شيئر ڪيل ڪي (پاسورڊ اختيار ڪرڻ) استعمال ڪندي ڪم نه ڪندو، ڇاڪاڻ ته پاسورڊ يا ته IP پتي سان ملائڻ گهرجي. ڳنڍيندڙ ميزبان، يا سڃاڻپ ڪندڙ سان.

اسان آر ايس اي ڪيز استعمال ڪندي اختيار استعمال ڪنداسين.

ريڪون ڊيمون RSA فارميٽ ۾ ڪنجيون استعمال ڪري ٿو، ۽ ميڪروٽڪ PEM فارميٽ استعمال ڪري ٿو. جيڪڏھن توھان ٺاھيو ٿا چاٻيون استعمال ڪندي چاٻيون استعمال ڪندي ٺاھيو پلينرسا-جين يوٽيليٽي جيڪا racoon سان اچي ٿي، ته پوءِ توھان ان جي مدد سان Mikrotika لاءِ PEM فارميٽ ۾ پبلڪ ڪيئي کي تبديل نه ڪري سگھندا - اھو صرف ھڪڙي رخ ۾ بدلجي ٿو: PEM کان RSA. نه ته openssl ۽ نڪي ssh-keygen ٺاهيل ڪيئي کي پڙهي سگهي ٿو plainrsa-gen، تنهن ڪري انهن کي استعمال ڪندي تبديلي ممڪن نه هوندي.

اسان openssl استعمال ڪندي هڪ PEM ڪيئي ٺاهينداسين ۽ پوءِ ان کي بدلائي 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. صارف جي مالڪ کي مقرر ڪرڻ نه وساريو جنهن جي نالي هيٺ ريڪون ڊيمون لانچ ڪيو ويو آهي (عام طور تي روٽ) 600 اجازتن تي.

مان وضاحت ڪندس mikrotik سيٽ اپ جڏهن WinBox ذريعي ڳنڍڻ.

سرور-name.pub.pem کي اپ لوڊ ڪريو mikrotik: مينيو “فائلز” – “اپ لوڊ”.

کوليو "IP" سيڪشن - "IP سيڪنڊ" - "ڪيز" ٽيب. ھاڻي اسان چابيون ٺاھيون ٿا - ”چڱي ٺاھيو“ جو بٽڻ، پوءِ ايڪسپورٽ ڪريو mikrotika پبلڪ ڪيٻي “Expor Pub. ڪي، توھان ان کي ڊائون لوڊ ڪري سگھو ٿا "فائل" سيڪشن مان، فائل تي صحيح ڪلڪ ڪريو - "ڊائون لوڊ".

اسان racoon پبلڪ ڪيئي، "درآمد" درآمد ڪندا آهيون، "فائل جو نالو" فيلڊ جي ڊراپ-ڊائون لسٽ ۾ اسان سرور-name.pub.pem کي ڳوليندا آهيون جيڪو اسان اڳ ۾ ڊائون لوڊ ڪيو هو.

mikrotik عوامي چاٻي کي تبديل ڪرڻ جي ضرورت آهي

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

۽ ان کي /etc/racoon/certs فولڊر ۾ رکو، مالڪ ۽ حقن جي باري ۾ نه وساريو.

راڪون ترتيب تبصرن سان: /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

واپس وڃو "IP" سيڪشن - "IPsec"

"پروفائلز" ٽئب
نيم
قدر

نالو
توهان جي صوابديد تي (ڊفالٽ ڊفالٽ طرفان)

هش الگورٿيم
sha512

انڪرپشن الگورٿم
aes-128

DH-گروپ
modp2048

Proposhal_check
دعوى

لائفائم
1d 00:00:00

NAT ٽرورسل
صحيح (بڪس چيڪ ڪريو)

ڊي پي ڊي
120

ڊي پي ڊي وڌ ۾ وڌ ناڪامي
5

پيرس ٽيب
نيم
قدر

نالو
توهان جي صوابديد تي (هاڻي بعد ۾ MyPeer طور حوالو ڏنو ويو آهي)

ائڊريس
1.1.1.1 (IP لينڪس مشينون)

مقامي پتو
10.0.0.2 (IP وان انٽرفيس mikrotik)

پروفائيل
رٿيل

مٽائڻ جو طريقو
مکيه

چالو
ڪوڙي

موڪليو INITIAL_CONTACT
سچ

تجويز واري ٽيب
نيم
قدر

نالو
توهان جي صوابديد تي (هتان بعد ۾ MyPeerProposal طور حوالو ڏنو ويو آهي)

آٿت. الگورتھم
sha512

اينڪر. الگورتھم
aes-128-cbc

لائفائم
08:00:00

PFS گروپ
modp2048

"سڃاڻپ" ٽئب
نيم
قدر

پير صاحب
مائي پيئر

آتو. طريقو
rsa چاٻي

چاٻي
mikrotik.privet.key

ريموٽ ڪنج
سرور جو نالو.pub.pem

پاليسي ٽيمپليٽ گروپ
رٿيل

Nottrack زنجير
خالي

منهنجي سڃاڻپ جو قسم
ڪار

ريموٽ ID جو قسم
ڪار

پاران ملائي
remote id

موڊ جي ترتيب
خالي

پاليسي ٺاهي
نه

ٽيب "پاليسيون - جنرل"
نيم
قدر

پير صاحب
مائي پيئر

سرنگ
سچ

Src. پتو
192.168.0.0/30

منزل. پتو
192.168.0.0/30

پروٽوڪول
255 (سڀ)

سانچي
ڪوڙي

ٽيب "پاليسيون - عمل"
نيم
قدر

ايڪشن
encrypt

سطح
درخواست ڪندڙ

IPsec پروٽوڪول
ايپ

تجويز
MyPeerProposal

گهڻو ڪري، مون وانگر، توهان پنهنجي WAN انٽرفيس تي snat/masquerade ترتيب ڏنو آهي؛ هن قاعدي کي ترتيب ڏيڻ جي ضرورت آهي ته جيئن ٻاهر نڪرندڙ ipsec پيڪٽس اسان جي سرنگ ۾ وڃو:
وڃو "IP" - "فائر وال" سيڪشن.
"NAT" ٽئب، کوليو اسان جي سنيٽ / ماسڪريڊ قاعدو.

ترقي يافته ٽيب
نيم
قدر

IPsec پاليسي
ٻاهر: ڪو به

ريڪون شيطان کي ٻيهر شروع ڪرڻ

sudo systemctl restart racoon

جيڪڏهن ريڪون ٻيهر شروع ٿيڻ تي شروع نه ٿئي، پوءِ ترتيب ۾ هڪ غلطي آهي؛ syslog ۾، racoon ان لائن نمبر بابت معلومات ڏيکاري ٿو جنهن ۾ غلطي معلوم ڪئي وئي هئي.

جڏهن او ايس بوٽ ٿئي ٿو، نيٽ ورڪ انٽرفيسز جي سامهون اچڻ کان اڳ ريڪون ڊيمون شروع ٿئي ٿو، ۽ اسان ٻڌائڻ واري سيڪشن ۾ strict_address آپشن بيان ڪيو؛ توهان کي سسٽم ڊي فائل ۾ ريڪون يونٽ شامل ڪرڻ جي ضرورت آهي.
/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، ڇاڪاڻ ته mikrotik ان کي سپورٽ ڪري ٿو، مان استعمال ڪندس vti، پر، بدقسمتي سان، اھو اڃا تائين mikrotik ۾ لاڳو نه ڪيو ويو آھي. اهو IPIP کان مختلف آهي انهي ۾ ته اهو اضافي طور تي ملائي ڪاسٽ ڪري سگهي ٿو ۽ پيڪٽن تي fwmarks رکي سگهي ٿو، جنهن جي ذريعي انهن کي iptables ۽ iproute2 (پاليسي تي ٻڌل روٽنگ) ۾ فلٽر ڪري سگهجي ٿو. جيڪڏهن توهان کي وڌ ۾ وڌ ڪارڪردگي جي ضرورت آهي، مثال طور، GRE. پر اهو نه وساريو ته اسان وڏي اوور هيڊ سان اضافي ڪارڪردگي لاءِ ادا ڪندا آهيون.

توهان سرنگ انٽرفيس جي سٺي نظرثاني جو ترجمو ڏسي سگهو ٿا هتي.

لينڪس تي:

# Создаем интерфейс
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

Mikrotik تي:

سيڪشن "انٽرفيس"، هڪ نئون انٽرفيس شامل ڪريو "IP سرنگ":

ٽيب "IP سرنگ" - "جنرل"
نيم
قدر

نالو
توهان جي صوابديد تي (هتان کان پوء IPIP-IPsec0 طور حوالو ڏنو ويو آهي)

ايم يو يو
1480 (جيڪڏهن وضاحت نه ڪئي وئي آهي، mikrotik mtu کي 68 تائين ڪٽڻ شروع ڪري ٿو)

مقامي پتو
192.168.0.2

ريموٽ ايڊريس
192.168.0.1

IPsec راز
فيلڊ کي غير فعال ڪريو (ٻي صورت ۾ ھڪڙو نئون پير ٺاھيو ويندو)

زندهه رکڻ
فيلڊ کي غير فعال ڪريو (ٻي صورت ۾ انٽرفيس مسلسل بند ٿي ويندو، ڇاڪاڻ ته mikrotika انهن پيڪيجز لاء پنهنجي فارميٽ آهي ۽ لينڪس سان ڪم نه ڪندو آهي)

ڊي ايس سي پي
ورثي ۾

ٽڪرا نه ڪريو
نه

ڪليپ TCP MSS
سچ

فاسٽ واٽ جي اجازت ڏيو
سچ

سيڪشن "IP" - "پتا"، ايڊريس شامل ڪريو:

نيم
قدر

ائڊريس
192.168.0.2/30

انٽرفيس
IPIP-IPsec0

ھاڻي توھان لينڪس مشين جي پويان نيٽ ورڪ ڏانھن رستا شامل ڪري سگھو ٿا؛ جڏھن رستو شامل ڪيو وڃي، گيٽ وي اسان جو IPIP-IPsec0 انٽرفيس ھوندو.

PS

جيئن ته اسان جو لينڪس سرور ٽرانزيو آهي، اهو ان تي ipip انٽرفيس لاء Clamp TCP MSS پيٽرولر سيٽ ڪرڻ جو احساس رکي ٿو:

ھڪڙي فائل ٺاھيو /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 ۾
پوسٽ اپ 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 ۾ مناسب اجازتون شامل ڪرڻ نه وساريو جيڪڏھن توھان پيڪٽ فلٽر فعال ڪيا آھن.

صحتمند ٿي وڃو!

جو ذريعو: www.habr.com

تبصرو شامل ڪريو