Linux端口转发到Socks代理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux端口转发到Socks代理相关的知识,希望对你有一定的参考价值。
我已经阅读了有关Raspberry Pi项目的教程。简而言之,该项目包括一个TOR中间盒AP,它通过以太网接口连接到互联网,客户端可以通过它的WiFi接口连接到raspberry Pi WLAN网络。进入WiFi接口的所有流量都通过iptables端口转发命令重定向到本地TOR SOCKS代理。
sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --syn -j REDIRECT --to-ports 9040
现在我的问题是,TOR socks代理如何根据应用程序的请求知道真正的套接字目标端口?例如,假设我使用firefox打开stackvoerflow.com。 Firefox向stackoverlfowIP发出请求:80 ..但iptables将请求路由到localhost:9050,应用程序是否知道中间存在SOCKS代理(假设代理设置未在浏览器设置中设置)?如果目标端口已被iptables从80更改为9050,那么TOR本地SOCKS代理如何知道真正的目标端口?
有一个内核API(getsockopt(fd, SOL_IP, SO_ORIGINAL_DST, (struct sockaddr*) &orig_addr, sizeof(orig_addr))
)可供代理知道实际请求的目的地。
顺便说一下,有一个新的TPROXY目标方法比REDIRECT更强大(可以是双向透明),但需要额外的设置(--tproxy-mark
然后需要ip rule fwmark ...
,代理现在使用setsockopt(fd, SOL_IP, IP_TRANSPARENT, &flag, sizeof(flag))
然后使用比REDIRECT更多的标准方法)。 TOR不需要,但新应用程序可能不再使用REDIRECT。
以上是关于Linux端口转发到Socks代理的主要内容,如果未能解决你的问题,请参考以下文章