저는 이 튜토리얼을 사용하고 있습니다:Unix 프로그램을 특정 네트워크 인터페이스에 바인딩
$NS 및 $IN이 올바르게 설정되었다고 가정
내 질문
두 개의 네트워크 인터페이스가 있는데 그 중 하나에는 데이터 제한이 있으며 이에 액세스하기 위해 특정 명령 외에는 아무것도 필요하지 않습니다. 하지만 "ip netns exec $NS {command}"와 함께 사용하려고 하면 이 명령은 인터넷에 액세스할 수 없습니다. IP 주소에 연결할 수는 있지만 호스트를 확인할 수는 없습니다.
내가 밟은 단계
sudo mkdir -p /etc/netns/$NS
sudo sh -c "echo \"nameserver 8.8.8.8\" >> /etc/netns/$NS/resolv.conf"
curl <ip> // OK
curl <site> // OK
sudo ip netns add $NS
sudo ip link set $IN netns $NS
sudo ip netns exec $NS ip link set lo up
sudo ip netns exec $NS ip link set $IN up
sudo ip netns exec $NS dhclient $IN
sudo ip netns exec $NS curl <ip> // OK
sudo ip netns exec $NS curl <site> // Could not resolve host: <site>
노트
- 인터페이스 유형은 이더넷입니다.
- netns ip 라우팅(ip netns exec $NS ip 라우팅)이 올바른 것 같습니다. 기본 경로는 IP $IN을 가리킵니다.
- 특정 단계의 명령(마지막 명령 제외)이 오류 없이 실행됩니다.