WireGuardのAllowedIPsについて
はじめに
前回、WireGuardの構築について記事を書きました。
その際、 allowed-ips
の補足を書こうと思ったのですが、補足だけではまとめきれないなと思って、別の記事にまとめることにしました。
振り返り
WireGuard の設定を行う際、以下のようなコマンドを実行します。
$ wg set wg0 peer XX allowed-ips A.A.A.A/AA endpoint 対向のIPアドレス:ポート番号
設定ファイルとしては、以下のように記載されています。
[Interface]
# 省略
[Peer]
# 省略
AllowedIPs = 172.16.12.2/32,192.168.10.0/24
# 省略
上記でででくるallowed-ips(以後、統一のために「AllowedIPs」と記載します)
は何を意味しているのか?ということが今回のポイントです。
本題
AllowedIPs
の意味は、データを受信する時とデータを送信する時で若干意味が異なってくるので、分けて考えます。
1. データを「受信」する時
データを受信する場合、受信した側は、
パケット内の送信元のIPアドレスがAllowedIPs
に記載されているかどうか
を確認します。
記載されたIPアドレスからであればパケットを許可しますが、記載されていないIPアドレスからだった場合は、パケットを破棄します。
AllowedIPs = 172.16.12.2/32,192.168.10.0/24
上記のような記載の場合、172.16.12.2/32
と192.168.10.0/24
からの通信を許可します。
Peer先に複数のNW(VLAN)が存在して、WireGuard経由でアクセスしてくる場合は、その全てのNWアドレスを記載してあげる必要があります。
2. データを「送信」する時
データを送信する場合、AllowedIPs
に記載された送信先のパケットは、
WireGuardのNICにルーティング
されます。
例えば以下のような設定だった場合、クライアントが192.168.10.5
に対して接続を試みると、WireGuardのNICであるwg0
にルーティングされます。
AllowedIPs = 172.16.12.2/32,192.168.10.0/24
上記の理由については、実際のルーティングテーブルを確認すると分かります。
$ ip route
default via 192.168.1.1 dev eth0
169.254.169.254 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.244
$ ip route
default via 192.168.1.1 dev eth0
169.254.169.254 dev eth0
172.16.12.2 dev wg0 scope link # wg0へのルーティングが追加されている
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.244
192.168.10.0/24 dev wg0 scope link # wg0へのルーティングが追加されている
wg0のNICを起動させると、自動的にルーティングの設定が追加されていることがわかります。
おわりに
より詳しくWireGuardについて知りたい場合は、ホワイトペーパーも出ているのでそれを確認することをお勧めします。
※自分には難しくて全てを理解はできませんでした。
Discussion