Forticlientアプリを使用して会社のVPNに接続すると、奇妙な問題が発生しました。まず、何が問題なのかわかりません。時間を過ごした後、DNSが正しく機能しないことがわかりました。残念ながら、誰のせいなのかわかりません。 FortiClient、systemd-resolved などがあります。まだ公式化されていないUbuntu 22.04を使用していますが、1〜2週間後に正式リリースされる前にはもう少し良くなると予想されます。
resolvectl
VPNを設定する前の出力は次のとおりです。
username@hostname:~$ resolvectl
Global
Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: stub
Link 2 (enp2s0)
Current Scopes: none
Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Link 3 (wlp1s0)
Current Scopes: DNS
Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 192.168.1.1
DNS Servers: 192.168.1.1 2a00:ee0:d::13 2a00:ee0:e::13
DNS Domain: --
VPNが設定された後、resolvectlは次のサイトリンクを報告しますvpn
。
username@hostname:~$ resolvectl
Global
Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: stub
Link 2 (enp2s0)
Current Scopes: none
Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Link 3 (wlp1s0)
Current Scopes: DNS
Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS
DNSSEC=no/unsupported
Current DNS Server: 172.20.1.21
DNS Servers: 172.20.1.16 172.20.1.21 2a00:ee0:d::13 2a00:ee0:e::13
DNS Domain: company.com
Link 5 (vpn)
Current Scopes: none
Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
ご覧のとおり、追加のDNSサーバーがリンク3に追加され、VPNに接続したときに内部名を解決するのに役立ちます。奇妙なことは、書くとき
username@hostname:~$ resolvectl query name.company.com
name.company.com: resolve call failed: 'name.company.com' not found
私は何も得られませんでした。このようにnslookupを使用しようとすると
username@hostname:~$ nslookup
> server 172.20.1.16
Default server: 172.20.1.16
Address: 171.20.1.16#53
> name.company.com
Server: 172.20.1.16
Address: 172.20.1.16#53
Name: name.company.com
Address: 172.20.38.251
私は正解を得た。nslookup
これは奇妙なので、ネットワークトラフィックを追跡してresolvectl query
。
nslookup
DNSに名前を要求すると、VPNによって割り当てられたアドレスが送信元IPとして使用されることがわかりました。一方、resolvectl query
VPNによって割り当てられたアドレス以外のすべてのアドレスを送信元IPとして使用します。したがって、DNSサーバーに応答を自分のコンピューターに送信するための正しいパスがないか、DNSクエリが新しく追加されたDNSサーバーに到達できない可能性があると思います。
したがって、必要なプログラムのどれも名前を正しく解決できません。その結果、ドメイン名を使用して VPN 内のどこにでも接続できません。
resolvctlに新しく割り当てられたVPNアドレスがあり、それを送信元IPとして使用する必要があることを認識させる方法を知っている人はいますか?接続を確立するときにFortiClientはいくつかの追加設定を実行する必要がありますか?おそらくそうではありません。
VPNを設定した後、systemd-resolvedを再起動してみましたが、役に立ちませんでした。他のサービスを再起動する必要がありますか?どれ?
アップデート:ネットワーク設定でDNSがどのように設定されているかを確認しましたが、正しく設定されています。 VPN がない場合、ネットワーク・インターフェース wlp1s0 は以下を表示します。
username@hostname:~$ nmcli device show wlp1s0 | grep DNS
IP4.DNS[1]: 192.168.1.1
IP6.DNS[1]: 2a00:ee0:d::13
IP6.DNS[2]: 2a00:ee0:e::13
VPN接続後:
username@hostname:~$ nmcli device show wlp1s0 | grep DNS
IP4.DNS[1]: 172.20.1.16
IP4.DNS[2]: 172.20.1.21
username@hostname:~$ nmcli device show vpn | grep DNS
IP4.DNS[1]: 172.20.1.16
IP4.DNS[2]: 172.20.1.21
答え1
私はさまざまなForticlientバージョンを試してみました。
- v6.4.8
- v7.0.0~v7.0.5
不運。
あなたはそれを使用することができます:
- FortiGuiを開きます。 https://github.com/theinvisible/openfortigui qt5依存関係をインストールして最初からビルドする必要があります。ここでは、次のことを行う必要があります。
$ git clone https://github.com/theinvisible/openfortigui.git
$ git checkout v0.9.6
$ cd openfortigui
$ git submodule update --init
$ qmake
$ make
Make install ターゲットは何も実行しないため、以下を使用して実行可能ファイルを手動でコピーする必要があります。
$ sudo cp openfortigui/openfortigui /usr/bin/
sudoで始めましょう。その後、提供されたアイコンに基づいて展開用のランチャーを追加できます。
- FortiClient SSLVPN 4.0.2332: https://apt.iteas.at/
どちらも機能します。最初は手動で構築してインストールする必要がありましたが、2番目は実行する準備ができていました。接続がない状態でトンネルが閉じたことがあるにもかかわらずです。
Fortigate v7.2.0を使用してテストしました。