Fre*_*itz 3 fedora namespace network-namespaces
使用 fedora 32,我在网络命名空间内启动了一个 shell,使用
sudo ip netns add net0
sudo ip netns exec net0 sudo -u fred /usr/bin/bash
Run Code Online (Sandbox Code Playgroud)
我配置了网络链接和防火墙以启用 ping。当我尝试以非 root 身份 ping 时,我得到:
$ ping 8.8.8.8
ping: socket: Operation not permitted
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试使用 sudo ping,它会起作用。为什么?
请参阅相关问题ping 在没有 setuid 和功能的情况下如何在 Fedora 上工作?
和链接
https://lwn.net/Articles/422330/
https://fedoraproject.org/wiki/Changes/EnableSysctlPingGroupRange
出于安全原因,Fedora 不再使用 setuid/capabilities 以允许非 root 用户使用 ping。相反,他们使用最近的内核功能,允许管理员通过 gid 启用 ping 使用。
在普通外壳中:
$ sudo sysctl net.ipv4.ping_group_range
net.ipv4.ping_group_range = 0 2147483647
Run Code Online (Sandbox Code Playgroud)
但是在网络空间内的新外壳中:
$ sudo sysctl net.ipv4.ping_group_range
net.ipv4.ping_group_range = 1 0
Run Code Online (Sandbox Code Playgroud)
因此,当您创建新的 netns 时,默认情况下禁用允许非 root 用户在 fedora 上使用 ping 的机制。要解决此问题,只需在您的 netns 中设置 sysctl 值:
$ sudo sysctl net.ipv4.ping_group_range="0 2147483647"
net.ipv4.ping_group_range = 0 2147483647
$ ping 8.8.8.8
64 bytes from 8.8.8.8: icmp_seq=1 ttl=40 time=20 ms
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
156 次 |
最近记录: |