subprocess.run(["socat", f"udp-listen:{_to},fork,reuseaddr,bind=127.0.0.1", f"""exec:'sudo ip netns exec {netns} socat STDIO "UDP-connect:127.0.0.1:{_from}"',nofork"""])
현재 네트워크 네임스페이스에서 호스트로 UDP 포트 전달을 사용하고 있습니다 . 그러나 동일한 방법을 사용하여 UDP 포트를 전달하는 것은 TCP 포트를 전달하는 것보다 훨씬 느립니다(문제의 UDP 서비스는 자체 호스팅 AdguardHome DNS 서버(있는 경우)입니다). 왜 그런 겁니까?
편집: 이것이 얼마나 중요한지는 잘 모르겠지만 UDP에서만 이것을 찾았습니다.
fcntl(5, F_SETFD, FD_CLOEXEC) = 0
recvfrom(3, 0xffffcb0f4460, 519, MSG_DONTWAIT, NULL, NULL) = -1 EAGAIN (Resource temporarily unavailable)
bind(5, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("127.0.0.1")}, 16) = 0
getsockname(5, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("127.0.0.1")}, [16]) = 0
recvfrom(3, 0xffffcb0f4240, 519, MSG_DONTWAIT, NULL, NULL) = -1 EAGAIN (Resource temporarily unavailable)