Kartais susiduriame su klausimais kaip ir kokią VPN technologiją naudoti, norit apjungti kelis, nutolusių taškų, vietinius tinklus. O atsakymas skamba paprastai. Šiam tikslui pasiekti daugeliu atveju, bus naudojama VPN technologija IPsec. Nes jis naudojame seniai ir pripažįstama saugiausia šiuo metu. Ją galima naudoti tiesiogiai apjungiant taškus ir koduojant perduodamų duomenų srautą, arba galima naudoti tik perduodamų duomenų srauto kodavimui su kitu tipo VPN apjungimo protokolu pvz. GRE, L2TP. Abiem atvejais perduodamų duomenų saugumas yra užtikrinamas pilnai.
Aktualesnis šio VPN protokolo panaudojimo klausimas iškyla, kada reikia apjungti kelis nutolusių taškų vietinius potinklius. IPsec buvo sukurtas su tikslu saugiai apjungti du, lygiagrečiai, vidinius tinklus P2P principu, pagal vieną sukurtą IPSec politiką „selektorių”. Būtent politika, apibrėžia konkretų kompiuterių tinklo potinklių porą, kurios duomenų srautas bus šifruojamas.
Bet dabartiniame kontekste IPsec politika arba „selektorius” buvo praplėstas ir pradėtas taikyti kaip srauto „selectorius”, kuris, pagal politikas, maršrutizatoriuje gali koduoti kelis ar keliolika, dviejų apjungiamu taškų potinklių poras. Šiuo atveju viskas kaip ir veikia ir nekelia problemų, bet jei laikui bėgant tokių apjungimų daugėja, valdymas atitinkamai tampa vis sudėtingesnis. Tada reikia atsigręžti į GRE+IPsec sprendimą, kuris leidžia visa tai valdyti paprasčiau. Verta paminėti, kad GRE šiek tiek prideda perduodamiems paketams „svorio” (GRE + IPsec antraštės).
Kada rinktis tik IPsec, o kada rinktis GRE su IPsec?
- Rekomenduojame rinkti tik IPsec, jei turite tik kelis potinklius ir nėra numatyta kitų pakeitimų vidiniuose tinkluose ateityje. Taip bus įprastas VPN apjungimas, kuris tiesiog veiks.
- Rekomenduojame GRE su IPsec naudoti, jei turite daug potinklių, reikia lankstumo ir praplėtimo galimybių arba planuojate naudoti maršruto parinkimo protokolus.
Pateikiame abu variantus, sukonfigūruotus Router OS sistemose.
IPsec su daugiau nei vienu potinkliu, dar kitaip su keliomis politikomis pavyzdys
AR1
/ip ipsec peer
add address=2.2.2.2/32 exchange-mode=ike2 local-address=1.1.1.2 name=AR1toBR2
/port
set 0 name=serial0
/ip address
add address=1.1.1.2/30 interface=ether1 network=1.1.1.0
add address=192.168.101.254/24 interface=ether2 network=192.168.101.0
/ip dhcp-client
add interface=ether1
/ip firewall filter
add action=accept chain=input dst-port=500,4500 protocol=udp
add action=accept chain=input protocol=ipsec-esp
add action=accept chain=input ipsec-policy=in,ipsec
/ip firewall nat
add action=masquerade chain=srcnat out-interface=ether1 src-address=192.168.101.0/24
/ip firewall raw
add action=notrack chain=prerouting dst-address=192.168.111.0/24 src-address=192.168.101.0/24
add action=notrack chain=prerouting dst-address=192.168.222.0/24 src-address=192.168.101.0/24
add action=notrack chain=prerouting dst-address=192.168.101.0/24 src-address=192.168.111.0/24
add action=notrack chain=prerouting dst-address=192.168.101.0/24 src-address=192.168.222.0/24
/ip ipsec identity
add peer=AR1toBR2
/ip ipsec policy
set 0 disabled=yes
add dst-address=192.168.111.0/24 peer=AR1toBR2 src-address=192.168.101.0/24 tunnel=yes
add dst-address=192.168.222.0/24 peer=AR1toBR2 src-address=192.168.101.0/24 tunnel=yes
/ip route
add disabled=no dst-address=0.0.0.0/0 gateway=1.1.1.1 routing-table=main suppress-hw-offload=no
/system identity
set name=AR1
BR2
/ip ipsec peer
add address=1.1.1.2/32 exchange-mode=ike2 local-address=2.2.2.2 name=\
BR2toAR1
/port
set 0 name=serial0
/ip address
add address=2.2.2.2/30 interface=ether1 network=2.2.2.0
add address=192.168.111.254/24 interface=ether2 network=192.168.111.0
add address=192.168.222.254/24 interface=ether3 network=192.168.222.0
/ip dhcp-client
add interface=ether1
/ip firewall filter
add action=accept chain=input dst-port=500,4500 protocol=udp
add action=accept chain=input protocol=ipsec-esp
add action=accept chain=input ipsec-policy=in,ipsec
/ip firewall nat
add action=masquerade chain=srcnat out-interface=ether1 src-address=\
192.168.111.0/24
add action=masquerade chain=srcnat out-interface=ether1 src-address=\
192.168.222.0/24
/ip firewall raw
add action=notrack chain=prerouting dst-address=192.168.101.0/24 \
src-address=192.168.111.0/24
add action=notrack chain=prerouting dst-address=192.168.111.0/24 \
src-address=192.168.101.0/24
add action=notrack chain=prerouting dst-address=192.168.101.0/24 \
src-address=192.168.222.0/24
add action=notrack chain=prerouting dst-address=192.168.222.0/24 \
src-address=192.168.101.0/24
/ip ipsec identity
add peer=BR2toAR1
/ip ipsec policy
set 0 disabled=yes
add dst-address=192.168.101.0/24 peer=BR2toAR1 src-address=\
192.168.111.0/24 tunnel=yes
add dst-address=192.168.101.0/24 peer=BR2toAR1 src-address=\
192.168.222.0/24 tunnel=yes
/ip route
add disabled=no dst-address=0.0.0.0/0 gateway=2.2.2.1 routing-table=main \
suppress-hw-offload=no
/system identity
set name=BR2
GRE+IPsec su daugiau nei vienu potinkliu pavyzdys
R1
/interface gre
add allow-fast-path=no local-address=1.1.1.1 name=CL1 remote-address=3.3.3.1
/interface wireless security-profiles
set [ find default=yes ] supplicant-identity=MikroTik
/ip ipsec profile
set [ find default=yes ] dh-group=modp2048 enc-algorithm=aes-256 hash-algorithm=sha256
/ip ipsec proposal
set [ find default=yes ] auth-algorithms=sha256 enc-algorithms=aes-256-cbc pfs-group=modp2048
/port
set 0 name=serial0
/ip address
add address=1.1.1.1/30 interface=ether1 network=1.1.1.0
add address=192.168.10.254/24 interface=ether3 network=192.168.10.0
add address=10.10.10.1/30 interface=CL1 network=10.10.10.0
/ip dhcp-client
add interface=ether1
/ip firewall nat
add action=masquerade chain=srcnat out-interface=ether1 src-address=192.168.10.0/24
/ip route
add disabled=no dst-address=0.0.0.0/0 gateway=1.1.1.2 routing-table=main suppress-hw-offload=no
add disabled=no dst-address=192.168.20.0/24 gateway=10.10.10.2 routing-table=main suppress-hw-offload=no
add disabled=no distance=1 dst-address=192.168.30.0/24 gateway=10.10.10.2 pref-src="" routing-table=main scope=30 suppress-hw-offload=no target-scope=10
/system identity
set name=R1
R2
/interface gre
add allow-fast-path=no local-address=3.3.3.1 name=CL2 remote-address=1.1.1.1
/interface wireless security-profiles
set [ find default=yes ] supplicant-identity=MikroTik
/ip ipsec profile
set [ find default=yes ] dh-group=modp2048 enc-algorithm=aes-256 hash-algorithm=sha256
/ip ipsec proposal
set [ find default=yes ] auth-algorithms=sha256 enc-algorithms=aes-256-cbc pfs-group=modp2048
/port
set 0 name=serial0
/ip address
add address=3.3.3.1/30 interface=ether1 network=3.3.3.0
add address=192.168.20.254/24 interface=ether2 network=192.168.20.0
add address=192.168.30.254/24 interface=ether3 network=192.168.30.0
add address=10.10.10.2/30 interface=CL2 network=10.10.10.0
/ip dhcp-client
add interface=ether1
/ip firewall nat
add action=masquerade chain=srcnat out-interface=ether1 src-address=192.168.20.0/24
add action=masquerade chain=srcnat out-interface=ether1 src-address=192.168.30.0/24
/ip route
add disabled=no dst-address=0.0.0.0/0 gateway=3.3.3.2 routing-table=main suppress-hw-offload=no
add disabled=no dst-address=192.168.10.0/24 gateway=10.10.10.1 routing-table=main suppress-hw-offload=no
/system identity
set name=R2