代理环境下的 IPv6 源 IP

359 天前
journalist  journalist

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

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

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

Network Address Translation (NAT) and Proxies (part 2)

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

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

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

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

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