Windows 10マシンでVPN-server(この場合はOpenVPNプロトコルを使用)に接続した後、一部のアプリケーションはインターネットにアクセスできます。 Firefox、Edgeは使用可能。オンラインの宛先にpingを実行することもできます。
ただし、Outlook、Word、ExcelとOneDriveが統合されたOfficeアプリケーションにはインターネットアクセスがありません。同じことがMicrosoft StoreAppにも当てはまります。 Officeがアクティブなサブスクリプションを検証できなくなったために、ライセンスの問題が発生する場合もあります。 (紛らわしいことに、エクスプローラーでファイルまたはフォルダーを編集するときに、OneDriveアプリケーション自体が(時々)機能し、ファイルを同期していますが、Office内のOneDrive統合は機能していません。)
環境:
一時的な回避策を見つけるのに時間がかかったので、誰かがより実用的な解決策を見つけられることを願って、ここでそれを共有します。
以下の一時的な解決策を読んだ後、フォローアップの質問は次のようになります:OpenVPN構成ファイルはDHCPによって決定されるため、IPを事前に知らなくてもVPNアダプターにゲートウェイIPを設定するにはどうすればよいですか?
問題が見つかった場合は、別の角度で問題に対処してください。目標は、VPN接続を確立し、その接続を介してOfficeアプリケーションを機能させることです。
長い検索の結果、私はこれを見つけました 記事 。
それは考慮しているいくつかの技術的な働きを説明します
一言で言えば、問題はVPNアダプターのゲートウェイに関連しています。 VPNアダプタには明示的なデフォルトゲートウェイIPが定義されていないため、NLA/NCSIは混乱しており、アクティブなインターネット接続がないと誤って想定しています。 VPNアダプタのクライアントIPは、DHCPを介してVPNサーバーによって決定されることに注意してください。ルーティングルールを介して、ゲートウェイは暗黙的に定義されます。そのため、NCSIに依存しないアプリケーションはインターネットに接続できます。ルーティングテーブルにはその情報が含まれています。
VPN-network-adapterのプロパティ内で、IP、サブネット、ゲートウェイ、およびDNSサーバーを定義できます。
これが機能するためには、最初にVPNローカルIPを決定します。これは10.100.5.25のようになります。
クライアントIPに基づいて、ゲートウェイIPを導出すると、ゲートウェイは10.100.5.1になると思います。 (route printテーブルを調べることもできます。)
このIPをゲートウェイフィールドに入力します。
適合した概要で、VPN接続はインターネットにアクセスできるものとしてマークされます。これで、OfficeとWindows 10アプリケーションを再起動すると、接続できるようになります。
次回OpenVPNサーバーに接続するときにゲートウェイIPを更新する必要があります。これは、別のIPを受信する可能性が高く、したがって別のゲートウェイが有効になるためです。
〜現時点では、GUIを介してこれを実現する方法しか知りません。コマンドラインからこれを設定できますが、IPを定義する必要があります。これは、再接続するたびに変更される可能性があります。ゲートウェイIPは設定できますが、残りの操作はGUIを介してDHCPに割り当てられるため、これは、Powershellまたは別のスクリプト言語でも可能であると期待してください。そのような解決策はまだ見つかりません。〜見つけた場合は、ゲートウェイIPの設定を自動化できます。
(その点で、次の質問は次のようになります:* .ovpnファイルはゲートウェイIPが設定されるようにアダプターを構成できますか?)
複雑さだけでなくコンテキストも追加する可能性のあるその他の情報ソース:
https://www.ryadel.com/en/yellow-triangle-over-network-connection-status-how-to-fix-it/
https://community.spiceworks.com/topic/2131702-limited-connectivity-indicated-but-internet-works
まあ、少し予想外でしたが、コマンドラインの答えを見つけました:
以前は「ゲートウェイ」を検索したためノイズが多かったと思いますが、「デフォルトゲートウェイ」を検索したところ、より関連性の高い結果が得られました。
PowerShellのVPNアダプターにデフォルトゲートウェイを追加する:
Set-Variable vpnadaptername -Value ENTER-NAME
Set-Variable vargateway (Get-NetRoute -DestinationPrefix 0.0.0.0/1 |Select-Object -expandproperty "NextHop"); Write-Host $vargateway
New-NetRoute -InterfaceAlias $vpnadaptername -DestinationPrefix 0.0.0.0/0 -NextHop $vargateway
Get-NetIPConfiguration -InterfaceAlias $vpnadaptername
仮定:
Get-NetRoute
は、VPNゲートウェイIPを0.0.0.0/1の隣のネクストホップとしてリストします。残念ながら、再起動または再接続後、VPNアダプターには新しいIPが割り当てられますが、古いゲートウェイIPはアダプター内に残ります。
'New-NetRoute'を 'Set-NetRoute'に置き換えることで更新できますが、OpenVPNが接続を確立する前にクリアする方が安定していると思います。
したがって、VPNが接続される前のスクリプトは次のとおりです。
デフォルトゲートウェイIPのクリア:
Set-Variable vpnadaptername -Value ENTER-NAME
Set-Variable vargatewayold (Get-NetRoute -InterfaceAlias $vpnadapternam -DestinationPrefix 0.0.0.0/0 |Select-Object -ExpandProperty "NextHop")
Remove-NetRoute -InterfaceAlias $vpnadaptername -DestinationPrefix 0.0.0.0/0 -NextHop $vargatewayold Confirm:$false
最後のメモ。ご覧のとおり、routeコマンドはアダプタのゲートウェイIPを編集するために使用されます。これは、スクリプトの順序が正しくない場合、ルートテーブルを台無しにする可能性があることを意味します。たとえば、アダプタが2つのゲートウェイで終わる可能性があります。
通常の操作を復元するには、ネットワークアダプタ->プロパティ-> IPv4->プロパティ->ゲートウェイIPを選択して[編集]または[削除]をクリックしてIPを手動で削除します。 OpenVPNを再接続すると、ルーティングテーブルがリセットされます。
見つかったコマンド: https://richardspowershellblog.wordpress.com/2016/02/22/ip-default-gateways-by-cmdlet/
https://www.vexasoft.com/pages/set-networkadaptergateway (サードパーティ、正しくないと感じました。ソフトウェアは動作する可能性がありますが、コマンドは完璧に見えますが、古くなっているようです!)