LinuxMint 22.3のpingが今までとオペレーションが変わっている

記事の更新日:2026/09/27 設定変更による改善方法を追記しました

1.概要

ネットワーク機器の調整をしないとpingを利用することはありません。ネットワーク通過を確認するためにpingを実行すると下記エラーが発生。何が起きたか理解できませんでした。この内容を記述します。

$ ping www.google.com
ping: socktype: SOCK_DGRAM
ping: socket: アドレスファミリはプロトコルによってサポートされていません

調査した結果、pingの実行には管理者権限が必要となる変更がされているようです。しかし、エラー表示の内容が管理者権限が必要とは理解できない内容です。

fdiskを実行した場合、
$ fdisk -l
fdisk: /dev/sda を open できません: 許可がありません
と表示されて、権限が不足していると理解できます。

pingの実行に管理者権限が必要だとわかるまでに色々と試して調べました。この内容を記述します。

私の評価は以下の通りです。

(1) pingの実行にはroot権限が必要となっています
(2) これはpingの内部実装が変更されたことが理由
(3) linux-sysctl-defaultsを導入することで改善するが、LinuxMint 22.3には存在しない
(4) /etc/sysctl.d/99-ping.confを作成して改善

2.詳細

(1) DNSが通過するかを確認しました。これは問題ありません

$ host www.google.com
www.google.com has address 142.251.155.119
www.google.com has address 142.251.150.119
www.google.com has address 142.251.152.119
www.google.com has address 142.251.151.119
www.google.com has address 142.251.156.119
www.google.com has address 142.251.153.119
www.google.com has address 142.251.154.119
www.google.com has address 142.251.157.119
www.google.com has IPv6 address 2001:4860:4827:7700::
www.google.com has IPv6 address 2001:4860:482d:7700::
www.google.com has IPv6 address 2001:4860:482b:7700::
www.google.com has IPv6 address 2001:4860:4828:7700::
www.google.com has IPv6 address 2001:4860:482c:7700::
www.google.com has IPv6 address 2001:4860:4826:7700::
www.google.com has IPv6 address 2001:4860:482a:7700::
www.google.com has IPv6 address 2001:4860:4829:7700::

(2) GoogleAI(Gemini)に尋ねると-Nが必要とのことでした

$ ping -N www.google.com
ping -6 -N <nodeinfo opt>
Help:
  help
Query:
  name
  ipv6
  ipv6-all
  ipv6-compatible
  ipv6-global
  ipv6-linklocal
  ipv6-sitelocal
  ipv4
  ipv4-all
Subject:
  subject-ipv6=addr
  subject-ipv4=addr
  subject-name=name
  subject-fqdn=name

(3) ipv6は切り離されているipv4ネットワークなので、-4が必要とのことでした

$ ping -4 google.com
ping: socktype: SOCK_RAW
ping: socket: 許可されていない操作です
ping: => missing cap_net_raw+p capability or setuid?

(4) 権限不足のようです。やっとping通りました

$ sudo ping -4 google.com
PING google.com (142.251.118.113) 56(84) bytes of data.
64 bytes from tu-in-f113.1e100.net (142.251.118.113): icmp_seq=1 ttl=114 time=24.9 ms
64 bytes from tu-in-f113.1e100.net (142.251.118.113): icmp_seq=2 ttl=114 time=23.4 ms
64 bytes from tu-in-f113.1e100.net (142.251.118.113): icmp_seq=3 ttl=114 time=23.6 ms

(5) pingのhelpを参照しました

$ ping -h
Usage
  ping [options] <destination>
Options:
  <destination>      DNS name or IP address
....
IPv4 options:
  -4                 use IPv4
  -b                 allow pinging broadcast
  -R                 record route
  -T <timestamp>     define timestamp, can be one of <tsonly|tsandaddr|tsprespec>

IPv6 options:
  -6                 use IPv6
  -F <flowlabel>     define flow label, default is random
  -N <nodeinfo opt>  use IPv6 node info query, try <help> as argument

3.追加

(1) 再確認

冷静に試験をやり直しました。
$ sudo ping google.com
上記コマンドで通過します。
pingが利用者権限で実行できないのが理由でした。

(2) 改善方法

AIにpingが管理者権限が必要になったことを確認すると実装方法の変更です。
従来のpingは、ICMPパケットを送受信するためにRAWソケット(SOCK_RAW)を使用
新しいバージョンのiputils-ping(2024年9月以降など)では、RAWソケットの代わりにICMP datagramソケット(SOCK_DGRAM + IPPROTO_ICMP)を使用

改善するには、下記パッケージの設定が必要であるが、LinuxMInt 22.3は未サポート
$ sudo apt install linux-sysctl-defaults

そこで下記手段で設定を変更することで改善しました

$ echo 'net.ipv4.ping_group_range = 0 2147483647' | sudo tee /etc/sysctl.d/99-ping.conf
$ sudo sysctl -p /etc/sysctl.d/99-ping.conf

4.所見

LinuxMint 21までは以前のpingオペレーションができたのですが、LinuxMint 22から変わり、Ubuntuならば24.04から変わっています。pingはWindows,Linux,Macだけでなく、ネットワーク機器でも利用します。同じオペレーション方式が望ましいことだと思います。

pingに管理者権限が必要になったことの理由はわかりません。ネットで調べるとWindowsの場合でも管理者権限が必要に変わっているようです。pingを通過できるネットワーク設定はされている場合が多いので、セキュリティの側面で強化されたと思います。

pingを利用するのはネットワーク関連で初期設定や障害発生時です。突然、この問題に遭遇すると無駄に時間を使ってしまうので、事前学習が必要です。

参考

コメント