代理环境下的 IPv6 源 IP

114 天前
 journalist

在设备 A 上运行代理软件,这个软件具体是什么不太重要,B 通过某种方式将流量发送给 A ,可以是 socks5 ,tproxy ,tun 或者其他什么方式。A 的代理程序看了一下,决定直连出站,这个时候 B 访问的目标 C 看到的源 IP 是 A 的而不是 B 的。

具体的表现就是访问 test-ipv6.com ,显示 A 的 IP 。这算是一种 NAT 吗,有没有什么方法在直连的时候不改变(或者改回去)源地址?

我现在的做法是把想要直连的 IP 段写进防火墙规则,但是这就丢失了代理软件可以快速切换规则的便利性。

2401 次点击
所在节点    宽带症候群
15 条回复
yyzh
114 天前
没有.直连吧
ysc3839
114 天前
理论可行,但实际很可能不行。方法是 A 发包时源地址设置成 B 的地址,这样目标服务器发回包时会直接发给 B
ysc3839
114 天前
@ysc3839 还没写完,不小心点到回复了。
但是实际上运营商很可能限制 A 发出包的源地址必须是 A 的地址,上述操作发出去的包会被直接丢弃。
SenLief
114 天前
你这个分流应该在 A 上做,而不是 B 上。
leonshaw
114 天前
pagxir
114 天前
你需要在 dns 那边就做分流而不是在代理应用那边。
pagxir
114 天前
dns 分流可以在网关实现,不影响便利性。
kokutou
114 天前
各种客户端软件都是 a 上面分流啊

a 上面可以拿到进程,域名,
b 上面首先就没进程,而且可能域名都没得就只有 ip
mantouboji
114 天前
这个涉及到你 IPv6 部分的路由分流是怎么做的。

就我自己而言,无论 v4 还是 v6 全是靠 OSPF 分流,境外的 IPv4 和 v6 流量都走 wireguard 隧道出去,所以访问境外 v6 网站看到的源地址就是我境外 VPS 的 v6 地址,访问境内 v6 网站看到的是我 PPPoE 得到的那个地址。

这没什么啊。实际上因为境内 IPv6 路由的不完备,而且 v6 路由上也要经过墙,这样折腾实际上比纯走国内 v6 路由要快一点点。
icaolei
114 天前
你只要把流量给 A 的代理程序了,就是 A 在访问 C 了。你要做的是 B 来决定哪些直连,哪些发给 A 去代理。
luoshengdu
114 天前
先试试用 DNS 分流,这个部署成本低,并且不改变网络架构。
https://github.com/pmkol/easymosdns

功能说明:
*支持 EDNS 解析,根据域名与中国大陆 IP 列表智能分流,查询结果无污染*
*强化 Hosts 功能,域名支持多个 IP ,支持 IPv6*
*支持指定 ECS ,强制域名附带指定的 ECS 解析*
journalist
114 天前
怎么都在说 DNS ,我这里只考虑直接访问 IP 的情况
journalist
114 天前
@mantouboji 是这样的,你说的没错。
journalist
114 天前
假设设置运行代理的机器为网关,代理程序判断是否直连显然是在应用层,而实际上直连的流量没必要进入应用层,在网络层直接转发给下一跳就可以了。如果代理程序能在流量进入 INPUT 之前就进行判断,是不是就可以达到源 IP 不变的目的?
tavimori
114 天前
@journalist 要使设备 A 使用 B 的地址作为源地址向服务器建立连接,那么目标 C 返回的包的目的地址就是 B 的地址。

如果设备 A 使用 socks5 ,tproxy 等代理技术,那么设备 A 必须能够拦截到目标 C 返回的发给 B 的包,并重新以代理响应的方式返回给 B ,这就要求目标 C 发给 B 的包在网络中一定得经过设备 A 。此外在 A 上实现这个功能也比较怪异,例如 socket 要绑定非本机 IP ,并且可能要注入一个特定的 ebpf 程序来劫持目标 C 返回的特定包。

也有一些特殊的做法可以满足你的要求,例如一个叫做 dae 的代理软件使用 ebpf 来过滤直连的流量,只要确保不启用 SNAT ,就可以实现你需要的功能。这类代理软件在处理直连的流量时行为完全与路由器是一致的。https://github.com/daeuniverse/dae/blob/main/docs/zh/how-it-works.md

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1018210

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX