Homelab #12 Link-local IPv6、WireGuard、そしてちょっと苦笑
HOMELAB

Homelab #12 Link-local IPv6、WireGuard、そしてちょっと苦笑

Thất Nghiệp Thất Nghiệp
Oct 16, 2025 1 min read 0 views
ブログに戻る

WireGuardのVPNをONにするとLANにアクセスできない問題、ずっと自分の悩みでした。いろんな解決策を試した。ひとつはCloudflaredを使ってVPSからトラフィックをForwardする方法。けど自分はそのマシンの隣に座ってるのに、わざわざInternetトラフィックを地球半周させて戻すっていう。隣にいるのに。仕方ないとはいえね。

今日の昼、wg-easyで血反吐を吐きながら作業してた。新しいものを学ばないといけないし、5つのPublic IP(実際は4つ)用にDockerを5個連続で作って、プロバイダにチケット投げて確認してもらって…wg-easyをDockerで構成してPort Forwardするのは本当に地獄。マジで理解したくない。

ポイントは、WireGuardをONにした状態でRDCManでMaster-1をクリックしたら繋がったってこと。普通はForwardしたIPが必要なはずなのに?って思って

ping Master-1

を打ったら、変なIPv6が出てきた。

ping Master-1
を打ったら、変なIPv6が出てきた

調べたら Link-local IPv6 だった。

Link-local IPv6とは?

Link-local IPv6はfe80::/10の範囲で、すべてのネットワークインターフェースに自動で割り当てられ、Layer 2で動作する。常に存在していて、手動設定やDHCPも不要で、同一ネットワーク内の基本通信に使われる。

なぜLink-local IPv6はWireGuardを通過できるのか?

Link-localはLayer 2で動作し、Internetに出る必要がない。一方WireGuardはLayer 3で動作するから。

調べている途中のトラブル

Windows間でLink-localを使う場合はFirewallの設定が必須。問題は、Master-1だけICMPv6 pingとRDPができるのに、Master-2や他のマシンはWireGuardがONだと死ぬこと。

それで思った。Link-localが通るなら前例がある。じゃあIPv4のLocal rangeはなんで飲み込まれる?

解決は単純。WireGuardのこのボタンを押すだけ

Block untunnel traffic (kill-switch)

これをオンにしない。するとAllowedIPsは0.0.0.0/0じゃなくて0.0.0.0/1と128.0.0.0/1になる。以前はこの2つはほぼ同じだと思って気にしてなかったし、untickも一回やったけど当時はローカルに繋がらなくて放置してた。今思うと、もしこれ知ってたらDockerでFORWARDルール作ったり、変な解決策に時間使わなかったのに。K8SにScaleしようとかまで考えてたけど、実際はチェック外すだけ。人生って面白い。

20250827_164050.jpg

自分だけじゃなかった。Redditの人も同じ問題で、解決策は半分のInternetを選んだ後に大量のIP rangesを指定することだった。0.0.0.0/1に加えて色々。彼も0.0.0.0/0にするとLANアクセスできなくなるって言ってた。下の解決策も同じ。ほんと笑うしかない。TailscaleのMesh問題も解決したし、もう笑うしかない。

でも振り返ると、もし当時簡単に解決できてたらこの記事は無かったし、DockerスキルもProxmoxもなかったかも。だから前向きに。

この記事をシェア

Twitter LinkedIn
Thất Nghiệp

Thất Nghiệp が執筆

A developer sharing thoughts on clean code, creative freedom, and the pursuit of the perfect dev environment. Building digital sanctuaries one component at a time.

Comments

Join the conversation

Leave a comment

Won't be published

おすすめ記事