Wireguardのクライアントを起動させるとローカルから見つからなくなる時の対処法 with Nextcloud
2 min read
こんにちは、無能です。
Wireguardは便利で有り難いのですが、いかんせんローカル間の通信ができなくなることが辛かったことがありました。
特に、今だとDLNA/UPnPサーバー等構築しようとしておりローカル間が使えないのはかなり痛いです。
という事で解決させてみます。
netstat -nr でwg-quickでWireguardの起動と停止後のルーティングを確認する。
wg-quick up wg0
netstat -nr
受信先サイト ゲートウェイ ネットマスク フラグ MSS Window irtt インタフェース
0.0.0.0 192.168.10.1 0.0.0.0 UG 0 0 0 eth0
999.999.0.0 0.0.0.0 255.255.0.0 U 0 0 0 wg0
192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 wg0
192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
おや。※一応隠さないといけなさそうなとこは隠します。
wg-quick down wg0
netstat -nr
受信先サイト ゲートウェイ ネットマスク フラグ MSS Window irtt インタフェース
0.0.0.0 192.168.10.1 0.0.0.0 UG 0 0 0 eth0
192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
これだとおそらくwg0とeth0が競合、というかWireguardが起動してルーティングを上書きしています。
最高のセキュリティを求めるならばこれでいいのですが自宅ルータのポートマッピングしなくてもWireguardさえ繋がっていれば動くのでローカルのセキュリティはある程度守られるはず。なのでWireguardのIPを変更します。
サーバー側
sudo vi /etc/wireguard/wg0.conf
[Interface]
Address = 10.1.0.1/24
PrivateKey = xxx
ListenPort = 51820
[Peer]
PublicKey = xxx
PreSharedKey = xxx
AllowedIPs = 10.1.0.2/32
PersistentKeepalive = 25
クライアント
sudo vi /etc/wireguard/wg0.conf
[Interface]
PrivateKey = xxx
Address = 10.1.0.2/24
DNS = 8.8.8.8
[Peer]
PublicKey = xxx
PreSharedKey = xxx
Endpoint = xxx:51820
AllowedIPs = 10.1.0.0/24
PersistentKeepalive = 25
双方に以下を入力し再起動
sudo wg-quick down wg0 && sudo wg-quick up wg0
サーバー側
受信先サイト ゲートウェイ ネットマスク フラグ MSS Window irtt インタフェース
0.0.0.0 192.168.10.1 0.0.0.0 UG 0 0 0 eth0
999.999.0.0 0.0.0.0 255.255.0.0 U 0 0 0 wg0
10.1.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wg0
192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
完璧ですね。
これで無事にローカルマシンのIPにアクセスできました。
という訳で、完全自炊化したYoutubeの動画が音楽もローカル間でスムーズに見れるようになりました。
おまけに音楽もさっくさくです。
自宅からアップロードするのに、VPSを介してVPN上で動画等アップロードするのは帯域がもったいないですし何よりも時間が掛かり過ぎます。
これで5GB程度の動画も2分しないでアップできるようになりましたので、かなりありがたい。
それではまた。
よろしくお願い致します。