MikrotikルーターのWireGuardネットワークへの接続

WireGuardは最新の高速VPNで、正式に検証されており、WireGuardプロトコルが安全であることの数学的証明が存在することを意味しています。このガイドでは、MikrotikルーターをWireGuardネットワークに接続する方法を見ていきますが、サーバーとしてではなく、ピア(angl. peer)として接続します。

Mikrotikは強力で手頃な価格のネットワーク機器のブランドで、特別なオペレーティングシステムであるRouterOSが実行されています。Mikrotikネットワーク機器は、家庭用ネットワーク(ホームルーター、WiFiアクセスポイントなど)にも、小規模から大規模な企業ネットワークにも利用でき、インターネットアクセスプロバイダーが使用する非常に強力な製品も用意されています。

しかし、まず質問です。なぜMikrotikルーターをWireGuard(VPN)ネットワークにピアとして接続したいのでしょうか?1つの使用例は、その管理インターフェースにリモートアクセスしたい場合です。これはパブリックIPアドレスを介して行うこともできますが、問題はそのIPアドレスが固定されていない場合(まあ、それは解決可能ですが)、特にルーターが「NATの背後に隠れており」、インターネットから直接アクセスできない場合です。解決策は簡単です。ルーターを設定して自動的にVPNサーバーに接続し、その後VPNアドレスを介してアクセスすることができます。

Mikrotikにはウェブインターフェース、Winboxアプリケーション、またはSSH接続を介して接続できます。しかし、まず準備が必要です。

MikrotikデバイスでWireGuardを使用したい場合は、RouterOS v7以降がインストールされている必要があります。MikrotikをWireGuardネットワークに接続するには、WireGuardサーバーが必要です。すでにセットアップされていると仮定します。そこから必要なもの:

  • 外部IPアドレスとピア(vrstniki)が接続するポート;
  • その公開鍵;
  • Mikrotikクライアントの事前共有鍵(PSK)(WireGuardサーバーで作成);
  • Mikrotikに割り当てるVPN IPアドレスも考慮します。

では、Mikrotikに戻ります。ウェブインターフェースまたはWinboxでコンソールを開き(SSH経由で接続する場合は自動的に開きます)、まずwireguard1という名前の新しいネットワークインターフェースを作成します。これは何らかのポートをリッスンしています(使用されていないポートなら何でも設定できます。この例では51821):

/interface/wireguard/add listen-port=51821 name=wireguard1

WireGuardネットワークインターフェースのリストを表示したい場合は、コマンドを入力します:

/interface/wireguard/print

Mikrotikピアの秘密鍵と公開鍵も表示する出力が得られます:

Flags: X - disabled; R - running 
 0  R name="wireguard1" mtu=1420 listen-port=51820 private-key="zasebni-kljuc-Mikrotik-vrstnika" public-key="javni-kljuc-Mikrotik-vrstnika"

注:wireguard1という名前のWireGuardインターフェースを削除したい場合は、次のコマンドで実行します:
/interface/wireguard/remove wireguard1

次に、WireGuardサーバーへの接続を追加します:

/interface/wireguard/peers add allowed-address=10.10.7.0/24 endpoint-address=xx.xx.xx.xx endpoint-port=51194 interface=wireguard1 persistent-keepalive=5s public-key="javni-kljuc-wg-streznika" preshared-key="PSK-kljuc-Mikrotik-vrstnika

説明:

  • allowed-address:ここにWireGuardサブネット(WireGuardサーバーから)を入力します。この例では10.10.7.0/24です;
  • endpoint-address:WireGuardサーバーのパブリックIPアドレス;
  • endpoint-port:WireGuardピアが接続するポート(デフォルトは51194);
  • interface:設定が適用されるWireGuardインターフェース(この例ではwireguard1);
  • persistent-keepalive:クライアントがサーバーとのアクティブな接続を維持し、5秒ごと(5s)にサーバーにpingを送信するように指定します;
  • public-key:WireGuardサーバーの公開鍵;
  • preshared-key:Mikrotikピアの事前共有鍵(PSK)。

ピアのリストも表示できます(この例では、もちろん1つだけです):

/interface/wireguard/peers print
Columns: INTERFACE, PUBLIC-KEY, ENDPOINT-ADDRESS, ENDPOINT-PORT, ALLOWED-ADDRESS, PRESHARED-KEY, PERSISTENT-KEEPALIVE      
# INTERFACE   PUBLIC-KEY                                    ENDPOINT-ADDRESS  ENDPOINT-PORT  ALLOWED-ADDRESS  PRESHARED-KEY                                 PE
0 wireguard1  javni-kljuc-Mikrotik-vrstnika                 xx.xx.xx.xx               51194  10.10.7.0/24     PSK-kljuc-Mikrotik-vrstnika                   5s

短い注:このエントリ(最初に示される連続番号0で示されます)を削除したい場合は、次のコマンドを使用します:/interface/wireguard/peers> /interface/wireguard/peers/remove numbers=0

次に、WireGuard サーバーで、設定ファイルwg0.confに次の情報を追加する必要があります:

  • WireGuardサーバーの公開鍵
  • Mikrotikピアの事前共有鍵(PSK)
  • MikrotikピアのIPアドレス(この例では10.10.7.155を使用)

例(設定ファイル/etc/wireguard/wg0.conf):

[Peer]
# MojMikrotik
PublicKey = javni-kljuc-Mikrotik-vrstnika
PresharedKey = PSK-kljuc-Mikrotik-vrstnika
AllowedIPs = 10.10.7.155/32

この時点で、WireGuardサーバーで設定をリロードします:

systemctl reload [email protected]

Mikrotikに戻ります。次に、サーバーで指定したIPアドレスをMikrotikのWireGuardネットワークインターフェースに追加する必要があります:

/ip address add address=10.10.7.155/32 interface=wireguard1

その後、ネットワークルート(angl route):

/ip route add dst-address=10.10.7.0/24 gateway=wireguard1

これでMikrotikはWireGuardネットワークに接続されています。しかし、WireGuardネットワークからMikrotikへの接続は機能していないことに気付くでしょう。ファイアウォールがそれをブロックしているためです。したがって、MikrotikがWireGuardネットワークからの接続を許可するルールを追加する必要があります:

/ip firewall filter add action=accept chain=input comment="Access from Wireguard network" in-interface=wireguard1 src-address=10.10.7.0/24

しかし、接続は機能しない可能性があります。新しいルールは自動的にルールリストの最後に追加されるためです。ルールを少し上に移動する必要があります。具体的には、LANネットワークからではないすべてのパケットを削除するルールの直前に移動します。まずルールのリストを表示します:

/ip firewall filter print

その後、このルールを上の位置に移動します:

/ip firewall filter move N destination=D

説明:

  • Nはルールの現在の連続番号
  • Dはこのルールを移動する位置

現在のルールの例。外部からのすべての接続をブロック(WireGuardネットワークを除く)し、LANネットワーク内の接続と外部への接続を許可します:

/ip firewall filter print

ルールリストの出力:

Flags: X - disabled, I - invalid; D - dynamic 
 0  D ;;; special dummy rule to show fasttrack counters
      chain=forward action=passthrough 
 1    ;;; defconf: accept established,related,untracked
      chain=input action=accept connection-state=established,related,untracked 
 2    ;;; defconf: drop invalid
      chain=input action=drop connection-state=invalid 
 3    ;;; defconf: accept ICMP
      chain=input action=accept protocol=icmp 
 4    ;;; defconf: accept to local loopback (for CAPsMAN)
      chain=input action=accept dst-address=127.0.0.1 
 5    ;;; Block new connections from outside
      chain=input action=drop connection-state=new in-interface-list=WAN 
 6    ;;; Access from Wireguard network
      chain=input action=accept src-address=10.10.7.0/24 in-interface=wireguard1 
 7    ;;; defconf: drop all not coming from LAN
      chain=input action=drop in-interface-list=!LAN 
 8    ;;; defconf: accept in ipsec policy
      chain=forward action=accept ipsec-policy=in,ipsec 
 9    ;;; defconf: accept out ipsec policy
      chain=forward action=accept ipsec-policy=out,ipsec 
10    ;;; defconf: fasttrack
      chain=forward action=fasttrack-connection hw-offload=yes connection-state=established,related 
11    ;;; defconf: accept established,related, untracked
      chain=forward action=accept connection-state=established,related,untracked 
12    ;;; defconf: drop invalid
      chain=forward action=drop connection-state=invalid 
13    ;;; defconf: drop all from WAN not DSTNATed
      chain=forward action=drop connection-state=new connection-nat-state=!dstnat in-interface-list=WAN 

これでMikrotikはWireGuardネットワークに接続されました。IPアドレス10.10.7.155を介してアクセスできます。

いずれにせよ、外部サーバーとWireGuardネットワークからファイアウォールが機能しているかどうか確認する価値があります。まず、WireGuardネットワークからMikrotikの開いているポートを確認します:nmap 10.10.7.155。出力:

Starting Nmap 7.93 ( https://nmap.org ) at 2024-08-20 13:33 UTC
Nmap scan report for 10.10.7.155
Host is up (0.057s latency).
Not shown: 993 closed tcp ports (reset)
PORT     STATE SERVICE
21/tcp   open  ftp
22/tcp   open  ssh
23/tcp   open  telnet
53/tcp   open  domain
80/tcp   open  http
2000/tcp open  cisco-sccp
8291/tcp open  unknown
Nmap done: 1 IP address (1 host up) scanned in 1.15 seconds

その後、Mikrotikの外部IPアドレスを使用して(nmap xx.xx.xx.xx):

Starting Nmap 7.93 ( https://nmap.org ) at 2024-08-20 13:33 UTC
Nmap scan report for xx.xx.xx.xx
Host is up (0.052s latency).
All 1000 scanned ports on xx.xx.xx.xx are in ignored states.
Not shown: 1000 filtered tcp ports (no-response)
Nmap done: 1 IP address (1 host up) scanned in 53.08 seconds

nmap出力から明らかなように、MikrotikのパブリックIPアドレスからはMikrotikの管理インターフェースおよび他のインターフェースはアクセスできませんが、WireGuardネットワークからはすべてにアクセスできます。

説明されたプロセスにより、Mikrotikデバイスを起動時に自動的にVPNネットワークに接続し、VPNネットワークからいつでもアクセス可能にするように設定しました。

翻訳元: https://telefoncek.si/2024/08/2024-08-21-povezava-mikrotik-usmerjevalnika-v-wireguard-omrezje/

ソース: telefoncek.si