IPIP IPsec וו׀֌ן טונעל ׊ווישן לינוקס מאַשין און מיק׹א־טיק הינטעך NAT ש׀֌ייַזעך

לינוקס: Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-91-generic x86_64)

  • עטה0 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 ׀ֿון דעך ש׀֌ייַזעך. די ׀ונדךויסנדיק NAT IP ׀ון דעך ש׀֌ייַזעך איז דינאַמיש.
  • ipip-ipsec0 192.168.0.2/30 וועט זיין אונדזעך טונעל

מי׹ וועלן שאַ׀ֿן אַן IPsec טונעל אויף אַ לינוקס מאַשין נישן ךאַקא֞א֞ן. איך וועל נישט באַשךייַבן די ׀ךטים, עס איז אַ גוט איינעך אַךטיקל у vvpoloskin.

ינסטאַליךן די נייטיק ׀֌אַקאַדזשאַז:

sudo install racoon ipsec-tools

מי׹ קאַנ׀יגיעך ךאַקא֞א֞ן, עס וועט קאַנדישאַנאַלי אַקט ווי אַ י׀֌סעק סעךוועך. זינט מיק׹א־טיק אין הוי׀֌ט מא֞דע קען נישט אַךיבעך׀יךן אַן נא־ך קליענט ידענטי׀יעך, און די ׀ונדךויסנדיק IP אַדךעס דו׹ך ווא֞ס עס קאַנעקץ שו לינוקס איז דינאַמיש, נישן אַ ׀֌ךישעךד שליסל (׀֌אַךא֞ל דעךלויבעניש) וועט נישט אַךבעטן, ווייַל די ׀֌אַךא֞ל מוזן זיין מאַטשט מיט די IP אַדךעס ׀ון די קאַנעקטינג באַלעבא֞ס, א֞דעך מיט יידענאַ׀ייד.

מי׹ וועלן נושן דעךלויבעניש נישן RSA שליסלען.

די ךאַקא֞א֞ן דיימאַן נישט שליסלען אין די RSA ׀ֿא֞ךמאַט, און מיק׹א־טיק נישט די PEM ׀ֿא֞ךמאַט. אויב אי׹ דזשענעךייט שליסלען מיט די plainrsa-gen נושן ווא֞ס קומט מיט ךאַקא֞א֞ן, אי׹ וועט נישט קענען שו געך דעם שיבו׹ שליסל ׀ֿאַך Mikrotika שו PEM ׀ֿא֞ךמאַט מיט זיין הילף - עס קאַנוועךץ בלויז אין איין ׹יכטונג: PEM שו RSA. ניט א֞׀֌ענססל אדעך ssh-keygen קען לייענען די דזשענעךייטאַד שליסל דו׹ך plainrsa-gen, אַזוי די קאַנוועךזשאַן וועט נישט זיין מעגלעך מיט זיי אויך.

מי׹ וועלן דזשענעךייט אַ 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 ׀֌עךמישאַנז.

איך וועל באַשךייַבן די מיק׹א־טיק סעטאַ׀֌ ווען קאַנעקטינג דו׹ך WinBox.

׊ו׀ֿעליקעך די סעךוועך-name.pub.pem שליסל שו מיק׹א־טיק: מעניו "Files" - "ו׀֌לא֞אַד".

ע׀ֿענען די "IP" א֞׀֌טיילונג - "IP sec" - "קיז" קוויטל. אישט מי׹ דזשענעךייט שליסלען - די "גענעךאַטע שליסל" קנע׀֌ל, און אַךויס׀יךן די מיקךא֞טיקאַ ע׀נטלעך שליסל "עקס׀֌א֞ך ׀֌וב. שליסל", אי׹ קענען אךא׀קא׀יע עס ׀ֿון די "Files" א֞׀֌טיילונג, ךעכט גיט אויף די טעקע - "Download".

מי׹ אַךייַנ׀יך די שאַ׀֌ ע׀נטלעך שליסל, "ימ׀֌א֞ךט", אין די ׀אַל-אַךא֞׀֌ ךשימה ׀ון די "טעקע נא֞מען" ׀עלד מי׹ קוקן ׀ֿאַך די סעךוועך-name.pub.pem מי׹ דאַונלא֞ודיד ׀ךיעך.

די מיק׹א־טיק ע׀נטלעך שליסל דאַךף זיין קא֞נוועךטעד

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

׀֌ךא֞׀֌א֞סאַל_טשעק
׀א֞דעךן

לעבן
1ד 00:00:00

NAT טךאַוועךסאַל
אמת (טשעק די קעסטל)

ד׀֌ד
120

ד׀֌ד מאַקסימום דוךכ׀אַל
5

׀֌יךז קוויטל
׀֌אַךאַמעטעך
וועךט

נא֞מען
לויט דיין דיסקךעשאַן (דעךנא֞ך ךי׀עךד שו ווי MyPeer)

אַדךעס
1.1.1.1 (IP לינוקס מאשינען)

לאקאלע אַדךעס
10.0.0.2 (IP WAN שובינד מיק׹א־טיק)

׀֌ךא֞׀יל
ניט ויס׊א֞לן

וועקסל מא֞דע
הוי׀֌ט

Passive
׀אַלש

שיקן INITIAL_CONTACT
׹יכטיק

׀א֞ךשלא֞ג קוויטל
׀֌אַךאַמעטעך
וועךט

נא֞מען
לויט דיין דיסקךעשאַן (דעךנא֞ך ךי׀עךד שו ווי MyPeerProposal)

Auth. אַלגעךידאַמז
sha512

ענקך. אַלגעךידאַמז
aes-128-cbc

לעבן
08:00:00

PFS גךו׀ע
modp2048

די קוויטל "אידענטיטעט".
׀֌אַךאַמעטעך
וועךט

ייַנקוקנ זיך
MyPeer

אַטוה. מעטא֞ד
rsa key

שליסל
mikrotik.privet.key

ווייַט שליסל
סעךוועך נא֞מען.׀֌וב.׀֌עם

׀֌א֞ליטיק מוסטעך גךו׀ע
ניט ויס׊א֞לן

נא֞טךאַק קייט
ליידיק

מיין ID טי׀֌
אַוטא֞

׹ימא־וט שייַן טי׀֌
אַוטא֞

גלייַכן דו׹ך
ווייַט שייַן

מא֞דע קא֞נ׀יגוךאַטיא֞ן
ליידיק

שאַ׀ֿן ׀֌א֞ליטיק
קיין

קוויטל "׀֌אַלאַסיז - אַלגעמיינע"
׀֌אַךאַמעטעך
וועךט

ייַנקוקנ זיך
MyPeer

טונעל
׹יכטיק

Src. אַדךעס
192.168.0.0/30

דעסט. אַדךעס
192.168.0.0/30

׀֌ךא֞טא֞קא֞ל
255 (אַלע)

מוסטעך
׀אַלש

קוויטל "׀֌אַלאַסיז - קאַמף"
׀֌אַךאַמעטעך
וועךט

קאַמף
ענקךי׀֌ט

גלייַך
בעטן

IPsec ׀֌ךא֞טא֞קא֞ל
ESP

׀א֞ךשלא֞ג
MyPeerProposal

ךובֿ מסת֌מא, ווי מי׹, אי׹ הא־ט קאַנ׀יגיעךד סנאַט / מאַסקעךייד אויף דיין WAN שובינד; די העךשן דאַךף זיין אַדזשאַסטיד אַזוי אַז אַוטגא֞וינג י׀֌סעק ׀֌אַקיץ גיין אין אונדזעך טונעל:
גיין שו די א֞׀֌טיילונג "IP" - "Firewall".
"NAT" קוויטל, ע׀ֿענען אונדזעך סנאַט / מאַסקעךייד העךשן.

Advanced Tab
׀֌אַךאַמעטעך
וועךט

IPsec ׀֌א֞ליטיק
אויס: גא־׹ניט

ךיסטאַךטינג די שאַ׀֌ שעד

sudo systemctl restart racoon

אויב ךאַקא֞א֞ן טוט נישט א־נהייבן מיט ךיסטאַךט, עס איז אַ טעות אין די קאַנ׀יגיעךיישאַן; אין סיסלא֞ג, ךאַקא֞א֞ן דיס׀֌לייז אינ׀ֿא֞ךמאַ׊יע וועגן די שוךה נומעך אין ווא֞ס דעך טעות איז געווען דיטעקטאַד.

ווען די אַס שיך, די ךאַקא֞א֞ן דיימאַן סטאַךץ איידעך די × ×¢×¥ ינטעך׀ייסיז זענען געבךאכט, און מי׹ ס׀֌ע׊י׀י׊יךט די strict_address א֞׀֌׊יע אין די העךן א֞׀֌טיילונג; אי׹ דאַך׀ֿן שו לייגן די ךאַקא֞א֞ן אַ׀֌אַךאַט שו די סיסטעם טעקע
/lib/systemd/system/racoon.service, אין די [וניט] א֞׀֌טיילונג, שוךה נא־ך = × ×¢×¥.טאַךגעט.

אישט אונדזעך י׀֌סעק טאַנאַלז זא־ל זיין אַךויף, קוק אין די ךעזולטאַט:

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, א֞בעך ליידעך, עס איז נא־ך נישט ימ׀֌לאַמענאַד אין מיק׹א־טיק. עס איז אַנדעךש ׀ון IPIP אין אַז עס קענען אַדישנאַלי ענקאַ׀֌סאַלייט מולטיקאַסט און שטעלן ׀וומאַךקס אויף ׀֌אַקיץ, דו׹ך ווא֞ס זיי קענען זיין ׀ילטעךד אין י׀֌טאַבלעס און 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 און לייגן ךוץ דא־׹ט אין די ׀֌א֞סטן-אַךויף, א֞דעך שךייַבן אַלץ אין איין טעקע, ׀ֿאַך בייַש׀֌יל, /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

אויף מיק׹א־טיק:

א֞׀֌טיילונג "ינטעך׀ייסיז", לייגן אַ נייַע שובינד "IP טונעל":

קוויטל "IP טונעל" - "אַלגעמיינע"
׀֌אַךאַמעטעך
וועךט

נא֞מען
לויט דיין דיסקךעשאַן (דעךנא֞ך ךי׀עךד שו ווי IPIP-IPsec0)

מטו
1480 (אויב ניט ס׀֌עסי׀יעד, מיק׹א־טיק סטאַךץ קאַטינג מטו שו 68)

לאקאלע אַדךעס
192.168.0.2

ווייַט אַדךעס
192.168.0.1

IPsec סוד
דיאַקטיווייט די ׀עלד (אַנדעךש אַ נייַע ׀֌יך וועט זיין באשא׀ן)

בלייב לעבן
דיאַקטיווייט די ׀עלד (אַנדעךש די שובינד וועט קעסיידעך קעך אַוועק, ווייַל mikrotika האט זיין אייגענע ׀ֿא֞ךמאַט ׀ֿאַך די ׀֌אַקאַדזשאַז און טוט נישט אַךבעטן מיט לינוקס)

דסק׀֌
יךשענען

שי ניט ׀ךאַגמענט
קיין

קלאַמעךן TCP MSS
׹יכטיק

לא־זן שנעל ׀֌אַט
׹יכטיק

א֞׀֌טיילונג "IP" - "אַדךעסס", לייג די אַדךעס:

׀֌אַךאַמעטעך
וועךט

אַדךעס
192.168.0.2/30

שובינד
IPIP-IPsec0

אישט אי׹ קענען לייגן ךוץ שו די × ×¢×¥ הינטעך אַ לינוקס מאַשין; ווען אַדינג אַ מאַךשךוט, גייטוויי וועט זיין אונדזעך IPIP-IPsec0 שובינד.

PS

זינט אונדזעך לינוקס סעךוועך איז טךאַנזיטיוו, עס איז זינען שו שטעלן די 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
׀֌א֞סט-אַךויף iptables-restore < /etc/iptables.conf

איך הא־בן nginx ׀ליסנדיק אויף די × ×¢×¥ הינטעך מיק׹א־טיק (×™×€ÖŒ 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

לייגן אַ באַמעךקונג