返回列表 發帖

Tips and Tricks for Beginners and Experienced Users of RouterOS

Source: https://wiki.mikrotik.com/wiki/T ... d_Users_of_RouterOS

如果大家新的RouterOS用家,有空看看上面的链接。

本帖最後由 vpn-learner 於 2019-2-23 16:57 編輯

回復 1# 角色

参考了以上的网址,想学习一下 Firewall filter rules 的规则,请教师兄一下:

图中的scripts 写上  chain=input  和 chain=forward  是有什么区别呢? 谢谢!



什么时候是用 chain=input 或者 chain=forward ?
附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

TOP

本帖最後由 角色 於 2019-3-3 00:30 編輯

哈哈!正想发一副图片给你看,你同样的问题就来了。

请你看看下图:



上面包含firewall and nat。

network interface就是我们的LAN port,local process就是我们higher level application (process).

Chains总共有prerouting,forward,input,output,postrouting。
Tables(of rules)有raw,connection tracking,mangle,nat,filter。

一般他们都有特定的功能,很少所有tables都出现所有的chains。

Input chain控制那么packets进入router里的process。

Forward chain是traffic rediect 到其他ports(因为router里的local process不需要做任何东西)。

还有以前firewall 和 nat是两个东西,因为就算我们把他们俩放在一起,都互不影响,因为各有自己的功能。
附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

TOP

本帖最後由 vpn-learner 於 2019-3-2 17:12 編輯

那我如何界定 那些chains 应走 forward?那些要走 input 呢? 很少见到有 chains走 output?
师兄可否给些例子?有些例子可能比较容易明白,(尤其是我们这些小小白),

谢谢!

TOP

The following link will answer most of your questions.

https://www.booleanworld.com/depth-guide-iptables-linux-firewall/

TOP

本帖最後由 gfx86674 於 2019-3-4 03:08 編輯

routeros架構是衍生自linux。

input與output是形容自己連線的進和出。
在linux上的自己當然是指目前當下所操作的計算機,
而routeros上的自己當然是指router他自己,決非第二人。

而forward則是指router所經手的。
所以只要來源與目地都與router內外ip無關,卻需借router管理,
鏈的選擇一律使用forward。

而與router有關,就要選擇正確的鏈。
input為輸入,所以此時router ip只能定義在目的(dst)的位置。
若鏈定義在input,router ip卻放在來源(src),這行rule會無效。

同樣鏈為output時,router ip只能放在來源(src)。
不依規定同樣rule是不會起作用的。

TOP

本帖最後由 vpn-learner 於 2019-3-4 13:08 編輯

回復 6# gfx86674

恕我不懂,我以为上网的所有数据都是经 Router 来处理的,那有什么 來源與目地都與router內外ip無關?
附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

TOP

本帖最後由 gfx86674 於 2019-3-4 16:51 編輯

回復 7# vpn-learner
來源(src) -> 目的(dst)

假設Router有安裝vpn server,
手機想對Router進行vpn連線,路徑即:手機(src) -> Router(dst)
因Router是負責接收,所以鏈的選擇一定是input,選output邏輯很怪對吧

因Router是放在接收的位置,所以設定Router ip時一定是在目的地方。
所以鏈選擇input,Router ip卻定義在來源(src ,原本應該是手機的位置)一樣是邏輯不通。

反向思考:Router收到連線要求,要回應手機。這時路徑會變成Router(src) -> 手機(dst)
這時Router是負責發送,所以鏈的選擇一定是output,您不會去選擇input的。

因Router是放在發送的位置,所以設定Router ip時一定是在來源方。
因鏈選擇output,所以Router ip您也不會定義在目的,否則邏輯也是不會通的。

以上都由Router負責主接收和傳送,所以有input與output區別。
如果手機vpn連線對象變成後端的Nas,Router只是個過程...這時候的路徑
就變為:手機(src) -> Router -> Nas(dst)
反之:Nas(src) -> Router -> 手機(dst)

不管方向怎換Router都既不是來源,也不是目的...
這時候我們用鏈forward代表Router目前的工作,中繼的意思。

綜合上述鏈(chain)的目的,即在告知Router開放或攔截封包時,
是應在輸入端(input),輸出端(output),中繼端(forward)進行工作。就這樣

TOP

本帖最後由 vpn-learner 於 2019-3-4 21:17 編輯

根据上例,手机与router 连接时,是否同时需要有 input 和 output的这两条rules?
我这个想法对的吗?

如果是连接 IPcam 这类的设备, 由手机远程控制 或 观看 IPcam 的画面, 那 IPcam 的 chain 应该是用什么呢?
手机的chain又是否如师兄的例子一样?

先谢谢了!

TOP

本帖最後由 gfx86674 於 2019-3-5 00:44 編輯

回復 9# vpn-learner
這就是重點了,手機連線Router
封包交換整個流程必是:手機 -> Router -> 手機
所以Router在接收時是當輸入端(input);傳回手機時,Router則變成輸出端(output)

所以要讓陌生人手機對Router的vpn連線無效,做法很簡單:
不是讓Router收不到手機信號,要不然就是讓Router回應送不回手機去。

假設陌生人手機地址是123.123.123.123

1.讓Router收不到手機信號:
action=drop chain=input src-address=123.123.123.123
Router當輸入端時,阻止來源(src)地址123.123.123.123進行連接

2.讓Router無法回覆手機
action=drop chain=output dst-address=123.123.123.123
Router當輸出端時,阻止回應目的(dst)地址為123.123.123.123的裝置

只要做任一項都會讓流程中斷,讓封包無法交換達到封阻目的。
所以您說只要挑一個做是肯定的,正確的。
————————————————————————————————————
若是IPCam,因流程是:手機 -> Router -> IPCam -> Router -> 手機
同樣不是讓IPCam收不到手機信號,要不然就是讓IPCam回應送不回手機去。

假設陌生人手機地址是123.123.123.123

1.讓IPCam收不到手機信號:
action=drop chain=forward src-address=123.123.123.123
Router當中繼端時,阻止來源(src)地址123.123.123.123進行轉發

2.讓IPCam無法回覆手機
action=drop chain=forward dst-address=123.123.123.123
Router當中繼時,阻止目的(dst)地址123.123.123.123進行轉發

您有注意到嗎?
阻止轉發比您想像單純的多,幾乎不用分來源(src)或目的(dst)。
幾乎是只要讓Router認出123.123.123.123,就一律阻殺。

但背後涵義其實還是有所不同:
一個是Router不轉發手機的連接信號;另一個則是Router不轉發IPCam的回覆信號。

TOP

谢谢师兄, 我又明白多一点了!

TOP

返回列表