同じゲストSSIDに二台のスマートフォンを置くと、互いに見えないのにどちらもインターネットには到達します。片方にVPNクライアントを追加すると、三メートル先のプリンターは見えないまま、別の大陸のサーバーはpingに応答します。トンネルに故障はありません。関与するのは二つの別個のアクセス判断であり、経路制御に関するのはそのうち一つだけです。アクセスポイントは無線クライアント同士が通信できるかを決め、VPNクライアントはどの宛先がトンネルから出るかを決めます。この二つを混同すると、何時間もの無駄な設定変更が生じます。

二つの関門は独立している

クライアント分離はスイッチングの判断です。アクセスポイントは接続済みのステーションからフレームを受け取り、宛先を見て、宛先が同じブリッジ上の別のステーションだと気づき、そのフレームを破棄します。ステーションのIPアドレスはこの判断に関係せず、VPNも同様です。

経路制御はクライアント側で行われる別の判断です。VPNのルートテーブルは、192.168.1.50宛てのパケットがトンネルに入るか、Wi-Fiインターフェースから出るかを決めます。Wi-Fiから出て、かつアクセスポイントがクライアントを分離していれば、そのパケットはアクセスポイントで失われます。トンネルに入れば、アクセスポイントは元の宛先を一切見ないため、何も分離できません。

一般的なアクセスポイントで分離が遮断するもの

ベンダーはこれをクライアント分離、AP分離、ステーション分離、あるいはそれを含意するゲストネットワークといった名前で提供します。OpenWrtではインターフェースごとのオプションが無線設定内のisolateで、無線のドキュメントに説明されているとおりです。ゲストSSIDは通常、独自のブリッジとファイアウォールゾーンを持ちます。結果として、クライアント間のユニキャストフレームはブリッジされず、両方の端末が満強度を示していても、隣の端末へのping、SMB接続、印刷ジョブは失敗します。

ディスカバリのプロトコルが最初に、最も目に見える形で影響を受けます。プリンターやメディア端末のmDNSはマルチキャストで224.0.0.251へ送られ、SSDPは239.255.255.250を使います。それらのフレームがブリッジを越えるかは、ベンダーとマルチキャストからユニキャストへの変換が有効かどうかによります。一覧から端末が消えていることは、既知のアドレスへの直接接続の失敗より弱い証拠です。

VPNが変えるもの、変えられないもの

フルトンネルは既定ルートを取るため、ローカルサブネットはクライアントがより具体的なルートを保持している場合にのみ到達できます。スプリットトンネルは逆で、設計上ローカルアクセスを維持します。どちらの設定も、分離するアクセスポイントに自分の二台のクライアント間でフレームを転送させることはできません。だからこそ、VPNクライアントでローカル通信を許可することは必要ですが十分ではありません。

逆のケースも同じくらいよくあります。アクセスポイントは端末間通信を許可し、VPNクライアントはローカルサブネットをトンネルから除外し、それでもプリンターが応答しないのは、ホストのファイアウォールがWi-Fiネットワークをパブリックとして扱うからです。三つの層、三つの異なる既定値があり、ほとんどのVPNログには経路だけが表示されます。

どちらの関門が閉じているかを見極める

VPNを画面から外すテストとして、二台の普通の端末を同じSSIDに接続し、アドレスで一方から他方へ到達してみてください。失敗すればアクセスポイントが分離しており、VPNの設定では直りません。成功すればクライアントに移り、Linuxではip route get 192.168.1.50、WindowsではFind-NetRoute -RemoteIPAddress 192.168.1.50を実行します。出力はパケットが使うインターフェースを示します。

経路がWi-Fiインターフェースを指すとき、パケットは暗号化されずに出て行き、問題はアクセスポイントとホストのファイアウォールがそれを許すかどうかになります。経路がトンネルを指すとき、宛先はVPNサーバーへ送られており、同じLAN上の端末には誤りで、通常はトンネルの許可リストが広すぎることを意味します。

プリンターのポートへの直接接続は、ディスカバリの一覧より良いテストです。Linuxではnc -vz 192.168.1.50 9100、PowerShellではTest-NetConnection 192.168.1.50 -Port 9100が、アプリケーション層のペアリングの話に入る前に、そのアドレスに到達できるかどうかを教えてくれます。

自分がいるネットワークに合った対処を選ぶ

ホテルやゲストのネットワークでは、分離は意図的であり、突破しようとすべきではありません。ローカル端末は到達不能として扱い、印刷や共有ができるホストへはVPNで到達し、SSIDをLANとして扱うのをやめてください。

自宅では、端末が自分のものであればメインSSIDの分離を無効にしてよく、ゲストSSIDは分離したままにします。設定はアクセスポイントの無線設定にあり、各クライアントのファイアウォール例外ではなくそこに属します。

オフィスでは、アクセスポイント、VLAN、ホストのファイアウォールがすべて意図的だと想定してください。分離を切るよう求めるのではなく、テスト結果を持ってエスカレーションします。クライアントを分けるネットワークは通常、何かを守っているからです。

アプリケーションを検証し、pingだけで判断しない

pingの成功は経路を証明しますが、サービスは証明しません。プリンターは生の9100や631番のIPPを受け付けるのにディスカバリを拒むことが多く、ファイル共有には445に加えて名前解決が必要です。アプリケーションが使うポートを確認し、そのうえで端末上の実際の作業を再度試してください。

メモでは二つの層を分けておきます。Wi-Fiネットワークが許すものと、VPNが経路制御するものです。次に端末が一覧から消えたとき、この分離が最初に見る場所を教えてくれます。

関連記事