看了“[分享]ROS禁止PING 方法”這篇貼,覺(jué)得大家對(duì)routeros防火墻和基本的tcp/ip協(xié)議理解不是很好。這里說(shuō)說(shuō)自己的看法,以便供大家和我一起討論學(xué)習(xí)。
我喜歡routeros的一個(gè)理由是,routeros防火墻功能非常靈活。routeros防火墻屬于包過(guò)濾防火墻,你可以定義一系列的規(guī)則過(guò)濾掉發(fā)往routeros、從routeros發(fā)出、通過(guò)routeros轉(zhuǎn)發(fā)的數(shù)據(jù)包。在routeros防火墻中定義了三個(gè)防火墻(過(guò)濾)鏈(即input、forward、output),你可以在這三個(gè)鏈當(dāng)中定義你自己的規(guī)則。其中input意思是指發(fā)往routeros自己的數(shù)據(jù)(也就是目的ip是routeros接口中的一個(gè)ip地址);output意思是指從routeros發(fā)出去的數(shù)據(jù)(也就是數(shù)據(jù)包源ip是routeros接口中的一個(gè)ip地址);forward意思是指通過(guò)routeros轉(zhuǎn)發(fā)的(比如你內(nèi)部計(jì)算機(jī)訪問(wèn)外部網(wǎng)絡(luò),數(shù)據(jù)需要通過(guò)你的routeros進(jìn)行轉(zhuǎn)發(fā)出去)。
象“[分享]ROS禁止PING 方法”貼子中說(shuō)到禁止ping routeros,我們一般需要在input鏈中添加規(guī)則,因?yàn)閿?shù)據(jù)包是發(fā)給routeros的,數(shù)據(jù)包的目標(biāo)ip是routeros的一個(gè)接口ip地址。
(當(dāng)然如果你硬是要在output里建立一條規(guī)則過(guò)濾掉icmp信息也能做到ping不通,當(dāng)你ping的數(shù)據(jù)包到達(dá)routeos時(shí),routeos能接收這個(gè)數(shù)據(jù)包并做出回應(yīng),當(dāng)routeros回應(yīng)給你的包要發(fā)出去的時(shí)候會(huì)檢查output的規(guī)則并過(guò)濾掉回應(yīng)你的包。)
在每條鏈中的每條規(guī)則都有目標(biāo)ip,源ip,進(jìn)入的接口(in interface),非常靈活的去建立規(guī)則。比如“[分享]ROS禁止PING 方法”中禁止外網(wǎng)ping你routeros,只需要在in interface中選擇你連外部網(wǎng)絡(luò)的接口。禁止內(nèi)部ping的話可以選擇連你內(nèi)部網(wǎng)絡(luò)的接口。如果禁止所有的ping的話,那么接口選擇all。當(dāng)然禁止ping 協(xié)議要選擇icmp ,action選擇drop或reject。
另外要注意的就是,icmp協(xié)議并不是就指的是ping,而是 ping是使用icmp協(xié)議中的一種(我們ping 出去發(fā)送的數(shù)據(jù)包icmp協(xié)議的類型為8 代碼為0,在routeros中寫為icmp-options=8:0;而我們對(duì)ping做出回應(yīng)icmp類型為0 代碼為0),還有很多東西也屬于icmp協(xié)議。打個(gè)比方,如果你禁止內(nèi)部網(wǎng)絡(luò)ping所有外部網(wǎng)絡(luò),可以在forward鏈中建立一條規(guī)則,協(xié)議為icmp,action為drop,其他默認(rèn),那么你內(nèi)部網(wǎng)絡(luò)ping不通外部任何地址,同時(shí)如果你用trancroute命令跟蹤路由也跟蹤不了。在做規(guī)則是要注意每一個(gè)細(xì)節(jié)。
還有就是,input,output,forward三條鏈在routeros中默認(rèn)都是允許所有的數(shù)據(jù)。也就是除非你在規(guī)則中明確禁止,否則允許??梢酝ㄟ^(guò)ip firewall set input policy=drop等進(jìn)行修改默認(rèn)策略。