resolvectlは新しいVPNネットワークアダプタを無視します。

resolvectlは新しいVPNネットワークアダプタを無視します。

Forticlientアプリを使用して会社のVPNに接続すると、奇妙な問題が発生しました。まず、何が問題なのかわかりません。時間を過ごした後、DNSが正しく機能しないことがわかりました。残念ながら、誰のせいなのかわかりません。 FortiClient、systemd-resolved などがあります。まだ公式化されていないUbuntu 22.04を使用していますが、1〜2週間後に正式リリースされる前にはもう少し良くなると予想されます。

resolvectlVPNを設定する前の出力は次のとおりです。

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

nslookupDNSに名前を要求すると、VPNによって割り当てられたアドレスが送信元IPとして使用されることがわかりました。一方、resolvectl queryVPNによって割り当てられたアドレス以外のすべてのアドレスを送信元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

不運。

あなたはそれを使用することができます:

  1. 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で始めましょう。その後、提供されたアイコンに基づいて展開用のランチャーを追加できます。

  1. FortiClient SSLVPN 4.0.2332: https://apt.iteas.at/

どちらも機能します。最初は手動で構築してインストールする必要がありましたが、2番目は実行する準備ができていました。接続がない状態でトンネルが閉じたことがあるにもかかわらずです。

Fortigate v7.2.0を使用してテストしました。

おすすめ記事