IPIP IPsec VPN ዋሻ በሊኑክስ ማሽን እና ሚክሮቲክ ከ NAT አቅራቢ ጀርባ

Linux: ኡቡንቱ 18.04.4 LTS (ጂኤንዩ/ሊኑክስ 4.15.0-91-አጠቃላይ x86_64)

  • Eth0 1.1.1.1/32 ውጫዊ አይፒ
  • ipip-ipsec0 192.168.0.1/30 የእኛ መሿለኪያ ይሆናል።

ሚክቶይክ፡ CCR 1009, RouterOS 6.46.5

  • Eth0 10.0.0.2/30 የውስጥ አይፒ ከአቅራቢው. የአቅራቢው ውጫዊ NAT IP ተለዋዋጭ ነው።
  • ipip-ipsec0 192.168.0.2/30 የእኛ መሿለኪያ ይሆናል።

ራኮን በመጠቀም በሊኑክስ ማሽን ላይ የአይፒሴክ ዋሻ እንፈጥራለን። ዝርዝሮቹን አልገልጽም, ጥሩ አለ ጽሑፍ у vvpoloskin.

አስፈላጊዎቹን ፓኬጆች ይጫኑ:

sudo install racoon ipsec-tools

ራኮን እናዋቅራለን፣ ሁኔታዊ በሆነ መልኩ እንደ ipsec አገልጋይ ይሰራል። ሚክሮቲክ በዋና ሞድ ውስጥ ተጨማሪ የደንበኛ መለያን ማስተላለፍ ስለማይችል እና ከሊኑክስ ጋር የሚገናኝበት ውጫዊ አይፒ አድራሻ ተለዋዋጭ ስለሆነ አስቀድሞ የተጋራ ቁልፍ (የይለፍ ቃል ፍቃድ) መጠቀም አይሰራም ምክንያቱም የይለፍ ቃሉ ከአይፒ አድራሻው ጋር መመሳሰል አለበት ። የማገናኛ አስተናጋጁ, ወይም ከመለያ ጋር.

የ RSA ቁልፎችን በመጠቀም ፍቃድ እንጠቀማለን.

ራኮን ዴሞን በ RSA ቅርጸት ቁልፎችን ይጠቀማል፣ እና ሚክሮቲክ የPEM ቅርጸትን ይጠቀማል። ከራኮን ጋር የሚመጣውን የፕላይንሳ-ጄን መገልገያ በመጠቀም ቁልፎችን ከፈጠሩ፣በእርዳታው የ ሚክሮቲካ የህዝብ ቁልፍን ወደ PEM ቅርጸት መቀየር አይችሉም - ወደ አንድ አቅጣጫ ብቻ ይቀይራል፡ PEM ወደ RSA። Opensslም ሆነ ssh-keygen የመነጨውን ቁልፍ በplainrsa-gen ማንበብ አይችሉም፣ ስለዚህ እነሱንም በመጠቀም ልወጣው አይቻልም።

Opensslን በመጠቀም የPEM ቁልፍን እናመነጫለን እና ከዚያም 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 ፈቃዶች ማቀናበሩን አይርሱ።

በዊንቦክስ ሲገናኙ የማይክሮቲክ ማዋቀርን እገልጻለሁ።

የአገልጋይ-name.pub.pem ቁልፍን ወደ ሚክሮቲክ ይስቀሉ፡ ሜኑ “ፋይሎች” - “ስቀል”።

የ "IP" ክፍልን - "IP ሰከንድ" - "ቁልፎችን" ትርን ይክፈቱ. አሁን ቁልፎችን እናመነጫለን - የ “ቁልፉን አመንጭ” ቁልፍ ፣ ከዚያ ሚክሮቲካ የህዝብ ቁልፍ “ኤክስፖር ፐብ” ወደ ውጭ ላክ። ቁልፍ", ከ "ፋይሎች" ክፍል ማውረድ ይችላሉ, በፋይሉ ላይ በቀኝ ጠቅ ያድርጉ - "አውርድ".

ቀደም ብለን ያወረድነውን አገልጋይ-name.pub.pemን የምንፈልገው በ “ፋይል ስም” መስክ ተቆልቋይ ዝርዝር ውስጥ “አስመጣ” የሚለውን የራኮን የህዝብ ቁልፍ እናስመጣለን።

ሚክሮቲክ የህዝብ ቁልፍ መቀየር አለበት።

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"

"መገለጫዎች" ትር
መለኪያ
ዋጋ

ስም
በእርስዎ ምርጫ (በነባሪ)

ሃሽ አልጎሪዝም
sha512

ምስጠራ አልጎሪዝም
aes-128

ዲኤች-ግሩፕ
modp2048

ፕሮፖሻል_ቼክ
የይገባኛል ጥያቄ

የህይወት ዘመን
1ኛ 00፡00፡00፡XNUMX

NAT መሻገር
እውነት (ሳጥኑ ላይ ምልክት ያድርጉ)

DPD
120

DPD ከፍተኛ ውድቀት
5

የእኩዮች ትር
መለኪያ
ዋጋ

ስም
በእርስዎ ውሳኔ (ከዚህ በኋላ ማይፒር ይባላል)

አድራሻ
1.1.1.1 (አይፒ ሊኑክስ ማሽኖች)

የአካባቢ አድራሻ
10.0.0.2 (IP WAN በይነገጽ ሚክሮቲክ)

ባንድ በኩል የሆነ መልክ
ነባሪ

የልውውጥ ሁኔታ
ዋና

የማይሠራ
የሐሰት

INITIAL_CONTACT ላክ
እውነተኛ

የፕሮፖዛል ትር
መለኪያ
ዋጋ

ስም
በእርስዎ ውሳኔ (ከዚህ በኋላ MyPeerProposal ይባላል)

እውነት። አልጎሪዝም
sha512

ማጠቃለያ አልጎሪዝም
aes-128-cbc

የህይወት ዘመን
08:00:00

PFS ቡድን
modp2048

"ማንነቶች" ትር
መለኪያ
ዋጋ

እኩዮች
MyPeer

አቱህ ዘዴ
rsa ቁልፍ

ቁልፍ
mikrotik.privet.ቁልፍ

የርቀት ቁልፍ
አገልጋይ-ስም.pub.pem

የፖሊሲ አብነት ቡድን
ነባሪ

የኖትራክ ሰንሰለት
ባዶ

የእኔ መታወቂያ አይነት
መኪና

የርቀት መታወቂያ አይነት
መኪና

ተዛማጅ በ
የርቀት መታወቂያ

ሁነታ ውቅር
ባዶ

ፖሊሲ መፍጠር

ትር "መመሪያዎች - አጠቃላይ"
መለኪያ
ዋጋ

እኩዮች
MyPeer

የመሬት ዉስጥ መተላለፊያ
እውነተኛ

Src. አድራሻ
192.168.0.0/30

ደስት አድራሻ
192.168.0.0/30

ፕሮቶኮል
255 (ሁሉም)

አብነት
የሐሰት

ትር "መመሪያዎች - እርምጃ"
መለኪያ
ዋጋ

እርምጃ
ምስጠራ

ደረጃ
ይጠይቃል

IPsec ፕሮቶኮሎች
ልዩነት

ፕሮፖዛል
MyPeerProposal

ምናልባት ልክ እንደ እኔ በ WAN በይነገጽዎ ላይ snt/masquerade ተዋቅረዋል፡ የወጪ ipsec እሽጎች ወደ ዋሻችን እንዲገቡ ይህ ህግ መስተካከል አለበት።
ወደ "IP" - "ፋየርዎል" ክፍል ይሂዱ.
"NAT" ትር, የእኛን snat/masquerade ደንብ ይክፈቱ.

የላቀ ትር
መለኪያ
ዋጋ

IPsec ፖሊሲ
ውጭ፡ የለም

ራኮን ጋኔኑን እንደገና በማስጀመር ላይ

sudo systemctl restart racoon

ራኮን እንደገና ሲጀመር ካልጀመረ በማዋቀሩ ላይ ስህተት አለ፤ በ syslog ውስጥ ራኮን ስህተቱ የተገኘበትን የመስመር ቁጥር መረጃ ያሳያል።

ስርዓተ ክወናው ሲጀምር ራኮን ዴሞን የኔትወርክ በይነገጾች ከመምጣታቸው በፊት ይጀምራል እና ጥብቅ_አድራሻ አማራጩን በአድማጭ ክፍል ውስጥ ገልፀናል ፣ የራኮን ክፍሉን በስርዓት ፋይል ውስጥ ማከል ያስፈልግዎታል
/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 እጠቀማለሁ, ግን በሚያሳዝን ሁኔታ, ገና በማይክሮቲክ ውስጥ አልተተገበረም. ከአይፒአይፒ የሚለየው በተጨማሪ መልቲካስትን በመከለል እና በፓኬቶች ላይ 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

አሁን ከማይክሮቲክ ጀርባ ለአውታረ መረቦች መስመሮችን ማከል ይችላሉ።

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

ድጋሚ ከተነሳ በኋላ የእኛ በይነገጽ እና መንገዶቻችን እንዲነሱ በይነገጹን በ /etc/network/interfaces ውስጥ መግለፅ እና በድህረ-ገጽ ውስጥ መስመሮችን ማከል ወይም ሁሉንም ነገር በአንድ ፋይል ውስጥ መጻፍ አለብን ፣ ለምሳሌ ፣ / ወዘተ. 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

ሚክሮቲክ ላይ፡-

ክፍል "በይነገጽ", አዲስ በይነገጽ "IP ዋሻ" ያክሉ:

ትር "IP ዋሻ" - "አጠቃላይ"
መለኪያ
ዋጋ

ስም
በእርስዎ ውሳኔ (ከዚህ በኋላ IPIP-IPsec0 ይባላል)

ኤምቲዩ
1480 (ካልተገለጸ ሚክሮቲክ ምቱን ወደ 68 መቁረጥ ይጀምራል)

የአካባቢ አድራሻ
192.168.0.2

የርቀት አድራሻ
192.168.0.1

IPsec ሚስጥር
መስኩን አቦዝን (አለበለዚያ አዲስ አቻ ይፈጠራል)

ተጠባባቂ
መስኩን አቦዝን (አለበለዚያ ሚክሮቲካ ለእነዚህ ጥቅሎች የራሱ የሆነ ቅርጸት ስላለው እና ከሊኑክስ ጋር የማይሰራ ስለሆነ በይነገጹ ያለማቋረጥ ይጠፋል)

ዲ.ኤስ.ፒ.
ውርስ

አትከፋፍል።

ክላምፕ TCP MSS
እውነተኛ

ፈጣን መንገድ ፍቀድ
እውነተኛ

ክፍል "IP" - "አድራሻዎች", አድራሻውን ያክሉ:

መለኪያ
ዋጋ

አድራሻ
192.168.0.2/30

በይነገጽ
IPIP-IPsec0

አሁን ከሊኑክስ ማሽን ጀርባ ወደ አውታረ መረቡ መስመሮችን ማከል ይችላሉ፤ መንገድ ሲጨምሩ መግቢያ ዌይ የእኛ IPIP-IPsec0 በይነገጽ ይሆናል።

PS

የሊኑክስ አገልጋያችን ተሻጋሪ ስለሆነ፣ በላዩ ላይ የአይፒፒ በይነገጽ ላይ ያለውን የCamp 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
post-up iptables-restore</etc/iptables.conf

ከሚክሮቲክ (ip 10.10.10.1) በስተጀርባ ባለው አውታረመረብ ላይ nginx እየሰራሁ ነው ፣ ከበይነመረብ ተደራሽ ያድርጉት ፣ ወደ /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 ማከልን አይርሱ።

ጤናማ ይሁኑ!

ምንጭ: hab.com

አስተያየት ያክሉ