私はそこに行きました。少し問題があります。私のUbuntu 22.04ボックスに。
これは、インターネット接続がどのように機能するかを理解するためにいくつかの質問を提示します。私が理解しているように、インターネット接続が機能するには、次のものが必要です。
- ゲートウェイとして機能するルーターに接続する
- DHCP経由でルータが割り当てたIPアドレス
- DNS ネームサーバーアドレスは、DHCP 経由でルータでも提供されます。
これは必要ですが十分ではないようです。また何が必要ですか?
systemd では、NetworkManager は「ネットワーク接続を有効にします」。これは少なくとも1〜3点をカバーします。
私は次のような状況を見ました。
- 接続が「アクティブ化」されました
- 割り当てられたIPアドレスが正しいです。
- 割り当てられたDNSサーバーが正しいです。
ただし、回復モードを使用するか、同じLAN上の他のPCを使用しない限り、インターネットと通信することはできません。
- pingタイムアウト
- nslookupタイムアウト
- LANアイコンには疑問符が重なっています。
私は「ただ働く」に慣れているので、次のように尋ねる必要があります。
Q:ネットワークが実際に機能するには、「ネットワーク接続を有効にする」以外に何をすべきですか?
ネットワークアイコンの疑問符はどういう意味ですか? (システムアップデート以降は表示されなくなります)
「ネットワーク接続の有効化」が実際に何を意味するのかを尋ねていますか?
これは意図的に一般的な質問です。具体的な質問の例については、最初の行にリンクされている質問をご覧ください。
作業ケースの主な違いは次のとおりですroute
。
default _gateway 0.0.0.0 UG 100 0 0 enp0s31f6
詳しくは下記をご覧ください。
以下は無関係な詳細かもしれません。
ping追跡ショーの場合:
socket()
connect() - "8.8.8.8"
setsockopt()
newfsstatat()
ioctl(TCGETS)
ioctl(TIOCGWINSZ)
sendto() "8.8.8.8"
recvmsg()
そして、recvmsg()はタイムアウトするまでEAGAINで失敗します。したがって、ある意味では、カーネルはconnect()呼び出しが成功することを許可しますが、接続はデータフローを許可しないようです。
ただし、nslookup straceの場合は、次のようになります。
connect("127.0.0.53")
正しいネームサーバーではありません。これ関連性がある可能性があります。これに基づいて、何かが127.0.0.53で聞いているようですss
。
>tracepath -n -p 55 8.8.8.8.8
1?: [LOCALHOST] pmtu 1500
1: no reply
...
そして、そのrecvmesg()が再びタイムアウトします(EAGAINを繰り返した後)。
特定の問題の詳細:
動作しない:
> route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.0.1 0.0.0.0 UG 100 0 0 enp0s31f6
link-local 0.0.0.0 255.255.0.0 U 1000 0 0 virbr0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s31f6
192.168.123.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
> ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s31f6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 70:4d:7b:64:62:35 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.17/24 brd 192.168.0.255 scope global dynamic noprefixroute enp0s31f6
valid_lft 854001sec preferred_lft 854001sec
inet6 fe80::ba46:11c7:b4d1:16b3/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: wlx503eaa945dc9: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 50:3e:aa:94:5d:c9 brd ff:ff:ff:ff:ff:ff
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:ed:8b:39 brd ff:ff:ff:ff:ff:ff
inet 192.168.123.1/24 brd 192.168.123.255 scope global virbr0
valid_lft forever preferred_lft forever
5: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:fe:8d:1b:aa brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
# inxi -N
Network:
Device-1: Intel Ethernet I219-V driver: e1000e
Device-2: Realtek RTL8188EUS 802.11n Wireless Network Adapter type: USB driver: r8188eu
# netstat -i
Kernel Interface table
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
docker0 1500 0 0 0 0 0 0 0 0 BMU
enp0s31f 1500 27075 0 0 0 1608 0 0 0 BMRU
lo 65536 5441 0 0 0 5441 0 0 0 LRU
virbr0 1500 0 0 0 0 0 0 0 0 BMU
# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 enp0s31f6
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 virbr0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s31f6
192.168.123.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
以降の作業例:
- 回復モードで起動
- ネットワークの有効化
- 通常の起動復元
新しい出力:
$ netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 enp0s31f6
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 enp0s31f6
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s31f6
192.168.123.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default _gateway 0.0.0.0 UG 100 0 0 enp0s31f6
link-local 0.0.0.0 255.255.0.0 U 1000 0 0 enp0s31f6
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s31f6
192.168.123.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
$ netstat -i
Kernel Interface table
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
docker0 1500 0 0 0 0 0 0 0 0 BMU
enp0s31f 1500 85232 0 1 0 46876 0 0 0 BMRU
lo 65536 4250 0 0 0 4250 0 0 0 LRU
virbr0 1500 0 0 0 0 0 0 0 0 BMU
$ inxi -N
Network:
Device-1: Intel Ethernet I219-V driver: e1000e
Device-2: Realtek RTL8188EUS 802.11n Wireless Network Adapter type: USB
driver: r8188eu
$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s31f6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 70:4d:7b:64:62:35 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.17/24 brd 192.168.0.255 scope global dynamic noprefixroute enp0s31f6
valid_lft 862734sec preferred_lft 862734sec
inet6 fe80::ba46:11c7:b4d1:16b3/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: wlx503eaa945dc9: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 50:3e:aa:94:5d:c9 brd ff:ff:ff:ff:ff:ff
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:ed:8b:39 brd ff:ff:ff:ff:ff:ff
inet 192.168.123.1/24 brd 192.168.123.255 scope global virbr0
valid_lft forever preferred_lft forever
5: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:05:f9:90:04 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
答え1
あなたのルータは、あなたのインターネットサービスプロバイダへのアクティブなアップストリーム接続がない場合でも、あなたがリストした3つの機能をすべて提供することができます。これにより、ルータのインターネット接続が正しく設定されていなくても、Webブラウザを使用してルータの設定インターフェイス(利用可能な場合)にアクセスできます。
したがって、ルータ自体からいくつかの診断情報を取得しようとする必要があります。インジケータがあればどのように機能しますか?ルータのWebインターフェイスにアクセスできる場合は、ステータスページにインターネット接続が正常であると表示されますか?
また、ルーターに「子供保護」機能が装備されているか、特定のクライアントシステムへのインターネット接続のみを許可するように制限される可能性があります。たとえば、ルータの過度に厳しいファイアウォールルールが原因で症状が発生することがあります。
最新のオペレーティングシステムでは、「ネットワーク接続の有効化」には通常テストが含まれます。オペレーティングシステムは、接続が実際に機能していることを確認するために、一部のオペレーティングシステムベンダーが管理するクラウドサービスに接続しようとします。そうでない場合、システムはアップデートのダウンロードを試みず、通常はインターネット接続が不足していることを示します(接続アイコンの上に疑問符が表示されます)。
NetworkManagerでは、これらの接続テストは設定可能でオプションですが、Ubuntuではデフォルトでこれを有効にしているようです。
あなたのルータは、あなたのインターネットサービスプロバイダへのアクティブなアップストリーム接続がない場合でも、あなたがリストした3つの機能をすべて提供することができます。これにより、ルータのインターネット接続が正しく設定されていなくても、Webブラウザを使用してルータの設定インターフェイス(利用可能な場合)にアクセスできます。
したがって、ルータ自体からいくつかの診断情報を取得しようとする必要があります。インジケータがあればどのように機能しますか?ルータのWebインターフェイスにアクセスできる場合は、ステータスページにインターネット接続が正常であると表示されますか?
また、ルーターに「子供保護」機能が装備されているか、特定のクライアントシステムへのインターネット接続のみを許可するように制限される可能性があります。たとえば、ルータの過度に厳しいファイアウォールルールが原因で症状が発生することがあります。
最新のオペレーティングシステムでは、「ネットワーク接続の有効化」には通常テストが含まれます。オペレーティングシステムは、接続が実際に機能していることを確認するために、一部のオペレーティングシステムベンダーが管理するクラウドサービスに接続しようとします。そうでない場合、システムはアップデートのダウンロードを試みず、通常はインターネット接続が不足していることを示します(接続アイコンの上に疑問符が表示されます)。
NetworkManagerでは、これらの接続テストは設定可能でオプションですが、Ubuntuではデフォルトでこれを有効にしているようです。
ソケット() 接続() - "8.8.8.8" setockopt() newfsstatat() ioctl(TCGETS) ioctl(TIOCGWINSZ) sendto() "8.8.8.8" recvmsg()
したがって、成功した場合、connect()
カーネルsendto()
が知っている限り、pingパケットは以前は送る。
によると、man 2 recvmsg
EAGAINエラーは次のことを意味します。
EAGAINまたはEWOULBlock
ソケットがブロックされていないため、受信操作がブロックされたか、受信タイムアウトが設定され、データを受信する前にタイムアウトが期限切れになりました。 POSIX.1はこの場合、エラーの1つが返されることを許可し、これらの定数が同じ値を持つ必要はないため、移植可能なアプリケーションは両方の可能性を確認する必要があります。
つまり、応答を受け取れませんでした。原因を説明するICMPエラーパケットが付属していない場合、システムは追加の説明を提供できません。通常、これは、いくつかのエラーまたは設定された制限(ファイアウォールルールなど)のために発信されたpingパケットまたは着信ping応答がルーターまたはルーターの特定のポイントで破棄されることを意味します。
この場合、可能なテストの1つがですtraceroute
。ファイアウォールは現代のネットワークのどこにでも存在するため、動作することが予想される特定のポートに接続するTCPまたはUDPベースのトレースパスを特に使用することが有用であることがわかりました。したがって、この場合:
sudo traceroute -n -T -p 53 8.8.8.8
Googleのよく知られているDNSサーバーのポート53へのTCPベースのトレースパスを試してください。 DNSプロトコルはTCPとUDPの両方を使用し、TCPポートはTracerouteに対してより強力な応答を提供するため、発信パケットが応答の受信を中断する前に到達できる距離を通知できます。
パケット転送時間とともに出力に表示される最後のIPアドレスがtraceroute
ルータのIPアドレスである場合、問題はルータにあるか、ルータとISPのルータの間にあることです。
ルーターのIPアドレスの後に別のIPアドレスが表示される場合、問題はISPの機器の内部(可能性が高い)またはISPと他の組織との間のインターネットバックボーン接続(通常は複数の冗長性である可能性が低い)にあることです。どちらの場合も、自分で解決するためにできることはありません。最善の方法は、ISPに問題を報告し、ISPが問題を解決するか、問題が発生したトラフィックを再ルーティングするのを待つことです。
ただし、nslookup straceの場合は、次のようになります。
接続("127.0.0.53")
正しいサーバー名ではありません。これ関連性がある可能性があります。
リンクされた質問に対する回答を読んでいませんか?あなたのシステムはを使用していますsystemd-resolved
。ほとんどのアプリケーションはglibcのホスト名解決APIを使用し、hosts: ...resolve...
キーワードは/etc/nsswitch.conf
直接通信するように指示しますsystemd-resolved
。以前のバージョンとの互換性と一部の従来のアプリケーションやDNS関連ツール(DNSなど)では、DNSリゾルバプロキシはnslookup
ポート53(つまり代替IPアドレス)127.0.0.53で維持されています。実行してシステムの実際のDNS設定を確認し、以前の設定を無視する必要があります。systemd-resolved
/etc/resolv.conf
localhost
resolvectl
/etc/resolv.conf
しかし、ここに問題があります。 IPで8.8.8.8をpingすることもできないため、DNS解決を心配する前にIP接続の問題を解決する必要があります。
あなたが失望する可能性がある新しいことは、最新のオペレーティングシステムがプライバシーのために起動するたびに、デフォルトでMACアドレスをランダムに指定できることです。このタイプのランダム化は、ルータがシステム固有のIP予約または他のホスト固有の設定で構成されている場合に問題を引き起こす可能性があります。
NetworkManager設定には、MACアドレスのランダム化を無効にするオプションが含まれている必要があります。ネットワークを起動するために単純化されたプロセスを使用できるため、回復モードではランダム化をスキップできます。