从手册页中,我知道您可以使用原始套接字,但我不明白“绑定到任何地址以进行透明代理”是什么意思。我知道绑定到特权端口还需要另一种能力,所以我知道你不能绑定到任何端口。有没有办法告诉 Linux 你正在绑定一个地址以进行代理?
我对文件功能如何与用户命名空间一起工作感到困惑。据我了解,如果一个文件具有某种功能,那么执行该文件的任何线程/进程都可以获得该功能。
\n\n在我的 ping 二进制文件中,我设置了 CAP_NET_RAW 功能,并且没有 setuid。
\n\n# CAP_NET_RAW is set\n\xe2\x86\x92 getcap `which ping` \n/bin/ping = cap_net_raw+ep\n\n# There is no setuid\n\xe2\x86\x92 ls -l `which ping` \n-rwxr-xr-x 1 root root 64424 Mar 9 2017 /bin/ping\n\n# ping works...\n\xe2\x86\x92 ping -c 1 google.com \nPING google.com (172.217.6.46) 56(84) bytes of data. \n64 bytes from sfo03s08-in-f14.1e100.net (172.217.6.46): icmp_seq=1 \nttl=54 time=11.9 ms \n\n--- google.com ping statistics --- \n1 packets transmitted, 1 received, 0% packet loss, time 0ms \nrtt min/avg/max/mdev = 11.973/11.973/11.973/0.000 ms \n
Run Code Online (Sandbox Code Playgroud)\n\n …