تونل wireguard بین سودار و میکروتیک
نحوه تنظیم تونل wireguard در میکروتیک و سودار
تنظیم تونل wireguard شامل دو بخش است . که ابتدا یک اینترفیس wireguard ساخته و تنظیماتی مثل listen port و کلیدی که برای تونل استفاده می شود را انجام می دهیم و سپس اطلاعات peer هایی که باید به آن ها وصل شویم را اضافه می کنیم که این اطلاعات شامل آدرس ip و شماره پورتی که طرف مقابل در آن گوش می کند و همچنین public key طرف مقابل می شود .
در ادامه تنظیمات را مطابق شکل فوق در Mikrotik-1 انجام می دهیم و دو تونل wireguard و دو peer (soodar و MikroTik-2) را در آن اضافه می کنیم . سپس در انتها نحوه تنظیم تونل wireguard در روتر سودار را شرح می دهیم .
فرض کنید سناریوی طبق شکل فوق داریم که در آن یک روتر سودار و دو روتر میکروتیک داریم که قرار است یک شبکه fullmesh از تونل های wireguard بین روتر ها داشته باشیم یعنی همه روتر ها به یکدیگر تونل داشته باشند :
۱.نحوه تنظیم تونل wireguard در میکروتیک
۱.۱ اضافه کردن اینترفیس wireguard
ابتدا یک اینترفیس wireguard اضافه می کنیم و در آن تنظیمات مربوطه را انجام می دهیم ما در اینجا فقط listen port را مشخص می کنیم و بقیه تنظیمات پیش فرض استفاده می شود :
۲.۱ اضافه کردن peer
حال peer ها را اضافه می کنیم و اطلاعات مربوط به آنها را وارد می کنیم :
۱. مشخص می کنیم که این peer مربوط به کدام اینترفیس است
۲. public key طرف مقابل را وارد می کنیم
۳. در بخش endpoint آدرس ip سمت public(شبکه عمومی) یا اینترنت را وارد می کنیم.
۴. در endpoint port شماره portی که طرف مقابل در آن گوش می کند را وارد می کنیم .
۵. allowed ip را هم 0.0.0.0/0 تعیین می کنیم تا اجازه عبور تمامی شبکه ها را داشته باشد .
تنظیمات برای peer MikroTik2 به شکل زیر خواهد بود:
به همین شکل اینتزفیس wireguard و peer بعدی را هم اضافه می کنیم :
تنظیمات برای peer soodar به شکل زیر خواهد بود:
۳.۱ فعال کردن ospf در تونل wireguard
برای راه اندازی ospf باید یک instance از ospf بسازیم :
یک area هم اضافه می کنیم :
سپس اینترفیس هایی که باید در آن ospf فعال شود (اینترفیس wireguard) را در بخش interface template اضافه می کنیم :
همچنین اینترفیس هایی که باید آدرس آنها توسط ospf توزیع (distribute) شود را هم اضافه می کنیم با این تفاوت که گزینه passive را در آن ها فعال می کنیم تا بسته های ospf در آن ارسال نشود و فقط آدرس آن توسط ospf تبلیغ شود :
۲.نحوه تنظیم wireguard در روتر سودار
در شکل زیر تنظیمات انجام شده برای روتر سودار را مشاهده می کنید که در آن یک اینترفیس wireguard10 اضافه شده است و سپس peer های مربوطه هم تنظیم شده اند :
ابتدا باید یک کلید برای تونل wireguard با دستور زیر در روتر بسازیم :
soodar(config)# crypto key generate x25519 label wgkey
سپس تنظیمات را با در نظر گرفتن توضیحات زیر انجام می دهیم :
۱. مقدار mtu باید 1420 تنظیم شود
۲. دقت شود wireguard mode در حالت routing انتخاب شود
۳. تونل source و همچنین کلید تونل را مشخص می کنیم
۴. portی که این ایترفیس در آن گوش می کند مشخص می کنیم که طبق سناریو 7070 تنظیم می شود
۵. در ادامه peer ها تعریف می کنیم و در هر یک public-key,endpoint و allowed-ip را مشخص می کنیم. چون در سودار allowed-ip در جدول routing اضافه میشوند در هر peer باید فقط تک ip طرف مقابل با prefix /32 به عنوان allowed-ip اضافه گردد .
۶. دقت شود که تنظیم ospf در اینترفیس وایرگارد به شکل point-to-multipoint انجام شود
۷. با دستور ip ospf area 0 ما ospf را در اینترفیس فعال می کنیم
۸. در نهایت هم یک ip به اینترفیس اختصاص می دهیم
interface wireguard10
ip mtu 1420
wireguard mode routing
wireguard source 192.168.111.35
wireguard private-key wgkey
wireguard port 7070
wireguard peer mikrotik
public-key 5A6317C813CAB1D6B1C1514D17AEBE3B3B73BFA6B0610C97EAB7D626B7A4117A
endpoint 192.168.111.31 port 13231
allowed-ip 10.0.0.22/32 # ip of wg tunnel in mikrotik
wireguard peer mikrotik2
public-key 9C786196656518AC0876ACB749C86FAD5A7CACF635E2B212D2A9B4434450BB3C
endpoint 192.168.111.32 port 13231
allowed-ip 10.0.0.33/32 # ip of wg tunnel in mikrotik2
no shutdown
ip address 10.0.0.1/32 # ip of local wg tunnel(wireguard10)
ip ospf network point-to-multipoint
ip ospf area 0
exit
!
interface ge0
no shutdown
ip address 192.168.111.35/24
exit
!
interface ge1
no shutdown
ip address 1.1.1.1/24
ip ospf area 0
ip ospf passive
exit
!
router ospf
exit
!
چون در سودار فرمت پیش فرض کلید ها hex می باشد در running-config فقط مقدار hex نمایش داده می شود . البته شما در نمایش کلید (<show crypto key <wgkey) و همچنین در نمایش وضعیت تونل های وایرگارد (show wireguard) می توانید فرمت base64 آن را هم مشاهده نمایید.
soodar# sh crypto key wgkey
Keypair Label: wgkey
Algorithm: X25519
Public key: 2E5DC6FF72BD25727B434E3689BBD57EF20652E1817E120543CFE92DF536C519
Public key base64: Ll3G/3K9JXJ7Q042ibvVfvIGUuGBfhIFQ8/pLfU2xRk=
soodar#
soodar# sh wireguard
Wireguard 10
Mode: Routing
Source: 192.168.111.35
Key: wgkey
Public key: 2E5DC6FF72BD25727B434E3689BBD57EF20652E1817E120543CFE92DF536C519
Public-key Base64: Ll3G/3K9JXJ7Q042ibvVfvIGUuGBfhIFQ8/pLfU2xRk=
Port: 7070
Peer mikrotik:
Public key: 5A6317C813CAB1D6B1C1514D17AEBE3B3B73BFA6B0610C97EAB7D626B7A4117A
Public-key Base64: WmMXyBPKsdaxwVFNF66+Oztzv6awYQyX6rfWJrekEXo=
Endpoint: 192.168.111.31
Current Endpoint: 192.168.111.31
Current Source: 192.168.111.35
Persistent keepalive: 10
Port: 13231
VRF: default
Connected: True
Allowed IPs:
- 10.0.0.22/32
Peer mikrotik2:
Public key: 9C786196656518AC0876ACB749C86FAD5A7CACF635E2B212D2A9B4434450BB3C
Public-key Base64: nHhhlmVlGKwIdqy3SchvrVp8rPY14rIS0qm0Q0RQuzw=
Endpoint: 192.168.111.32
Current Endpoint: 192.168.111.32
Current Source: 192.168.111.35
Persistent keepalive: 10
Port: 13231
VRF: default
Connected: True
Allowed IPs:
- 10.0.0.33/32
soodar#
Connected: True نشان می دهد که تونل به peer مربوطه وصل است. که در اینجا هر دو تونل به میکروتیک ها وصل هستند
بررسی ospf neighbor در soodar :
soodar# show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface RXmtL RqstL DBsmL
192.168.111.31 128 Full/DROther 33.639s 10.0.0.22 wireguard10:10.0.0.1 0 0 0
192.168.111.32 128 Full/DROther 35.943s 10.0.0.33 wireguard10:10.0.0.1 0 0 0
soodar#
در MikroTik1 :
در MikroTik2 :
بررسی جدول route در soodar :
soodar# sh ip fib
Codes: K - kernel route, C - connected, S - static, R - RIP,
O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
F - PBR, f - OpenFabric, W - WG,
> - selected route, * - FIB route, q - queued, r - rejected, b - backup
t - trapped, o - offload failure
C>* 1.1.1.0/24 is directly connected, ge1, 05:04:14
O>* 2.1.1.0/24 [110/11] via 10.0.0.22, wireguard10 onlink, weight 1, 03:09:00
O>* 3.1.1.0/24 [110/11] via 10.0.0.33, wireguard10 onlink, weight 1, 04:04:47
O>* 10.0.0.0/24 [110/11] via 10.0.0.22, wireguard10 onlink, weight 1, 03:09:00
* via 10.0.0.33, wireguard10 onlink, weight 1, 03:09:00
C>* 10.0.0.1/32 is directly connected, wireguard10, 04:34:55
W>* 10.0.0.22/32 [1/0] is directly connected, wireguard10, weight 1, 05:04:14
W>* 10.0.0.33/32 [1/0] is directly connected, wireguard10, weight 1, 05:04:14
C>* 192.168.30.0/24 is directly connected, ge0, 05:04:14fnrj
C>* 192.168.111.0/24 is directly connected, ge0, 05:04:14
soodar#
در MikroTik1 :
در MikroTik2 :