1
neroanelli 2015-08-17 15:14:46 +08:00
提供一下以下命令的执行结果:
ip ro ls ip ro ls table 250 ip ru ls iptables-save -t mangle 我觉得你的第 4 条中的 192.168.1.1 网关应该修改为 wan2 的 ip 地址吧。 |
2
saeba1030 OP @neroanelli
在公司,暂时没办法直接给出截图,先手写: ip ro ls :有关 vlan3 的是 192.168.1.1 dev vlan3 scope link ,你需要哪部分我可以凭记忆给出 ip ro ls table 250 :这个就是 250 的路由,很确定是: default 192.168.1.1 dev vlan3 ip ru ls :除了默认的,就是 from all fwmark 0x01 lookup 250 iptables 能看到规则,规则的写法是: iptables -t mangle -A PREROUTING -m set ! --match-set CHN -j mark --set-mark 1 你说的把步骤 4 中的 ip 改为 wan2 的 ip 地址,试过了, traceroute 除了第一条是导路由器地址(192.168.8.1 ),第二条开始就是 timeout ;与此同时,电信线一切正常 |
3
freewarcraft 2015-08-17 17:32:14 +08:00
mark 一下,我现在用的 R7000+上海电信, LZ 成功了的话我也去装联通。。。
|
4
XiaoxiaoPu 2015-08-17 18:31:29 +08:00 via Android
直接目的路由就够了,不需要 ipset 和 mark 。
|
5
saeba1030 OP @XiaoxiaoPu 不是很明白,不 ipset 和 mark 的话,怎么区分国内和国外的 IP 呢?
|
6
XiaoxiaoPu 2015-08-17 21:21:20 +08:00
路由表不只有 default 一种条目,可以是任意 CIDR 表示的子网,例如 ip route replace 1.0.1.0/24 via 192.168.1.1 dev vlan3 表示目的地址为 1.0.1.0/24 的包走 vlan3
|
7
XiaoxiaoPu 2015-08-17 21:25:57 +08:00
@saeba1030
你应该这么设置你的路由表: ip route replace 1.0.1.0/24 via xxx.xxx.xxx.xxx dev vlan2 ip route replace 1.0.2.0/23 via xxx.xxx.xxx.xxx dev vlan2 ip route replace 1.0.8.0/21 via xxx.xxx.xxx.xxx dev vlan2 ... ip route replace 223.255.252.0/23 via xxx.xxx.xxx.xxx dev vlan2 ip route replace default via 192.168.1.1 dev vlan3 |
8
neroanelli 2015-08-17 21:29:20 +08:00 1
@saeba1030
有详细的执行结果好分析一些。 根据你的情况,我只能猜测一下可能的原因: 1.你执行 traceroute 是在路由中还是在路由下的 PC 中?如果是在路由中,那需要添加 iptables -t mangle -A OUTPUT 2.table 250 中需要添加局域网的路由,否则路由下的 PC 找不到路由,比如 10.10.0.0/24 dev br0 proto kernel scope link src 10.10.0.1 (假设你的局域网段为 10.10.0.0/24 ) 3.table 250 中应该还有一条 192.168.1.1 dev vlan3 proto kernel scope link src 192.168.1.x 路由 4.ip ru add from 192.168.1.x lookup table 250 你这个问题其实就是多 wan 策略路由的问题。 |
9
saeba1030 OP @neroanelli
没错,就是多 wan 策略路由 是在路由下的 PC 运行的 traceroute ,路由表等结果如下:(话说 V2EX 怎么传图。。。) ----------------------------------------------------- table 250: admin@NETGEAR-2FE8:/jffs/scripts# ip route show table 250 default via 192.168.1.1 dev vlan3 ----------------------------------------------------- ip route: admin@NETGEAR-2FE8:/jffs/scripts# ip ro 192.168.1.1 dev vlan3 scope link #联通二级路由 116.227.88.1 dev ppp0 proto kernel scope link src 116.227.88.xxx #电信拨号公网 IP 192.168.1.0/24 dev vlan2 proto kernel scope link src 192.168.1.4 #电信 wan 口 IP 192.168.1.0/24 dev vlan3 proto kernel scope link src 192.168.1.5 #联通 wan 口 IP 192.168.8.0/24 dev br0 proto kernel scope link src 192.168.8.1 #路由器 IP 127.0.0.0/8 dev lo scope link default via 116.227.88.1 dev ppp0 default via 192.168.1.1 dev vlan2 metric 1 ----------------------------------------------------- iptables: admin@NETGEAR-2FE8:/jffs/scripts# iptables -L -t mangle Chain PREROUTING (policy ACCEPT ) target prot opt source destination MARK all -- anywhere 116.227.88.xxx MARK set 0xb400 MARK all -- anywhere anywhere ! match-set CHN dst MARK set 0x1 ----------------------------------------------------- ip rules: admin@NETGEAR-2FE8:/jffs/scripts# ip rule 0: from all lookup local 32765: from all fwmark 0x1 lookup 250 32766: from all lookup main 32767: from all lookup default ----------------------------------------------------- Traceroute - 163.com C:\Users\xxx>tracert -d www.163.com 通过最多 30 个跃点跟踪 到 163.xdwscache.glb0.lxdns.com [114.80.143.158] 的路由: 1 <1 毫秒 <1 毫秒 <1 毫秒 192.168.8.1 2 96 ms 218 ms 194 ms 116.227.88.1 3 5 ms 6 ms 3 ms 124.74.227.129 4 7 ms 3 ms 3 ms 124.74.215.101 ..... ----------------------------------------------------- C:\Users\xxx>tracert -d www.microsoft.com 通过最多 30 个跃点跟踪 到 e10088.ca.s.tl88.net [23.53.200.154] 的路由: 1 <1 毫秒 <1 毫秒 <1 毫秒 192.168.8.1 2 * * * 请求超时。 3 * * * 请求超时。 4 * * * 请求超时。 ...... ----------------------------------------------------- 试了你建议的方案,结果还是一样 >_< 希望这个输出能有用。 |
10
coffeecat 2015-08-17 22:44:57 +08:00
只要你有个海外 vps ,直接用 mwan3 ,简单设置,灰常好用, http://www.v2ex.com/t/201805
|
11
neroanelli 2015-08-17 23:04:16 +08:00 via Android 1
ip ro add 192.168.1.0/24 dev vlan3 proto kernel scope link src 192.168.1.5 table 250
ip ro add 192.168.8.0/24 dev br0 proto kernel scope link src 192.168.8.1 table 250 |
12
ooscrewyou 2015-08-18 09:42:12 +08:00
网件 R7000?我看网上就一个 WAN 口啊
|
13
lj0014 2015-08-18 11:27:59 +08:00
mark 下,家里也是 r7000 ,现在电信双拨
|
15
saeba1030 OP |
16
Dxy00 2015-08-18 13:00:21 +08:00
“ vlan3 ,联通 20M ,光猫拨号,光猫 Lan 连 R7000 的 wan2 ,作二级路由器使用,网关(光猫) IP : 192.168.1.1 ”这条有误吧。
个人觉得不需要划分多个 vlan ,关闭联通光猫的 DHCP ,开启 Upnp 和必要的转发,光猫 IP 设置为 192.168.1.2 ,和你路由器的 IP (192.168.1.1 )区分开,然后路由器 lan 口接联通光猫 lan 口,这样你就有两个网关可以用了, 192.168.1.1 和 192.168.1.2 ,然后路由器默认网关设置为 192.168.1.2 (联通网关), iptables 设置中国段的 IP 走 192.168.1.1 就行了。 其实有双 wan 口完全可以把两个光猫都改为桥接模式,两个 WAN 口拨号,得到双网关,之后的设置和上面一样。 如果联通线路一直用 vpn 的话,还可以联通光猫拨号,路由 WAN2 接光猫 LAN ,拨 vpn ,得到 vpn 网关,之后的设置和上面一样。 只要搞清楚哪个 IP 段走哪个网关,然后 iptables 配一下就很容易,原理就是这样 |
17
saeba1030 OP @Dxy00 感谢你提供另外一种思路,我这种方式的原理其实和你一样,只是路由结构上不同。我的已经实现,你的应该也可以,我就不折腾了 :D
|
18
saeba1030 OP @ooscrewyou 刷了 Merlin ,可以把任意一个 Lan 用作 wan2
|
19
saeba1030 OP @neroanelli
对比我们讨论的方案和附言里曲线救国中我提到的可以走通的默认联通路由表 table 200 ,区别就是多了一条: 116.227.88.1 dev ppp0 proto kernel scope link src 116.227.88.xxx #电信拨号公网 IP 百思不得其解为什么要有这句才会通,理论上这条电信线的路由不需要出现在这里。 所以我只能把黑锅扔给固件了 :D |
20
saeba1030 OP @XiaoxiaoPu
抱歉晚回复了,你的方案其实就是添加静态路由。这会使得路由表无比庞大,对 R7000 这种家用路由器来说负担太大了 |
21
ganxiao1986 2015-08-18 15:28:05 +08:00
|
22
XiaoxiaoPu 2015-08-18 18:31:44 +08:00 via Android
@saeba1030 linux 路由效率很高,即使是路由器也可以高效转发,只是加载路由表比较慢而已
|
23
neroanelli 2015-08-18 22:40:27 +08:00 via Android
@saeba1030 恩,用的是 op 的固件,可能有些差异。我的实现方案和 @ganxiao1986 的差不多。我现在是 3 拨均衡以及一条 L2TP/IPsec 线路,很稳定。
|