تونل 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 را مشخص می کنیم و بقیه تنظیمات پیش فرض استفاده می شود :

mikrotik wireguard interface

۲.۱ اضافه کردن peer
حال peer ها را اضافه می کنیم و اطلاعات مربوط به آنها را وارد می کنیم :

۱. مشخص می کنیم که این peer مربوط به کدام اینترفیس است
۲. public key طرف مقابل را وارد می کنیم
۳. در بخش endpoint آدرس ip سمت public(شبکه عمومی) یا اینترنت را وارد می کنیم.
۴. در endpoint port شماره portی که طرف مقابل در آن گوش می کند را وارد می کنیم .
۵. allowed ip را هم 0.0.0.0/0 تعیین می کنیم تا اجازه عبور تمامی شبکه ها را داشته باشد .

تنظیمات برای peer MikroTik2 به شکل زیر خواهد بود:

mikrotik wireguard peer

به همین شکل اینتزفیس wireguard و peer بعدی را هم اضافه می کنیم :

mikrotik2 wireguard interface

تنظیمات برای peer soodar به شکل زیر خواهد بود:

mikrotik2 wireguard peer

۳.۱ فعال کردن ospf در تونل wireguard
برای راه اندازی ospf باید یک instance از ospf بسازیم :

MikroTik-1 ospf instance

یک area هم اضافه می کنیم :

MikroTik-1 ospf area

سپس اینترفیس هایی که باید در آن ospf فعال شود (اینترفیس wireguard) را در بخش interface template اضافه می کنیم :

MikroTik-1 ospf interface template

همچنین اینترفیس هایی که باید آدرس آنها توسط ospf توزیع (distribute) شود را هم اضافه می کنیم با این تفاوت که گزینه passive را در آن ها فعال می کنیم تا بسته های ospf در آن ارسال نشود و فقط آدرس آن توسط ospf تبلیغ شود :

MikroTik-1 ospf passive interface

۲.نحوه تنظیم 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 :

MikroTik-1 ospf neighbor

در MikroTik2 :

MikroTik-2 ospf neighbor

بررسی جدول 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 :

MikroTik-1 routing table

در MikroTik2 :
MikroTik-2 routing table