localhost에서 수신 대기하기 위해 netns에 바인딩

localhost에서 수신 대기하기 위해 netns에 바인딩

Bind를 실행하는 Debian Jessie가 있습니다. OpenVPN 연결이 설정되었습니다. 먼저 resolv.conf로컬 바인딩을 사용하도록 설정합니다.

nameserver 127.0.0.1
nameserver 4.2.2.4

이런 식으로 시스템을 구성하고 싶습니다.확증하다인터넷에 대한 프로그램 액세스오직해당 VPN 연결을 통해(어디에도 액세스할 수 없음) 나머지는 인터넷에 직접 액세스할 수 있습니다. 제 생각에는모두4.2.2.4프로그램은 로컬 바인딩을 사용하여 도메인 이름 을 확인하고 resolv.conf.

저는 Network Namespace가 작업에 적합한 도구라고 결정했습니다. VPN 인터페이스를 Network Namespace로 이동한 다음(루프백 외에 사용할 수 있는 유일한 연결임) 다음을 실행했습니다.확증하다내 네트워크 네임스페이스의 프로그램. 다음 스크립트를 만들고 route-upOpenVPN 스크립트로 실행되도록 설정했습니다.

NS=zzz

if [ ! -f /var/run/netns/$NS ]; then
        /sbin/ip netns add $NS
fi

/sbin/ip link set $dev netns $NS
/sbin/ip netns exec $NS /sbin/ifconfig lo up
/sbin/ip netns exec $NS /sbin/ifconfig $dev $ifconfig_local pointopoint $ifconfig_remote up
/sbin/ip netns exec $NS /sbin/route add default gw $ifconfig_remote metric 1024

Bind가 내 네트워크 네임스페이스의 루프백 인터페이스를 수신하지 않아 모든 이름 확인 요청이 외부 DNS로 전송된다는 점을 제외하면 나에게는 잘 작동합니다. 이 문제를 어떻게 해결할 수 있나요? 두 루프백(일반 루프백과 netns 루프백)이 동일하도록 어떻게든 지정할 수 있습니까? 아니면 내 네임스페이스에서 다른 Bind 복사본을 실행해야 합니까? 다른 건 없나요?

관련 정보