netns 내에서 ping을 수행하려면 sudo(Fedora)가 필요합니다.

netns 내에서 ping을 수행하려면 sudo(Fedora)가 필요합니다.

Fedora 32를 사용하여 다음을 사용하여 네트워크 네임스페이스 내에서 쉘을 시작했습니다.

sudo ip netns add net0
sudo ip netns exec net0 sudo -u fred /usr/bin/bash

ping을 활성화하도록 네트워크 링크와 방화벽을 구성했습니다. 루트가 아닌 사용자로 ping을 시도하면 다음과 같은 결과가 나타납니다.

$ ping 8.8.8.8                       
ping: socket: Operation not permitted

하지만 sudo를 사용하여 ping을 시도하면 작동합니다. 왜?

답변1

관련 질문 보기setuid 및 기능 없이 Fedora에서 Ping은 어떻게 작동합니까?

및 링크

https://lwn.net/Articles/422330/

https://fedoraproject.org/wiki/Changes/EnableSysctlPingGroupRange

보안상의 이유로 Fedora는 더 이상 루트가 아닌 사용자가 ping을 사용할 수 있도록 setuid/capability를 사용하지 않습니다. 대신 관리자가 gid의 ping 사용을 활성화할 수 있는 최신 커널 기능을 사용합니다.

일반 쉘에서는:

$ sudo sysctl net.ipv4.ping_group_range      
net.ipv4.ping_group_range = 0   2147483647

그러나 사이버 공간 내의 새로운 껍질에서는:

$ sudo sysctl net.ipv4.ping_group_range
net.ipv4.ping_group_range = 1   0

따라서 새 netns를 생성할 때 루트가 아닌 사용자가 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

관련 정보