请教, ROS 在使用 OSPF 进行分流的前提下,如何使用路由标记实现白名单功能。

175 天前
 supemaomao

背景

ESXI 中安装了 ROS 与 OpenWrt,并且实现了 Op 通过 OSPF 下发路由表,使国外流量通过 OP 出口,内网流量直接通过 ROS 的 PPPoe 出口。

需求

部分国外地址,直接通过国内访问效果更好,比如巨硬相关的域名。所以需要实现一个白名单的功能,即虽然 OSPF 下发了这个地址需要通过 OP 出口,但是仍然通过 pppoe 直接出口。

尝试的措施

  1. 目前尝试通过路由标记,将需要白名单的地址放在了 ip/firewall/address-list 名为 DstallowGo 的 list 中

  2. 尝试标记 list 中的流量包

    chain=prerouting action=mark-routing new-routing-mark=white_list passthrough=no dst-address-list=DstallowGo in-interface-list=Lan log=no log-prefix=""

  3. 创建了如下的路由表

    As dst-address=0.0.0.0/0 routing-table=white_list pref-src="" gateway=pppoe-out1 immediate-gw=pppoe-out1 distance=5 scope=30 target-scope=10 suppress-hw-offload=no

    As dst-address=10.0.2.0/24 routing-table=white_list pref-src="" gateway=wireguard1 immediate-gw=wireguard1 distance=1 scope=30 target-scope=10 suppress-hw-offload=no

    As dst-address=192.168.2.0/24 routing-table=white_list pref-src="" gateway=bridge1 immediate-gw=bridge1 distance=1 scope=30 target-scope=10 suppress-hw-offload=no

  4. 检查 OSPF 默认的路由表,确保路由优先级,贴出一条 OSPF 的默认路由

    DAo dst-address=1.0.4.0/22 routing-table=main gateway=192.168.2.2%bridge1 immediate-gw=192.168.2.2%bridge1 distance=110 scope=20 target-scope=10 suppress-hw-offload=no

故障

上述设置完成后,在本地局域网访问特定的地址(即标记路由中的地址)总会提示连接重置。类似这样

ca@caserver:~$ curl -v 104.19.223.79
*   Trying 104.19.223.79:80...
* Connected to 104.19.223.79 (104.19.223.79) port 80 (#0)
> GET / HTTP/1.1
> Host: 104.19.223.79
> User-Agent: curl/7.81.0
> Accept: */*
> 
* Recv failure: Connection reset by peer
* Closing connection 0
curl: (56) Recv failure: Connection reset by peer
ca@caserver:~$  

期望

想请求一下有哪些地方设置有问题吗?或者怎么实现最开始的需求。谢谢各位指点 第一次码字,有格式错误还请多包涵。

1613 次点击
所在节点    宽带症候群
27 条回复
povsister
173 天前
今天算是把这坑美美的踩了一遍,之前朋友警告我说慎用 mark routing ,会和 fasttrack 撞起来。。今天给我现场撞死,查了一下午麻了。
OP 你这个问题,你看看把 filter 里的 fasttrack 规则关掉是不是就好了。

策略路由可以正常被 fasttrack ,mark routing 在 fasttrack 开启的情况下几乎不能正常工作,需要配合 mark connection 才行,建议 fasttrack 最好只工作在 no-mark 的连接上。
https://forum.mikrotik.com/viewtopic.php?f=2&t=134048&p=659612#p659676

总结,你这个问题简单,不要用 firewall 的 mark-routing 了,直接 ip rule 写策略路由即可
supemaomao
171 天前
@povsister 确实如此,我禁用了 filter 中的 fasttrack 以后,重启。其它任何变动都不做。
我的 mark-routing 就可以正常工作了,可以通过这个做白名单了。
不用 ip rule 写策略的原因是,有很多地址是域名。在 ip rule 里面要自己解析以后 写 ip ,多了一个操作。
我在研究一下搭配 mark-connection 并开启 fast-track 的情况下如何实现这个需求。感谢踩坑哈哈。
povsister
171 天前
@supemaomao
ip rule 是可以针对于来源 IP 写规则的,一般可以用来豁免某个内网设备走特殊逻辑。
但你要求是在目的 IP 里开白这个确实不太方便,得在防火墙上操作。

搭配 mark connection 的操作我上面贴的 mikrotik 的论坛帖子里有讲到,主要是 fasttrack 要明确应用于 no-mark 的连接,然后先 mark connection ,再 mark routing 就 ok 了。

我昨天试了下是可以的,但我现在用的方案 mark routing 和 ip rule 都可以,就干脆把 mark routing 删了只用 ip rule 了
supemaomao
171 天前
@povsister 是的,在目的 IP 里开白,就是有些麻烦,这个问题解决以后,就不折腾了。稳定用着就行了,后续就考虑 esxi 里面的虚拟机备份问题了。
supemaomao
171 天前
@onion83
@flynaj
@terrancesiu
@creepersssss
@bao3 已经解决了,感谢各位的回复。
flynaj
171 天前
sp670
168 天前
我以前是用 MARK ROUTING ,现在直接弃用 OSPF 了,还是有需要再用隧道好了

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

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

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

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

© 2021 V2EX