Debian 12 ping

ติดตั้ง Debian Bookworm ใหม่ วันนี้บน VPS ของ cloudcone แล้วเจอว่า คำสั่ง ping มีปัญหาถ้าใช้งานจาก ผูัใช้ธรรมดาที่ไม่ใช่ root โดยเจอ

cj@cc1:~$ ping www.google.com
ping: socktype: SOCK_RAW
ping: socket: Operation not permitted
ping: => missing cap_net_raw+p capability or setuid?

2023-09-07 on cc1

เอาล่ะ มีปัญหาเรื่อง capability ล่ะ จะ set มันยังไง ยังไม่อยากแก้ปัญหาด้วย setuid root

Search google ก็ไปเจอ

https://unix.stackexchange.com/questions/592911/how-does-ping-work-on-fedora-without-setuid-and-capabilities

คำตอบที่น่าสนใจคือเรื่องของ ping group range ใน sysctl ซึ่งก็ไม่ตรงกับ capability โดยตรงสักเท่าไหร่ ลองหาดูจาก sysctl -a | grep ping_group_range ก็เจอเฉพาะ ipv4 ไม่มีของ ipv6 ค่าตั้งต้นเป็น 1 0

root@cc1:/home/cj# sysctl -a | grep net.ipv4.ping_group_range
net.ipv4.ping_group_range = 1 0

ซึ่งเป็น range เริ่มต้นที่ 1 และจบที่ 0

ซึ่งถ้าเป็นตามนี้จริงๆก็คือ ไม่มีใครใช้งานได้เลยแม้กระทั่ง root แต่จริงๆไม่ใช่ เพราะทดลองใช้ root แล้วก็สามารถ ping ได้ ไม่มีปัญหา

แต่เพื่อจะให้มันใช้งานได้ก่อน เพราะ cloudcone agent มันต้องการฟังก์ชันส่วนนี้ในการ monitor ตัว server อยู่ก็เลยไปเพิ่มไฟล์ 999-ping.conf ใน /etc/sysctl.d

echo “net.ipv4.ping_group_range=0 4294967295” > /etc/sysctl.d/999-ping.conf

ตามตัวอย่างใน stackexchange ซึ่งไม่ work ต้องเปลี่ยนค่า group ตัวหลังเป็น 65535 ถึงจะใช้งานได้

root@cc1:/home/cj# sysctl -p /etc/sysctl.d/999-ping.conf
sysctl: setting key “net.ipv4.ping_group_range”: Invalid argument

root@cc1:/home/cj# cat /etc/sysctl.d/999-ping.conf
net.ipv4.ping_group_range=0 65535

root@cc1:/etc/sysctl.d# sysctl -p /etc/sysctl.d/999-ping.conf
net.ipv4.ping_group_range = 0 65535

Leave a Comment

Your email address will not be published. Required fields are marked *