我想制作一个透明/全局 VPN。我知道数据包重定向很有用。在这篇文章中:配置 Ubuntu 以使用全局 SOCKS5 代理,Khaled 建议使用 iptables 重定向数据包。但我想知道代理如何知道目的地——目的地 IP 和远程服务器端口。因为如果代理在 tcp 层上侦听,目的地信息就会丢失。有人知道如何获取目的地信息吗?非常感谢
答案1
getdestaddr
我在项目的 redir.c 中看到一个函数shadowsocks-libev
,它使用 getsockopt (sock_fd、SOL_IP、SO_ORIGINAL_DST、sockaddr_ptr、socklen_ptr)。它解决了 TCP 的目标问题。但它不适用于 udp,那么 udp 怎么办?