VPN Site to Site Mikrotik

สวัสดีครับ
วันนี้ผมจะมาเขียนเรื่อง VPN Site to Site ซึ่งน่าจะเหมาะกับสถานะการโควิดซึ่งหลายๆคนทำงานอยู่บ้านกัน
หลักๆ ที่ MAIN Office จะต้องมีอุปกรณ์ที่สามารถทำ VPN ได้
ในที่นี้ผมจะใช้เป็น RB4011iGS+5HacQ2HnD-IN ครับ
ส่วน Site รองสามารถใช้เป็น Mikrotik ตัวเล็กๆได้ เช่น hAP mini ในกรณีที่ไม่ได้ใช้ throughput มาก
แต่ในที่นี้ผมจะใช้เป็น hAP ac² 

ข้อดีของ RB4011iGS+RM คือ ตัว Hardware ของมันสามารถถอดรหัสได้ทุกประเภท
ซึ่งคุณสมบัตินี้อยู่ในตัว CPU ที่เป็น ARM เช่น RB4011 Series, RB1100AHx4 ทั้งสองรุ่น และ CCR2004-1G-12S+2XS

รายละเอียดตามนี้ครับ

https://wiki.mikrotik.com/wiki/Manual:IP/IPsec

Diagram เพื่อให้ง่ายผมเซตให้ IP ทั้งสองฝั่งเป็น 10.0.0.1/24 และ 10.0.1.1/24 ตามรูป

 

เพื่อให้เข้าใจง่าย ผมได้ทดสอบผ่าน Lab แล้ว  export ออกมาเป็น Script ครับ (อันไหนไม่เกี่ยวข้องตัดออก )
ในที่นี้ WAN เป็น PPPoE 
ตัวแรก RB4011iGS+5HacQ2HnD-IN
ก่อนทำควรอัพ ROS และ current Firmware เป็นล่าสุด
เปลี่ยน user/password Mikrotik และ ปิด service ที่ไม่จำเป็นออกด้วยครับ

Script ตามนี้ครับ สำหรับ RB4011

/interface bridge
add name=bridge1
/interface wireless
set [ find default-name=wlan1 ] band=5ghz-n/ac channel-width=20/40/80/160mhz-XXXXXXXX disabled=no frequency=auto mode=ap-bridge ssid=MAIN-HQ_15 station-roaming=enabled
set [ find default-name=wlan2 ] band=2ghz-g/n disabled=no frequency=auto mode=ap-bridge ssid=MAIN-HQ_12 station-roaming=enabled

/interface pppoe-client
add add-default-route=yes disabled=no interface=ether1 name=pppoe-out1 password=ppp1 use-peer-dns=yes user=ppp1

/interface wireless security-profiles
set [ find default=yes ] authentication-types=wpa2-psk eap-methods="" mode=dynamic-keys supplicant-identity=MikroTik wpa2-pre-shared-key=NeXTGENiT
/ip pool
add name=pool0 ranges=10.0.0.2-10.0.0.254
/ip dhcp-server
add address-pool=pool0 disabled=no interface=bridge1 lease-time=1h name=dhcp0

/interface bridge port
add bridge=bridge1 interface=ether5
add bridge=bridge1 interface=ether4
add bridge=bridge1 interface=ether3
add bridge=bridge1 interface=ether2
add bridge=bridge1 interface=ether6
add bridge=bridge1 interface=ether7
add bridge=bridge1 interface=ether8
add bridge=bridge1 interface=ether9
add bridge=bridge1 interface=ether10
add bridge=bridge1 interface=wlan1
add bridge=bridge1 interface=wlan2

/interface l2tp-server server
set enabled=yes
/ip address
add address=10.0.0.1/24 interface=bridge1 network=10.0.0.0
/ip dhcp-server network
add address=10.0.0.0/24 gateway=10.0.0.1
/ip firewall nat
add action=masquerade chain=srcnat src-address=10.0.0.0/24

/ip route
add distance=1 dst-address=10.0.1.0/24 gateway=172.16.0.2
/ppp secret
add local-address=172.16.0.1 name=vpn password=vpn remote-address=172.16.0.2 service=l2tp
/system identity
set name=MAIN-HQ

เนื้อหาสำคัญของ VPN อยู่ที่ เปิดใช้ l2tp-server ,ip route และ ppp secret ครับ

/interface l2tp-server server
set enabled=yes


/ip route
add distance=1 dst-address=10.0.1.0/24 gateway=172.16.0.2
อาจจะงงว่า 172.16.0.2 มาจากไหน

/ppp secret
add local-address=172.16.0.1 name=vpn password=vpn remote-address=172.16.0.2 service=l2tp
ตรงนี้ครับ

มาดูที่ตัว hAP ac² บ้าง

/interface bridge
add name=bridge1
/interface pppoe-client
add add-default-route=yes disabled=no interface=ether1 name=pppoe-out1 password=ppp2 use-peer-dns=yes user=ppp2

/interface l2tp-client
add connect-to=171.96.20.200 disabled=no name=l2tp-out1 password=vpn user=vpn

/interface wireless
set [ find default-name=wlan1 ] band=2ghz-g/n disabled=no mode=ap-bridge ssid=SITE-2-2
set [ find default-name=wlan2 ] disabled=no mode=ap-bridge ssid=SITE-2-5

/ip pool
add name=pool-1 ranges=10.0.1.2-10.0.1.254

/ip dhcp-server
add address-pool=pool1 disabled=no interface=bridge1 lease-time=1h name=dhcp1

/interface bridge port
add bridge=bridge1 interface=wlan1
add bridge=bridge1 interface=wlan2
add bridge=bridge1 interface=ether5
add bridge=bridge1 interface=ether4
add bridge=bridge1 interface=ether3
add bridge=bridge1 interface=ether2

/ip address
add address=10.0.1.1/24 interface=bridge1 network=10.0.1.0

/ip dhcp-server network
add address=10.0.1.0/24 gateway=10.0.1.1

/ip firewall nat
add action=masquerade chain=srcnat src-address=10.0.1.0/24

/ip route
add distance=1 dst-address=10.0.0.0/24 gateway=172.16.0.1

/system identity
set name=SITE_1

 

อันนี้ตรง Connect To: หากใช้ Cloud Mikrotik หรือ ddns สามารถใส่แทนได้เลยครับ
ของผมใน Lab จะใช้เป็น IP จริง
/interface l2tp-client

add connect-to=171.96.20.200 disabled=no name=l2tp-out1 password=vpn user=vpn

 /ip route
add distance=1 dst-address=10.0.0.0/24 gateway=172.16.0.1

เมื่อดูตามสคริปท์จะเห็นว่าตัว MAIN-HQ เซตแค่ 3 อย่างคือ
1.เปิด L2TP Server
/interface l2tp-server server
set enabled=yes

2.สร้าง Route IP ของ Site1 มา Remote Address ของ MIAN-HQ
/ip route
add distance=1 dst-address=10.0.1.0/24 gateway=172.16.0.2

3.กำหนด ppp secret
/ppp secret
add local-address=172.16.0.1 name=vpn password=vpn remote-address=172.16.0.2 service=l2tp


ส่วน Site1
1.สร้าง l2tp-client
/interface l2tp-client
add connect-to=171.96.20.200 disabled=no name=l2tp-out1 password=vpn user=vpn

2.สร้าง Route IP dts(วงแลนของ MAIN-HQ) ไปที่ Gateway ของ MAIN-HQ (ตรงนี้สังเกตุว่า ถ้ามีหลายๆตัว จะสังเกตุว่าสคริปท์มันเหมือนกัน)
/ip route
add distance=1 dst-address=10.0.0.0/24 gateway=172.16.0.1

 

แต่ถ้าไม่ได้มีแค่ Site1 ที่เดียวล่ะทำยังไง
มี 2 ไปถึง 10 ล่ะครับ
ที่ MAIN-HQ เพิ่มตามข้อ 2 และ 3 อีก
สมมุติให้ Site2 IP LAN=10.0.2.0/24 และ Local Address =172.16.0.3
/ip route
add distance=1 dst-address=10.0.2.0/24 gateway=172.16.0.3
/ppp secret
add local-address=172.16.0.1 name=vpn2 password=vpn2 remote-address=172.16.0.3 service=l2tp

Site2
l2tp-client ไป ip หรือ cloud เดิมครับ เปลี่ยนแค่ user/password ส่วน Route มันก็เหมือนเดิมครับ
/interface l2tp-client
add connect-to=171.96.20.200 disabled=no name=l2tp-out1 password=vpn2 user=vpn2
/ip route
add distance=1 dst-address=10.0.0.0/24 gateway=172.16.0.1

ผมใช้วิธีดูใน word ทำไฮไลท์สีไว้ เทียบความแตกต่างครับ

มาถึงตรงนี้ใครว่าฝังหรือ Network Diagram ไม่สำคัญ
ผมว่ามันควรทำเป็นอันดับแรกเลยครับ


MAIN-HQ=10.0.0.1/24 (172.16.0.1)
Site1=10.0.1.1/24 (172.16.0.2)
Site2=10.0.2.1/24 (172.16.0.3)
...
Site10=10.0.10.1/24 (172.16.0.11)

แล้วถ้าต้องการให้ Site1 กับ 2 ติดต่อกันได้ด้วย หรือทุกๆ Site สามารถ ping เจอกัน
ก็ทำให้แต่ล่ะ Site เป็น l2tp-server ด้วย
ยากไหม ผมว่าไม่ยากครับ ถ้าเข้าใจทำ Site2 เพิ่มได้แล้ว
ทีนี้ตัว mikrotik ใน Site2 หรือ 10 อาจต้องขยับใช้รุ่นเดียวกันหรือใกล้เคียงครับ เพราะถ้ามันต้องถ่ายโอน throughput ขนาดใหญ่ๆหรือเยอะๆแล้ว มันไม่พอแน่ๆ
Network Diagram ไม่มีหรือทำไว้ไม่ดี ต้องไล่กันนานเลยแหละครับ

*ปัญหา ยกตัวอย่าง
หน้างาน IP Local ทั้งสองฝั่งเป็น 192.168.1.1/24 ทั้งสองเลย
สมมุติว่า IP Server ที่อยู่ MAIN-HQ เป็น 192.168.1.254
ฝั่ง Site1 IP 192.168.1.200 จะเรียกใช้งาน Server ที่อยู่ฝั่ง MAIN-HQ จะได้ไหม
ปัญหานี้ คือ ไม่ได้วาง Diagram ไว้ แนวทางแก้มันก็มีคือ ใช้ subnet เข้ามาช่วย
แต่การแยกชุด IP ออกเป็นแต่ล่ะ Site จบปัญหาได้ดีกว่าครับ
เกิดสมมุติว่ามี 100 Site จะแก้ปัญหายังไง ลองพิจารณาดูครับ

สำหรับวันนี้สวัสดีครับ