国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 操作系統(tǒng) > 正文

iptables詳解

2024-06-28 13:19:16
字體:
供稿:網(wǎng)友
iptables詳解

Netfilter包含有三種表,三種表下共包含有五種鏈,鏈下面包含各種規(guī)則。即表包含若干鏈,鏈包含若干規(guī)則。(一)三種表為:filternat mangle

1、filter:處理與本機(jī)有關(guān)的數(shù)據(jù)包,是默認(rèn)表,包含有三種鏈:inputoutput forward2、nat表:與本機(jī)無關(guān)。主要處理源與目的地址IP和端口的轉(zhuǎn)換。有三種鏈:PReroutingpostrouting output3、mangle表:用于高級路由信息包,如包頭內(nèi)有更改(如tos改變包的服務(wù)類型,ttl包的生存時間,mark特殊標(biāo)記)。有兩種鏈:preroutingoutput (kernel 2.4.18后又加了兩種鏈:inputforward)這種表很少使用。 (二)五種鏈1、prerouting:進(jìn)入netfilter后的數(shù)據(jù)包在進(jìn)入路由判斷前執(zhí)行的規(guī)則。改變包。2、Input:當(dāng)經(jīng)過路由判斷后,要進(jìn)入本機(jī)的數(shù)據(jù)包執(zhí)行的規(guī)則。3、output:由本機(jī)產(chǎn)生,需向外發(fā)的數(shù)據(jù)包執(zhí)行的規(guī)則。4、forward:經(jīng)過路由判斷后,目的地不是本機(jī)的數(shù)據(jù)包執(zhí)行的規(guī)則。與nat 和mangle表相關(guān)聯(lián)很高,與本機(jī)沒有關(guān)聯(lián)。5、postrouting:經(jīng)過路由判斷后,發(fā)送到網(wǎng)卡接口前。即數(shù)據(jù)包準(zhǔn)備離開netfilter時執(zhí)行的規(guī)則。上圖中,運(yùn)行中的守護(hù)進(jìn)程,是指本機(jī)。Input的包都會發(fā)到本機(jī)。本機(jī)處理后再經(jīng)output 發(fā)出去。(三)數(shù)據(jù)包進(jìn)入netfilter后的經(jīng)過圖:1、數(shù)據(jù)包進(jìn)入linux服務(wù)器入接口,接口把數(shù)據(jù)包發(fā)往netfilter,數(shù)據(jù)包就此進(jìn)入netfilter。2、經(jīng)prerouting處理,(如是否需要更改數(shù)據(jù)包的源IP地址等)3、數(shù)據(jù)包到路由,路由通過路由表判斷數(shù)據(jù)包的目的地。如果目的地是本機(jī),就把數(shù)據(jù)包轉(zhuǎn)給intput處理后進(jìn)入本機(jī)。如果目的地不是本機(jī),則把數(shù)據(jù)包轉(zhuǎn)給forward處理。4、數(shù)據(jù)包通過forward處理后,再轉(zhuǎn)給postrouting處理,(是否有目標(biāo)地址需要改變等),處理后數(shù)據(jù)包就出了netfilter,到linux服務(wù)器出接口,就出了linux服務(wù)器。5、如果數(shù)據(jù)包進(jìn)了本機(jī)后經(jīng)過處理需要外發(fā)數(shù)據(jù)包,或本機(jī)自身有數(shù)據(jù)包需要外發(fā),就把數(shù)據(jù)包發(fā)給output鏈進(jìn)行處理后,轉(zhuǎn)給postrouting處理后,出linux服務(wù)器。進(jìn)入外面的花花世界。 (四)規(guī)則的執(zhí)行順序當(dāng)數(shù)據(jù)包進(jìn)入netfilter,就會和里面的規(guī)則進(jìn)行對比。規(guī)則是有順序的。先和規(guī)則1對比,如果和規(guī)則1相匹配,被規(guī)則1接受(accept),則數(shù)據(jù)將不再和后面的規(guī)則進(jìn)行對比。如果不匹配,則按順序和后面的規(guī)則進(jìn)行對比,直到被接受。如果所有的規(guī)則都不匹配,則進(jìn)行默認(rèn)策略操作,以決定數(shù)據(jù)包的去向。所以規(guī)則的順序很重要。IPTABLE主要是理解上面的內(nèi)容,一些詳細(xì)參數(shù)可以見附件中的指南。 二、iptalbe語法及參數(shù)iptable [-t table] command [chain] [match][-j target]注釋:iptable [-t 表名] -命令 [鏈接] [匹配] [-j 動作/目標(biāo)](一) table (表)1、filter表:默認(rèn)用filter表執(zhí)行所有的命令。只操作與本機(jī)有關(guān)的數(shù)據(jù)包。2、nat表:主要用于NAT地址轉(zhuǎn)換。只有數(shù)據(jù)流的第一個數(shù)據(jù)包被這個鏈匹配,后面的包會自動做相同的處理。 分為:DNAT(目標(biāo)地址轉(zhuǎn)換)、SNAT(源地址轉(zhuǎn)換)、MASQUERADE(1)DNAT操作主要用在這樣一種情況,你有一個合法的IP地址,要把對防火墻的訪問重定向到其他的機(jī)子上(比如DMZ)。也就是說,我們改變的是目的地址,以使包能重路由到某臺主機(jī)。(2)SNAT 改變包的源地址,這在極大程度上可以隱藏你的本地網(wǎng)絡(luò)或者DMZ等。內(nèi)網(wǎng)到外網(wǎng)的映射。(3)MASQUERADE的作用和SNAT完全一樣,只是計算機(jī)的負(fù)荷稍微多一點。因為對每個匹配的包,MASQUERADE都要查找可用的IP地址,而不象SNAT用的IP地址是配置好的。當(dāng)然,這也有好處,就是我們可以使用通過PPP、PPPOE、SLIP等撥號得到的地址,這些地址可是由ISP的DHCP隨機(jī)分配的。3、mangle表:用來改變數(shù)據(jù)包的高級特性,一般不用。(二) command(命令)詳解1、 -A或者--append//將一條或多條規(guī)則加到鏈尾2、 -D或者--delete//從鏈中刪除該規(guī)則3、 -R或者--replace //從所選鏈中替換一條規(guī)則4、-L或者--list//顯示鏈的所有規(guī)則5、 -I或者--inset//根據(jù)給出的規(guī)則序號,在鏈中插入規(guī)則。按序號的順序插入,如是 “1”就插入鏈?zhǔn)?、 -X或者--delete-chain//用來刪除用戶自定義鏈中規(guī)則。必須保證鏈中的規(guī)則都不在使用時才能刪除鏈。如沒有指定鏈,將刪除所有自定義鏈中的規(guī)則。7、-F或者--flush//清空所選鏈中的所有規(guī)則。如指定鏈名,則刪除對應(yīng)鏈的所有規(guī)則。如沒有指定鏈名,則刪除所有鏈的所有規(guī)則。8、-N或者--new-chain//用命令中所指定的名字創(chuàng)建一個新鏈。9、-P或者--policy//設(shè)置鏈的默認(rèn)目標(biāo),即策略。 與鏈中任何規(guī)則都不匹配的信息包將強(qiáng)制使用此命令中指定的策略。10、-Z或者--zero//將指定鏈中的所有規(guī)則的包字節(jié)計數(shù)器清零。(三) match 匹配分為四大類:通用匹配、隱含匹配、顯示匹配、針對非正常包的匹配1、通用匹配 無論我們使用何種協(xié)議,裝入何種擴(kuò)展,通用匹配都可以使用。不需要前提條件(1) -p(小寫)或--protocol用來檢查某些特定協(xié)議。協(xié)議有TCP/UDP/ICMP三種??捎枚禾柗珠_這三種協(xié)議的任何組合。也可用“!”號進(jìn)行取反,表示除該協(xié)議外的剩下的協(xié)議。也可用all表示全部協(xié)議。默認(rèn)是all,但只代表tcp/udp/icmp三種協(xié)議。$ iptable -A INPUT -p TCP,UDP$ iptable -A INPUT -p !ICMP//這兩種表示的意思為一樣的。(2) -s 或 --source以Ip源地址匹配包。根據(jù)源地址范圍確定是否允許或拒絕數(shù)據(jù)包通過過濾器??墒褂?ldquo;!”符號。 默認(rèn)是匹配所有ip地址。可是單個Ip地址,也可以指定一個網(wǎng)段。 如:192.168.1.1/255.255.255.255表示一個地址。 192.168.1.0/255.255.255.0表示一個網(wǎng)段。(3) -d 或--destination用目的Ip地址來與它們匹配。與 source 的格式用法一樣(4) -i 以包進(jìn)入本地所使用的網(wǎng)絡(luò)接口來匹配包。只能用INPUT / FORWARD/PREROUTING 三個鏈中。用在其他任何鏈中都會出錯。 可使用“+” “!”兩種符號。 只用一個“+"號,表示匹配所有的包,不考慮使用哪個接口。如: iptable -AINPUT -i + //表匹配所有的包。放在某類接口后面,表示所有此類接口相匹配。如:iptable -A INPUT -i eth+//表示匹配所有ethernet 接口。(5)-o 以數(shù)據(jù)包出本地所使用的網(wǎng)絡(luò)接口來匹配包。與-i一樣的使用方法。 只能用OUTPUT / FORWARD /POSTROUTING三個鏈中。用在其他任何鏈中都會出錯。 可使用“+” “!”兩種符號。(6) -f (或--fragment )用來匹配一個被分片的包的第二片或以后的部分。因一個數(shù)據(jù)包被分成多片以后,只有第一片帶有源或目標(biāo)地址。后面的都不帶,所以只能用這個來匹配??煞乐顾槠簟?strong>2、隱含匹配 這種匹配是隱含的,自動的載入內(nèi)核的。如我們使用 --protocoltcp 就可以自動匹配TCP包相關(guān)的特點。 分三種不同協(xié)議的隱含匹配:tcpudp icmp 2.1 tcpmatchtcp match 只能隱含匹配TCP包或流的細(xì)節(jié)。但必須有 -p tcp 作為前提條件。 (2.1.1) TCP--sport基于tcp包的源端口匹配包 ,不指定此項則表示所有端口。iptable -A INPUT -p TCP--sport22:80 //TCP源端口號22到80之間的所有端口。iptable -A INPUT -p TCP--sport22://TCP源端口號22到65535之間的所有端口。 (2.1.2) TCP--dport基于tcp包的目的端口來匹配包。 與--sport端口用法一樣。 (2.1.3) TCP--flags匹配指定的TCP標(biāo)記。iptable -p TCP --tcp-flagsSYN,FIN,ACK SYN 2.2 UDPmatch(2.1.1) UDP --sport基于UDP包的源端口匹配包 ,不指定此項則表示所有端口。(2.1.1) UDP --dport基于UDP包的目的端口匹配包 ,不指定此項則表示所有端口。 2.3 icmpmatchicmp --icmp-type根據(jù)ICMP類型包匹配。類型 的指定可以使用十進(jìn)制數(shù)或相關(guān)的名字,不同的類型,有不同的ICMP數(shù)值表示。也可以用“!”取反。例:iptable -A INPUT -p icmp-imcp-type8 3、顯示匹配 顯示匹配必須用 -m裝載。 (1)limitmatch必須用 -m limit 明確指出??梢詫χ付ǖ囊?guī)則的匹配次數(shù)加以限制。即,當(dāng)某條規(guī)則匹配到一定次數(shù)后,就不再匹配。也就是限制可匹配包的數(shù)量。這樣可以防止DOS攻擊。限制方法: 設(shè)定對某條規(guī)則 的匹配最大次數(shù)。設(shè)一個限定值 。當(dāng)?shù)竭_(dá)限定值以后,就停止匹配。但有個規(guī)定,在超過限制次數(shù)后,仍會每隔一段時間再增加一次匹配次數(shù)。但增加的空閑匹配數(shù)最大數(shù)量不超過最大限制次數(shù)。--limit rate最大平均匹配速率:可賦的值有'/second', '/minute', '/hour', or'/day'這樣的單位,默認(rèn)是3/hour。--limit-burst number待匹配包初始個數(shù)的最大值:若前面指定的極限還沒達(dá)到這個數(shù)值,則概數(shù)字加1.默認(rèn)值為5 iptable -A INPUT -m limit--limt 3/hour//設(shè)置最大平均匹配速率。也就是單位時間內(nèi),可匹配的數(shù)據(jù)包個數(shù)。 --limt 是指定隔多長時間發(fā)一次通行證。 iptable -A INPUT -mlimit --limit-burst 5 //設(shè)定剛開始發(fā)放5個通行證,也最多只可匹配5個數(shù)據(jù)包。 (2) mac match只能匹配MAC源地址?;诎腗AC源地址匹配包 iptable -A INPUT -mmac --mac-source00:00:eb:1c:24//源地址匹配些MAC地址 (3) markmatch以數(shù)據(jù)包被 設(shè)置的MARK來匹配包。這個值由 MARK TARGET 來設(shè)置的。 (4) multiport match這個模塊匹配一組源端口或目標(biāo)端口,最多可以指定15個端口。只能和-p tcp 或者 -p udp 連著使用。多端口匹配擴(kuò)展讓我們能夠在一條規(guī)則里指定不連續(xù)的多個端口。如果沒有這個擴(kuò)展,我們只能按端口來寫規(guī)則了。這只是標(biāo)準(zhǔn)端口匹配的增強(qiáng)版。不能在一條規(guī)則里同時用標(biāo)準(zhǔn)端口匹配和多端口匹配。三個選項:--source-port ;--destination-port ; --portiptable -A INPUT -p TCP-m multiport --source-port22,28,115iptable -A INPUT -p TCP-m multiport --destination-port22,28,115iptable -A INPUT -p TCP-m multiport --port 22,28,115 (5) state match狀態(tài)匹配擴(kuò)展要有內(nèi)核里的連接跟蹤代碼的協(xié)助。因為是從連接跟蹤機(jī)制得到包的狀態(tài)。這樣不可以了解所處的狀態(tài)。(6) tos match根據(jù)TOS字段匹配包,用來控制優(yōu)先級。(7) ttlmatch根據(jù)IP頭里的TTL字段來匹配包。用來更改包的TTL,有些ISP根據(jù)TTL來判斷是不是有多臺機(jī)器共享連接上網(wǎng)。 iptables -t mangle -A PREROUTING -i eth0-j TTL --ttl-set 64 iptables -t mangle -A PREROUTING -i eth0 -jTTL --ttl-dec 1 # 離開防火墻的時候?qū)嶋H上TTL已經(jīng)-2了,因為防火墻本身要-1一次。 iptables -t mangle -A PREROUTING -i eth0 -jTTL --ttl-inc 1 # 離開防火墻的時候不增不減,tracert就不好用了,呵呵。(8) owner match基于包的生成者(即所有者或擁有者)的ID來匹配包。owner 可以是啟動進(jìn)程的用戶的ID,或用戶所在的級的ID或進(jìn)程的ID,或會話的ID。此只能用在OUTPUT 中。此模塊設(shè)為本地生成包匹配包創(chuàng)建者的不同特征。而且即使這樣一些包(如ICMP ping應(yīng)答)還可能沒有所有者,因此永遠(yuǎn)不會匹配。--uid-owner userid如果給出有效的user id,那么匹配它的進(jìn)程產(chǎn)生的包。--gid-owner groupid如果給出有效的group id,那么匹配它的進(jìn)程產(chǎn)生的包。--sid-owner seessionid根據(jù)給出的會話組匹配該進(jìn)程產(chǎn)生的包。( 四) targets/jump 指由規(guī)則指定的操作,對與規(guī)則匹配的信息包執(zhí)行什么動作。 1、accept這個參數(shù)沒有任何選項。指定 -j accept 即可。一旦滿足匹配不再去匹配表或鏈內(nèi)定義的其他規(guī)則。但它還可能會匹配其他表和鏈內(nèi)的規(guī)則。即在同一個表內(nèi)匹配后就到上為止,不往下繼續(xù)。2、drop-j drop 當(dāng)信息包與規(guī)則完全匹配時,將丟棄該包。不對它做處理。并且不向發(fā)送者返回任何信息。也不向路由器返回信息。3、reject與drop相同的工作方式,不同的是,丟棄包后,會發(fā)送錯誤信息給發(fā)送方。 iptables -A FORWARD -p TCP --dport 22 -jREJECT --reject-with icmp-net-unreachable4、DNAT用在prerouting鏈上。做目的網(wǎng)絡(luò)地址轉(zhuǎn)換的。就是重寫目的的IP地址。如果一個包被匹配,那么和它屬于同一個流的所有的包都會被自動轉(zhuǎn)換。然后可以被路由到正確的主機(jī)和網(wǎng)絡(luò)。也就是如同防火墻的外部地址映射。把外部地址映射到內(nèi)部地址上。iptables -t nat -APREROUTING -d 218.104.235.238 -pTCP --dport 110,125 -jDNAT --to-destination 192.168.9.1//把所有訪問218.104.235.238地址 110.125端口的包全部轉(zhuǎn)發(fā)到192.168.9.1上。--to-destination //目的地重寫5、SNAT用在nat 表的postrouting鏈表。這個和DNAT相反。是做源地址轉(zhuǎn)換。就是重寫源地址IP。常用在內(nèi)部網(wǎng)到外部網(wǎng)的轉(zhuǎn)換。--to-sourceiptables -t nat POSTROUTING -o eth0 -p tcp-j SNAT --to-source 218.107.248.127//從eth0接口往外發(fā)的數(shù)據(jù)包都把源地址重寫為218.107.248.127******************** iptables -t nat -A PREROUTING -p tcp -d15.45.23.67 --dport 80 -j DNAT --to-destination 192.168.1.9 #將所有的訪問15.45.23.67:80端口的數(shù)據(jù)做DNAT發(fā)到192.168.1.9:80如果和192.168.1.9在同一內(nèi)網(wǎng)的機(jī)器要訪問15.45.23.67,防火墻還需要做設(shè)置,改變源IP為防火墻內(nèi)網(wǎng)IP192.168.1.1。否則數(shù)據(jù)包直接發(fā)給內(nèi)網(wǎng)機(jī)器,對方將丟棄。 iptables -t nat -A POSTROUTING -p tcp --dst15.45.23.67 --dport 80 -j SNAT --to-source 192.168.1.1 #將所有的訪問15.45.23.67:80端口的數(shù)據(jù)包源IP改為192.168.1.1如果防火墻也需要訪問15.45.23.67:80,則需要在OUTPUT鏈中添加,因為防火墻自己發(fā)出的包不經(jīng)過PREROUTING。 iptables -t nat -A OUTPUT --dst 15.45.23.67--dport 80 -j DNAT --to-destination 192.168.1.9********************6、MASQUERADEmasquerade 的作用和 SNAT的作用是一樣的。區(qū)別是,他不需要指定固定的轉(zhuǎn)換后的IP地址。專門用來設(shè)計動態(tài)獲取IP地址的連接的。MASQUERADE的作用是,從服務(wù)器的網(wǎng)卡上,自動獲取當(dāng)前ip地址來做NAT如家里的ADSL上網(wǎng),外網(wǎng)的IP地址不是固定的,你無法固定的設(shè)定NAT轉(zhuǎn)換后的IP地址。這時就需要用masquerade來動態(tài)獲取了。iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -jmasquerade//即把192.168.1.0 這個網(wǎng)段的地址都重寫為動態(tài)的外部IP地址。7、REDIRECT只能在NAT表中的PREROUTING OUTPUT 鏈中使用在防火墻所在的機(jī)子內(nèi)部轉(zhuǎn)發(fā)包或流到另一個端口。比如,我們可以把所有去往端口HTTP的包REDIRECT到HTTPproxy(例如squid),當(dāng)然這都發(fā)生在我們自己的主機(jī)內(nèi)部。--to-portsiptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT--to-ports 8080不使用這個選項,目的端口不會被改變。指定一個端口,如--to-ports 8080指定端口范圍,如--to-ports 8080-80908、RETURN顧名思義,它使包返回上一層,順序是:子鏈——>父鏈——>缺省的策略。具體地說,就是若包在子鏈中遇到了RETURN,則返回父鏈的下一條規(guī)則繼續(xù)進(jìn)行條件的比較,若是在父鏈(或稱主鏈,比如INPUT)中遇到了RETURN,就要被缺省的策略(一般是ACCEPT或DROP)操作了。(譯者注:這很象C語言中函數(shù)返回值的情況)9、MIRROR顛倒IP頭中的源地址與目的地址,再轉(zhuǎn)發(fā)。10、LOG在內(nèi)核空間記錄日志,dmesg等才能看。11、ULOG在用戶空間記錄日志。(五)IP轉(zhuǎn)發(fā)功能打開轉(zhuǎn)發(fā)IP功能(IP forwarding):echo "1" > /proc/sys/net/ipv4/ip_forward如果使用PPP、DHCP等動態(tài)IP,需要打開:echo "1" > /proc/sys/net/ipv4/ip_dynaddr本文轉(zhuǎn)載自http://www.server110.com/linux/201310/2242.html
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 遵义县| SHOW| 乌海市| 青州市| 美姑县| 无为县| 都昌县| 丰镇市| 美姑县| 永济市| 永顺县| 手机| 栾川县| 镇安县| 莆田市| 隆子县| 门源| 张家港市| 玛多县| 秦皇岛市| 台州市| 武宁县| 马公市| 墨江| 达州市| 北海市| 福鼎市| 南宫市| 晋城| 大姚县| 永嘉县| 夹江县| 新田县| 丰镇市| 浙江省| 庄河市| 岢岚县| 万荣县| 汶川县| 广昌县| 抚顺市|