找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 118|回复: 6

[脚本] 详细说ros的FWD功能用来你想要的上网

[复制链接]
发表于 4 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
ros的FWD功能
1
首先,本地ROS用sstp连接到 hk-ros或者 tw-ros

2
/ip/firewall/address-list

添加 ip-list-cn 四千行

3
/ip/firewall/mangle

添加

add action=mark-routing chain=prerouting dst-address-list=hk-ros new-routing-mark=r8367 src-address=192.168.63.0/24



4

/ip route
添加
add distance=63 dst-address=0.0.0.0/0 gateway=192.168.169.69 routing-table=r8367



5

/ip dns static
添加
add address=127.0.0.1 disabled=yes name=upgrade.mikrotik.com ttl=9m type=A
add address-list=hk-ros comment=23.200.0.51 forward-to=192.168.169.69 match-subdomain=yes name=akamai.net type=FWD


参加以上这行添加所有的顶级域名

6

666
routeros
发表于 3 天前 | 显示全部楼层
本帖最后由 cspm333 于 2024-11-18 02:53 编辑

建議改一下免得出現漏洞,這個漏洞與pc裝置的dns cache有關。

FWD到hk-ros list後,address在hk-ros list的存放的時間與ros dns cache相關。
ros dns cache裡的ttl結束,剛存到hk-ros list裡的address也會跟著消失。

重點來了,pc裝置自己也有dns cache。也就是若pc 自己dns cache還有紀錄,他未必會去查詢ros dns。
爾後ros dns cache裡的ttl到期,hk-ros list的address消失...
因pc用自己的dns cache,所以ros因未被人查詢,hk-ros list並不會再次更新address。

hk-ros list內並沒有address登記,導致策略並不會往r8367去...


所以欠缺的是什麼?答案是中繼的list。

如:將FWD的list設為hk-tmp,而不是hk-ros。
  1. add address-list=hk-tmp comment=23.200.0.51 forward-to=192.168.169.69 match-subdomain=yes name=akamai.net type=FWD
复制代码

在/ip firewall raw新增:
  1. add action=add-dst-to-address-list address-list=hk-ros address-list-timeout=1d chain=prerouting dst-address-list=hk-tmp
复制代码
透過 action=add-dst-to-address-list這功能再重新抓一次相同的dst-address地址到hk-ros list。

但不同的是這次指定address在list裡的存放時間(1d),甚至設成static也行。
不用再理會ros dns cache影響list,也不用再擔pc因暫查詢自己的dns cache,導致ros 沒更新hk-ros list。
routeros
回复

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
本帖最后由 xuxi3201 于 2024-11-18 10:05 编辑

"address在hk-ros list的存放的時間與ros dns cache相關"
这个问题困扰了我三个月,后来发现了解决办法:
/ip dns
set address-list-extra-time=1h
.
.
and
我在 ip firewall filter增加了如下内容
如果 src-address=192.168.0.0/16  dst-address-list= ! list-cn  out-interface=ether1 (本地出口)  就drop
.
本方案已经使用一周
.

routeros
回复

使用道具 举报

发表于 3 天前 | 显示全部楼层
本帖最后由 cspm333 于 2024-11-18 11:07 编辑
  1. 如果 src-address=192.168.0.0/16  dst-address-list= ! list-cn  out-interface=ether1 (本地出口)  就drop
复制代码



其實還有更簡潔暴力的方法,/ip firewall nat的ether1偽裝只要改成:
  1. action=masquerade chain=srcnat out-interface=ether1 dst-address-list=list-cn
复制代码
這樣只要非list-cn的都無法從ether1出去,自然也無需透過firewall filter丟棄。

routeros
回复

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
谢谢   优化  
routeros
回复

使用道具 举报

 楼主| 发表于 前天 14:45 | 显示全部楼层
本帖最后由 xuxi3201 于 2024-11-19 23:33 编辑
cspm333 发表于 2024-11-18 11:03
其實還有更簡潔暴力的方法,/ip firewall nat的ether1偽裝只要改成:
這樣只要非list-cn的都無法從ether ...

  
请问 正規表示式 效率高吗


routeros
回复

使用道具 举报

发表于 前天 21:57 | 显示全部楼层
本帖最后由 cspm333 于 2024-11-19 22:29 编辑

1.我也和您操作相同,也是觀察3個多月,這方法自覺已經很棒了。

2.我曾特地找正則表示式網站驗證運算,原本以為沒問題。
但真的拿網站測試,發現高估ros正則運算能力,
簡單的運算可以,太複雜的FWD直接擺爛不工作...

正規表示的一些簡單使用,可套在FWD上:

.* 不如留白什都不加 (正規表示式的.* 相當萬用字元的*)
如: 比對.*abc =比對abc

^ 是正規表示比對開頭的字串
如:^yahoo 可匹配yahoo.co.jp,無法匹配tw.yahoo.com

$是正規表示比對結尾的字串
如:cn$ 可匹配www.sina.com.cn,無法匹配edition.cnn.com

()是正規表示的運算
如:abc.(com|net|org) 可匹配abc.com,可匹配www.abc.net,但不匹配123.org

與其運算第二個"."停止,不如FWD先安排有二個"."的先加其他到list,或者暫省缺。
剩下的再交給其他的FWD做(dns static和firewall rule一樣,是由上而下依序作業)

螢幕快照 2024-11-19 22-28-32.png
routeros
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-11-21 15:27 , Processed in 0.147247 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表