xuxi3201 发表于 2024-11-17 10:59:18

详细说ros的FWD功能用来你想要的上网

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

cspm333 发表于 2024-11-18 02:40:32

本帖最后由 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。
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新增:
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。

xuxi3201 发表于 2024-11-18 09:57:18

本帖最后由 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/16dst-address-list= ! list-cnout-interface=ether1 (本地出口)就drop
.
本方案已经使用一周
.

cspm333 发表于 2024-11-18 11:03:40

本帖最后由 cspm333 于 2024-11-18 11:07 编辑

如果 src-address=192.168.0.0/16dst-address-list= ! list-cnout-interface=ether1 (本地出口)就drop


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

xuxi3201 发表于 2024-11-18 13:35:29

谢谢   优化

xuxi3201 发表于 2024-11-19 14:45:42

本帖最后由 xuxi3201 于 2024-11-19 23:33 编辑

cspm333 发表于 2024-11-18 11:03
其實還有更簡潔暴力的方法,/ip firewall nat的ether1偽裝只要改成:
這樣只要非list-cn的都無法從ether ...

请问 正規表示式 效率高吗


cspm333 发表于 2024-11-19 21:57:41

本帖最后由 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一樣,是由上而下依序作業)

页: [1]
查看完整版本: 详细说ros的FWD功能用来你想要的上网