EdgeRouter與MikroTik之間的Site-To-Site VPN (IPSec)設定
近兩年在家裡佈建了許多小米攝影機,同時用一台舊PC安裝Ubuntu Server,運行SAMBA服務來充當NAS,供攝影機將記憶卡裡的影片上傳。而我在另一個比較少住的住處也同樣安裝了小米攝影機,因為人沒有每天住,為了用電安全,所以不想搬台PC過去24×7運行。左思右想,同時做了一些功課,覺得在兩地之間建立Site-To-Site VPN連線應該是比較好的做法,無奈其中一地使用市售分享器ASUS RT-AC1200G PLUS,對Site-To-Site VPN支援度不足,這個想法便一直擱置。
直到最近,因中華電信升速至300M的緣故,購入了Ubiquiti EdgeRouter-X和MikroTik RB750Gr3這兩台設備後,因為支援的網路功能較市售路由器來得豐富且靈活,便抽了個空做實驗,順便當做MikroTik RouterOS設定練習。
架構圖
下圖是目前成功建起來的Site-To-Site VPN架構,兩地網路架構如下。
左地(Ubiquiti EdgeRouter-X)
- WAN: 中華電信PPPoE(浮動制)
- LAN: 192.168.100.1/24
- DDNS: home1.myddns(示範用,非真實域名)
右地(MikroTik RB750Gr3)
- WAN: 中華電信PPPoE(浮動制)
- LAN: 172.16.100.1/24
- DDNS: home2.myddns(示範用,非真實域名)
目標
- 左地設備連到172.16.100.0/24網段時,透過IPSec Tunnel連至右地;其餘上網功能直接上Internet
- 右地設備連到192.168.100.0/24網段時,透過IPSec Tunnel連至左地;其餘上網功能直接上Internet
左地設定(Ubiquiti EdgeRouter-X)
原則上直接參考官方文件:https://help.ui.com/hc/en-us/articles/115011373628-EdgeRouter-Dynamic-Site-to-Site-IPsec-VPN-using-FQDNs 的ER-L設定。這邊非常簡單,直接照著文件操作即可,只差在網段要照自己實際網路設定來填寫,IPSec協議的Pre-shared secret、加密、DH Group則依自己喜好設定(或照著文件設定亦可)。
設定步驟
- 開啟EdgeRouter Web UI(https://192.168.100.1)
- 進入VPN 頁面、IPSec Site-to-Site頁籤
- 點擊+Add Peer,勾選Show advanced options,勾選Automatically open firewall and exclude from NAT,並填入以下資料:
- Peer: home2.myddns(填入右地FQDN或IP)
- Description: To-MikroTik
- Local IP: 0.0.0.0
- Encryption: AES-128
- Hash: SHA1
- DH Group: 14
- Pre-shared Secret: ilovevpn@9527(填入夠安全的密鑰)
- Local subnet: 192.168.100.0/24(左地網段)
- Remote subnet: 172.16.100.0/24(右地網段)
- 點Apply套用設定
接下來可以繼續右地(MikroTik)設定。
右地設定(MikroTik BR750Gr3)
右地的設定一樣可以參照MikroTik官方文件:https://mikrotrik.com/ipsec-site-to-site-vpn-configuration/ 的Site A設定。MikroTik在功能設計上拆分的比較細,所以相對比EdgeRouter來得複雜,但一樣照著文件做即可。
設定步驟
- 建立Profile
- 在IP→IPSec頁面,Profile頁籤,點擊新增或修改既有的Default Profile,加密演算法至少要把左地設定值裡的勾起來,如:AES-128、modp2048(=DH Group 14),按OK
- 建立Proposals
- 在IP→IPSec頁面,Proposal頁籤,點擊新增或修改既有的Default Proposal,雜湊和加密演算法至少要把左地設定值裡的勾起來,如:sha1、aes-128 cbc,按OK
- 建立Peers
- 在IP→IPSec頁面,Peer頁籤,點擊新增,填寫以下資訊,按OK:
- Name: To-EdgeRouter
- Address: home1.myddns
- Port: 500 (預設值,不更動)
- 在IP→IPSec頁面,Peer頁籤,點擊新增,填寫以下資訊,按OK:
- 建立Identities
- 在IP→IPSec頁面,Identities頁籤,點擊新增,填寫以下資訊,按OK:
- Peer: 選擇剛剛建立的Peer(例:To-EdgeRouter)
- Secret: 填入左地的Pre-shared secret(例:ilovevpn@9527)
- 在IP→IPSec頁面,Identities頁籤,點擊新增,填寫以下資訊,按OK:
- 建立Policies
- 在IP→IPSec頁面,Policies頁籤,點擊新增,填寫以下資訊,按OK:
- Peer: 選擇剛剛建立的Peer(例:To-EdgeRouter)
- Tunnel: 打勾
- Src. Address: 172.16.100.0/24
- Dst. Address: 192.168.100.0/24
- 在IP→IPSec頁面,Policies頁籤,點擊新增,填寫以下資訊,按OK:
- 建立NAT規則
- 在IP→Firewall頁面,NAT頁籤,新增規則,按OK:
- Src. Address: 172.16.100.0/24
- Dst. Address: 192.168.100.0/24
- Action: Accept
- 在IP→Firewall頁面,NAT頁籤,新增規則,按OK:
測試
若在RouterOS的IPSec頁面,看到Peer已經是established狀態,原則上IPSec Tunnel就已經建立;EdgeRouter的Web UI看不出連線狀態,要在Terminal下指令show vpn ipsec sa
觀察。
若要用ping指令測試,由於EdgeRouter會阻擋WAN端的ICMP封包,所以建議找一台同網段下的其他機器當ping的標的;RouterOS預設出廠不會阻擋WAN端ICMP封包,則可以用來當標的,例如:ping 172.16.100.1。
左→右
測試Windows RDP遠端連線,操作順暢,檔案傳輸至少有5MB/s。
右→左
測試SSH/SFTP連線,操作順暢,檔案傳輸正常。
斷線與PPPoE重撥測試(WAN IP改變)
測試正常,但需要給予一點時間進行DDNS更新以及IPSec Tunnel重建。
參考資料
- EdgeRouter Dynamic Site-to-Site IPsec VPN using FQDNs – https://help.ui.com/hc/en-us/articles/115011373628-EdgeRouter-Dynamic-Site-to-Site-IPsec-VPN-using-FQDNs
- MikroTik RouterOS IPSec Site-to-Site VPN Configuration – https://mikrotrik.com/ipsec-site-to-site-vpn-configuration/
- DH Group – https://www.juniper.net/documentation/us/en/software/junos/vpn-ipsec/topics/ref/statement/security-edit-dh-group.html