1
ghjexxka 2021-10-02 16:54:49 +08:00
“但是对于 IPv6 来说,因为本身就是公网 IP,如果随意做路由的话,是不会通的”
比较好奇不通是指啥 |
2
pupboss 2021-10-02 17:06:43 +08:00
建议先排查出国节点是否支持 IPv6
|
3
oovveeaarr OP @ghjexxka #1 路由不通呀,使用的 IP 是由客户端选择的,如果把 A 运营商的 IP,路由到 B 运营商,这样是不行的。
|
4
titanium98118 2021-10-02 17:34:21 +08:00
我的状况跟你一样,电信+移动,只做了 ipv4 分流,目前局域网没有下发 ipv6 。
|
5
ihipop 2021-10-02 17:44:30 +08:00 via Android
要流量均衡最简单的就是 nat6 了
要按运营商分流就做运营商的 v6 地址表 以上都要原路返回策略路由配合 其他好像没有特别简单的办法 |
6
cwbsw 2021-10-02 18:37:32 +08:00
@oovveeaarr
不会不通的。 OpenWrt 默认添加的默认路由是诸如 `default from 240e:ace:8e00:11ea::/64 via fe80::dd1c:abd1:34a:6501 dev pppoe-wan1` `default from 2409:832:3295:10ac::/64 via fe80::acae:bd1f:092:32ad dev pppoe-wan2` 这种样式的,客户端用电信的地址发起连接就会走电信的网关,用移动的就走移动的网关。 RouterOS v7 最近也支持 IPv6 的策略路由了,通过添加规则应该也能实现上面的效果。 |
7
billccn 2021-10-02 18:52:33 +08:00
@cwbsw 你好像没理解楼主的困难在哪。现在 IPv6 地址是客户端选择的,楼主要实现分流效果需要把两个运行商的路由表配置到每个终端里,无法再像 IPv4 一样在路由器配置一次全局使用。
我觉得解决楼主问题最省事的做法实在局域网里配置一个代理,在代理的机器上设置 IPv6 路由表,其他设备(包括手机)针对这个 WiFi 配置代理,这样绝大多数 App 就可以实现分流,少数不支持代理的从默认路由出去也不会很影响使用。 |
8
cwbsw 2021-10-02 19:06:10 +08:00
@billccn
我是在告诉楼主 “路由不通呀,使用的 IP 是由客户端选择的,如果把 A 运营商的 IP,路由到 B 运营商,这样是不行的。” 上面这种情况是不会发生的。 至于你的问题。v6 环境下实现按运营商分流不需要额外配置,客户端解析到的电信的目的地址,据 RFC3484,会自动选择电信的源地址发起连接。 |
9
geekvcn 2021-10-02 19:42:14 +08:00
IPv6 不需要分流,电信的 IP 会优先走电信,移动的 IP 会优先走移动,联通的 IP 会优先走联通。楼上已经说了,不想折腾客户端你直接路由器搞个 NAT6 就行了
|
10
pcslide 2021-10-02 23:29:20 +08:00
|
11
oovveeaarr OP @billccn #7 好主意,用 tcp redirec 透明代理特定端口的这个方法我的确忽略了。不过使用这种方法的话,似乎对局域网内所有的机器都是统一规则了,如果要实现类似 mwan 规则的话感觉上可能要比较复杂了。
还有一个问题就是因为 DHCP-PD 是动态的,还要办法监控一下 DHCP,不然 IP 变更后路由表就会出问题。 同时如果局域网内,想设置一个默认出口的 IPv6 似乎也没办法实现(不满足代理规则的情况下,就会控制不到。由于有多个 DHCP-PD 的话,局域网内其他客户端也同时会有多个 IP ) 晚点我看看能不能简单实现下 @cwbsw #8 你可能没有认真看我的帖子,我的诉求就是如 @billccn 所说。现在的问题就是 IP 地址最长匹配选出来的 IPv6,并不是路线优解。 这个问题只能通过手动调整路由表实现,由于我在主楼和 3#所说的“使用的 IP 是由客户端选择的”,但是不能路由 A 运营商的 IP 到 B 运营商的路由,所以单纯修改路由表的方式是不行的,不知道这么说你理解没。 @geekvcn #9 这个也只是网内的情况,考虑更多的是网外的情况,协议默认选择出来的 IP 并不是实际上的最优解。 这次主要是想和大家探讨,怎么去控制 IPv6 的路由走向的方法,而不是“默认已经就有了,不用控制”这个问题。 NAT6 我也说了并不是比较好的解决方法,有一下几个原因 1.很多路由器并不兼容,就算兼容的对于相关工具链也不是很完善(基本上都靠手写规则了) 2.NAT6 的支持大部分止步于对 1 个 IPv6 进行 NAT,而支持 1:1 NAT 的我现在还没找到(本文其实更希望达到的 n:1 效果了) 3.需要为每个 IP 配置 2*n 条以上规则( n 为出口数目)。出口同时 IP 发生变更时,需要重新生成规则非常麻烦。 |
12
oovveeaarr OP @pcslide #10 是的,其实不用太纠结“默认的规则可以用”这件事,我想和大家探讨的问题其实是“默认的规则并不合适,要怎么去改变”
|
13
raysonx 2021-10-03 00:41:53 +08:00
@oovveeaarr IPv6 下的 1:1 NAT 也叫做 NPT,软路由的话 Linux nftables 或者 Vyos 1.4 支持这个功能。
|
14
raysonx 2021-10-03 00:43:19 +08:00
pfSense 也支持
|
15
billccn 2021-10-03 04:13:48 +08:00
@oovveeaarr 你把我的点子想高级了。
我其实想的是一个简单的 HTTP 或者 Socks 代理,这样可以实现内网(甚至可以是 IPv4 地址)连接这个代理服务器,由代理机子的路由表再发出连接,这样不仅可以分流,还可以内网不配置 IPv6 地址,增强老系统的兼容性。 你说的 TCP 代理我猜是指运行在路由器上那种?我想应该会很占 CPU,和 IPv6 NAT 半斤八两。 |
16
Rocketer 2021-10-03 04:51:30 +08:00 via iPhone
从原理上讲,你的路由器与上级路由器在同一个子网内就可以转发给它,路由器是不关心上上级是哪个子网的。
所以你的上行是可以发给任意路由器的,你的子网也只需用一家的 IP 段,没必要混用。但下行不是你决定的,所以你用哪家的 IP 段就会从哪家的线路来。 想要上下行都智能的话就得让客户端有两个 IP,并把路由表配置到客户端。 |
17
oovveeaarr OP |
18
oovveeaarr OP @raysonx #13 噢噢,确实我之前也看到 NPT 这个描述,还没来得及去看,晚点去看一下。
那这个 NPT 的功能,是只能针对一个网段的 1:1 映射吗?还是说能支持 n:1 的(把多个网段,映射到一个内网网段中),如果支持的话感觉就不用倒腾了。 不过还是得找一下 openwrt 有没有这种功能兼容,不然的话可能还是要写脚本自己手撸规则。 或者是写规则重定向给旁路路由,旁路路由再处理这些东西,不知道可不可行。 看了一下大佬的历史帖子,感觉对网络这块很有研究呀。大佬有联系方式吗,想交流(请教)一下)) |
19
oovveeaarr OP @titanium98118 #4 那路由端拨号后还能获取到 IPv6 吗?
我这边用的 openwrt 把 IPv6 从自动改手工 /关闭,路由也会直接获取不到 IPv6,昨天查了下看起来像是 pppoe 拨号的时候参数有差别。 但是选择自动的话,就会获取 DHCP-PD,然后下发 IPv6 给客户端,有点头大。 @ihipop #5 是的,我想了半天感觉可能比较好的解法也只有 nat6 了。但是感觉还挺复杂的,头大。 |
20
ihipop 2021-10-03 18:16:43 +08:00 via Android
@oovveeaarr 还有一个办法,radvd 可以给客户端直接推送路由的,而且支持单播模式推送,剩下的你可以发挥想象了,
|
21
raysonx 2021-10-03 21:23:26 +08:00 via iPad
我个人是建议是直接推两个前缀下去,让客户端选择线路。路由器上配置策略路由( PBR )选择正确的网关。
|
22
conupefox 2021-10-06 15:26:07 +08:00
用 ip6tables 的 NETMAP 功能。lan 下发私网的 ipv6,再 1:1 映射。
|