根据 http://kernelnewbies.org/Linux_3.0#head-c5bcc118ee946645132a834a716ef0d7d05b282e, 我们现在可以作为非特权用户ping,我可以让它运行起来.
使用https://github.com/jedie/python-ping我修改了210行的样子
current_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM,socket.IPPROTO_ICMP)
作为root我"echo 1000 1000>/proc/sys/net/ipv4/ping_group_range"
我的团队是1000
我可以像普通用户一样运行ping.py,我可以在tcpdump中看到echo请求和echo回复
18:33:24.840291 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto ICMP (1), length 269)
127.0.0.1 > 127.0.0.1: ICMP echo request, id 38, seq 0, length 249
18:33:24.840309 IP (tos 0x0, ttl 64, id 37939, offset 0, flags [none], proto ICMP (1), length 269)
127.0.0.1 > 127.0.0.1: ICMP echo reply, id 38, seq 0, length 249
Run Code Online (Sandbox Code Playgroud)
但ping.py没有看到回复,并说超时.
任何想法如何使这项工作?
编辑:
我正在缩小这个问题.
print "c", icmp_header, address, …Run Code Online (Sandbox Code Playgroud)