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)