本篇接著介紹網絡相關命令
1、wget 文件下載工具
wget?[option]...?[URL]...?wget是一個非交互的下載器,支持HTTP, HTTPS和FTP協議,也可以使用代理。所謂'非交互'意思是說,可以在一個系統中啟動一個wget下載任務,然后退出系統,wget會在完成下載(或出現異常)之后才退出,不需要用戶參與。
[root@centos7?temp]#?wget?http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-6/v6.0.47/bin/apache-tomcat-6.0.47.tar.gz??正在解析主機?mirrors.tuna.tsinghua.edu.cn?(mirrors.tuna.tsinghua.edu.cn)...?166.111.206.63,?2402:f000:1:416:166:111:206:63?正在連接?mirrors.tuna.tsinghua.edu.cn?(mirrors.tuna.tsinghua.edu.cn)|166.111.206.63|:80...?已連接。?已發出?HTTP?請求,正在等待回應...?200?OK?長度:7084545?(6.8M)?[application/octet-stream]?正在保存至:?“apache-tomcat-6.0.47.tar.gz”??100%[===========================================================>]?7,084,545???2.28MB/s?用時?3.0s????? 2016-11-15?12:16:27?(2.28?MB/s)?-?已保存?“apache-tomcat-6.0.47.tar.gz”?[7084545/7084545])??命令的執行會經過域名解析、建立連接、發送請求、保存文件等過程,wget還會顯示下載進度條,包括下載百分比、大小、速度、用時。下載完成后顯示完成時間、保存文件名、下載大小/總大小。
選項-q表示禁止輸出
選項-b表示后臺執行
選項-r表示遞歸下載
選項-o logfile表示將輸出保存到文件logfile中
選項-i file表示從file中讀取URL并進行下載
選項-O file表示下載文件保存至file
選項-c斷點續傳,當下載一個大文件時使用此選項,如果碰到網絡故障,可以從已經下載的部分開始繼續下載未完成的部分。
選項--limit-rate=amount下載限速,amount可以以k,m等為后綴表示速率為KB/s和MB/s。
選項--user-agent指定用戶代理
選項--user和選項--password指定用戶和密碼
選項--load-cookies file和選項--save-cookies file分別表示使用和保存文件中的cookies。
選項--accept list和選項--reject list表示接受或排除list中所列文件。list中用逗號分隔每個文件名的后綴。注意如果list中包含shell通配符(* ? [...]),將作為一個模式匹配,而不是文件后綴名。
2、curl 網絡數據傳輸工具
curl?[options]?[URL...]?curl同樣也可以做為文件下載工具,和wget相比,curl支持更多的協議,在指定下載URL時支持序列或集合。但curl不支持遞歸下載。
curl的URL可以表示成如下格式:
#可以將幾個個字符串放到大括號里用逗號分隔來表示多個URL?http://site.{one,two,three}.com?#可以將字母數字序列放在[]中表示多個文件或URL(和shell通配符類似但并不相同)?ftp://ftp.numericals.com/file[1-100].txt?ftp://ftp.numericals.com/file[001-100].txt?ftp://ftp.letters.com/file[a-z].txt?#還能用冒號:n表示在序列中每隔n個取一個值?http://www.numericals.com/file[1-100:10].txt?http://www.letters.com/file[a-z:2].txt?#不支持大括號和中括號的嵌套,但可以在一條URL中分開同時使用它們? http://any.org/archive[1996-1999]/vol[1-4]/part{a,b,c}.html??選項-C offset表示從斷點(offset)的位置繼續傳輸,其中offset是個數字,單位為bytes。使用-C -時,curl會自動在給定的文件中找出斷點。
選項-o file表示下載文件保存至file(注意wget使用的是-O)
選項-O表示保存為文件的原始名字
選項-s忽略下載進度顯示
選項--limit-rate speed指定下載速度,默認單位為bytes/s,可以使用k/K,m/M,g/G后綴。
還可以指定許多其他下載相關的選項,這里不再一一介紹。
當curl沒有其他選項時,會將頁面內容輸出至標準輸出。
選項-I表示只獲得HTTP頭信息:
[root@centos7?~]#?curl?-I?www.baidu.com?HTTP/1.1?200?OK?Server:?bfe/1.0.8.18?Date:?Tue,?15?Nov?2016?07:20:50?GMT?Content-Type:?text/html?Content-Length:?277?Last-Modified:?Mon,?13?Jun?2016?02:50:02?GMT?Connection:?Keep-Alive?ETag:?"575e1f5a-115"?Cache-Control:?private,?no-cache,?no-store,?proxy-revalidate,?no-transform?Pragma:?no-cache? Accept-Ranges:?bytes??選項-w format按格式輸出。
#如獲得HTTP狀態碼:?[root@centos7?~]#?curl?-s?-w?"%{http_code}\n"?www.baidu.com?-o?/dev/null??200?[root@centos7?~]#?#如獲得服務器端IP地址:?[root@centos7?~]#?curl?-s?-w?"%{remote_ip}\n"?www.baidu.com?-o?/dev/null??????????61.135.169.125? [root@centos7?~]#??選項-X METHOD指定http請求方法
選項-L 當指定的URL被重定向時(http狀態碼為3xx),使用-L會使curl重新發送請求至新地址。
選項-d指定發送數據
這些選項在操作一個遠程http API時會很有用
#刪除peer2?curl?-L?-XDELETE?http://127.0.0.1:2380/v2/admin/machines/peer2?#用PUT方法發送給指定URL數據?curl?-L?http://127.0.0.1:2379/v2/keys/message?-XPUT?-d?'value="Hello?world"'?#指定數據可以是JSON格式的字符串? curl?-L?http://127.0.0.1:2380/v2/admin/config?-XPUT?-d?'{"activeSize":3,?"removeDelay":1800,"syncInterval":5}'??選項-T file表示上傳文件file
curl?-T?test.sql?ftp://name:password@ip:port/demo/curtain/bbstudy_files/? #注意這里是如何指定ftp用戶、密碼、IP、端口的;也可以使用選項-u?user:password指定用戶和密碼??3、rsync 文件傳輸工具
rsync的初衷是為了取代scp,作為一個更快速,功能更強的文件傳輸工具。它使用“rsync”算法,可以實現每次只傳輸兩個文件的不同部分(即增量備份)。
rsync?[OPTION...]?SRC...?[DEST]?#類似于cp,本地傳輸。當目的(DEST)省略時,會以`ls?-l`的風格列出源文件列表?[root@centos7?temp]#?rsync?.?drwxr-xr-x?????????102?2016/11/16?09:47:10?.?-rw-r?-rw-r?-rw-r?-rw-r?-rw-r?-rw-r?-rw-r?-rwxr-xr-x??????????24?2016/11/04?09:03:18?test.sh?rsync在本地和遠程之間傳輸文件有兩種工作模式,一種是利用ssh加密傳輸,類似于scp;一種是守護進程(daemon)模式,使用命令rsync --daemon啟動,作為rsync服務器為客戶端服務。
#通過ssh?rsync?[OPTION...]?[USER@]HOST:SRC...?[DEST]?rsync?[OPTION...]?SRC...?[USER@]HOST:DEST?#通過daemon?rsync?[OPTION...]?[USER@]HOST::SRC...?[DEST]?rsync?[OPTION...]?rsync://[USER@]HOST[:PORT]/SRC...?[DEST]?rsync?[OPTION...]?SRC...?[USER@]HOST::DEST? rsync?[OPTION...]?SRC...?rsync://[USER@]HOST[:PORT]/DEST??選項-r表示遞歸
選項-v表示顯示詳細信息
選項-a表示保持文件所有屬性并且遞歸地傳輸文件
如使用ssh將本地/root/temp目錄及其內容同步至10.0.1.253的/root/temp:
#注意源和目的主機都需要有rsync命令?[root@centos7?temp]#?rsync?-av?.?root@10.0.1.253:/root/temp?sending?incremental?file?list?created?directory?/root/temp?./?b.txt?c.txt?d.txt?e.txt?f.txt?file?test?test.sh??sent?2468?bytes??received?167?bytes??5270.00?bytes/sec? total?size?is?2013??speedup?is?0.76??命令的執行開始會在源端(此例中的本機:發送端)創建文件列表(file list),在創建的過程中會將文件列表發送至目的端(此例中的10.0.1.253:接收端)。發送完成之后,接收端對文件列表進行計算處理,保留接收端不存在的或變化的文件,創建新文件列表,然后發送回源端;發送端收到新文件列表后開始進行傳輸。
返回結果中顯示了發送的文件以及一些匯總信息。
如執行完上述命令后更新其中一個文件,然后再次執行同步:
[root@centos7?temp]#?echo?"hello?world"?>>?d.txt??[root@centos7?temp]#?rsync?-av?.?root@10.0.1.253:/root/temp?sending?incremental?file?list?d.txt??sent?193?bytes??received?31?bytes??448.00?bytes/sec? total?size?is?2025??speedup?is?9.04??這次只有變化了的文件才被傳輸。
選項--delete會將接收端存在但發送端不存在的文件刪除:
[root@centos7?temp]#?rm?-f?test?[root@centos7?temp]#?rsync?-av??sending?incremental?file?list?./?deleting?test??????????????????????#這里刪除了接收端的test文件??sent?132?bytes??received?15?bytes??98.00?bytes/sec? total?size?is?2015??speedup?is?13.71??選項--exclude=PATTERN排除符合模式PATTERN的文件不傳輸(同tar命令,例子見這里)
選項--exclude-from=FILE排除符合文件FILE內模式(一行一個PATTERN)的文件不傳輸
選項--include=PATTERN和--include-from=FILE同理,表示包含某模式的文件才被傳輸
選項-z表示將文件壓縮之后再傳輸。(即使使用此選項,有些文件默認時也不會被壓縮,如某些gz jpg mp4 avi zip等結尾的文件)
默認時,rsync會將部分傳輸的文件(如連接被中斷導致文件沒有傳輸完)刪除。
選項--partial會保留這些部分傳輸的文件
選項--progress會打印出每個文件傳輸的狀態信息,類似于:
782448?63%?110.64kB/s?0:00:04?#這里文件已被傳輸了63%?選項-P等同于選項--partial和--progress。
當使用daemon模式時,服務端使用默認配置文件/etc/rsyncd.conf和密碼文件/etc/rsyncd.secrets(可選)。(如不存在可手動創建)
配置文件的格式:
/etc/rsyncd.conf的內容由兩部分組成,模塊(modules)和參數(parameters);
模塊以中括號包含模塊名(`[modul]`)為開頭一直到下一個模塊開頭之前。
模塊包含形如"name = value"的多個參數。
文件中以符號#開頭的行是注釋行,起描述性作用,沒有實際效果。
文件是基于行的。意思是說每一行表示一條注釋或者模塊開頭或者一個參數,多個參數的話,只有第一個起作用。
在第一個模塊之前的參數會作為全局參數,作為默認值適用于每個模塊。
舉例說明如下:
[root@idc-v-71253?temp]#?cat?/etc/rsyncd.conf???#?/etc/rsyncd:?configuration?file?for?rsync?daemon?mode?#?注釋行?#?global?parameters?uid?=?nobody????????????#指定傳輸文件時守護進程應該具有的uid?gid?=?nobody????????????#指定傳輸文件時守護進程應該具有的gid?use?chroot?=?true???????#在傳輸之前會chroot到該模塊path參數所指定的目錄?max?connections?=?4?????#最大并發連接數量?pid?file?=?/var/run/rsyncd.pid??#指定rsync的pid文件?timeout?=?900???????????#指定超時時間,單位是秒?read?only?=?false???????#允許客戶端上載文件到服務端(默認為true,禁止上傳)。?dont?compress?=?*.gz?*.tgz?*.zip?*.z?*.bz2?#指定特定后綴名的文件在傳輸之前不被壓縮??#modules?[temp]??????????#模塊?????path?=?/home/temp??#服務端該模塊可用目錄,每個模塊都必須指定此參數?????comment?=?test?for?command?rsync(daemon)?#描述字符串?[cvs]?????path?=?/data/cvs?????comment?=?CVS?repository?(requires?authentication)?????auth?users?=?tridge,?susan???#允許連接到此模塊的用戶,這里的用戶和系統用戶沒關系。? ????secrets?file?=?/etc/rsyncd.secrets?#前面參數“auth?users”所使用的密碼文件?我們在10.0.1.253這臺機器上的配置文件中寫入了上述內容,然后把它作為rsync服務端啟動起來:
[root@idc-v-71253?temp]#?rsync??[root@idc-v-71253?temp]#?ls?-l?/var/run/rsyncd.pid?-rw-r?#這里看到新創建的pid文件?[root@idc-v-71253?log]#?cat?/var/run/rsyncd.pid??29623?#默認守護進程模式的rsync服務端會通過系統的syslog(一個系統服務)記錄日志,保存于/var/log/messages中?[root@idc-v-71253?log]#?tail?-1?/var/log/messages?Nov?16?14:03:44?idc-v-71253?rsyncd[29623]:?rsyncd?version?3.0.9?starting,?listening?on?port?873?#這里看到rsyncd已經啟動了,監聽端口873?[root@idc-v-71253?log]#?chown?-R?nobody.nobody?/root/temp?? #改變模塊中path所指定的目錄的權限以使它和全局參數uid,gid一致??然后,我們就可以使用rsync服務器來傳輸文件了。注意服務端防火墻允許對TCP 873端口的連接,本文后面有對防火墻的描述。如在10.0.1.254上拉取(pull):
[root@centos7?temp]#?ls?b.txt??c.txt??d.txt??e.txt??file??f.txt??test.sh?[root@centos7?temp]#?rm?-rf?*?[root@centos7?temp]#?rsync?-avP??receiving?incremental?file?list?./?b.txt????????13?100%???12.70kB/s????0:00:00?(xfer#1,?to-check=6/8)?c.txt?????????0?100%????0.00kB/s????0:00:00?(xfer#2,?to-check=5/8)?d.txt????????12?100%???11.72kB/s????0:00:00?(xfer#3,?to-check=4/8)?e.txt?????????0?100%????0.00kB/s????0:00:00?(xfer#4,?to-check=3/8)?f.txt?????????0?100%????0.00kB/s????0:00:00?(xfer#5,?to-check=2/8)?file??????1979?100%????1.89MB/s????0:00:00?(xfer#6,?to-check=1/8)?test.sh????????24?100%???23.44kB/s????0:00:00?(xfer#7,?to-check=0/8)??sent?162?bytes??received?2476?bytes??5276.00?bytes/sec? total?size?is?2028??speedup?is?0.77??或者推送(push):
[root@centos7?temp]#?echo?'BLOG?ADDRESS?IS?"https://segmentfault.com/blog/learnning"'?>>?c.txt????[root@centos7?temp]#?rm?-f?file?[root@centos7?temp]#?rsync?-avP??sending?incremental?file?list?./?deleting?file?c.txt???????????58?100%????0.00kB/s????0:00:00?(xfer#1,?to-check=4/7)??sent?235?bytes??received?30?bytes??530.00?bytes/sec?total?size?is?107??speedup?is?0.40? [root@centos7?temp]#???根據配置文件,當同步cvs模塊時需要對用戶進行認證
在服務器端(10.0.1.253):
#編輯密碼文件寫入所示內容?[root@idc-v-71253?cvs]#?vim?/etc/rsyncd.secrets?tridge:123456?susan:654321?#還需要改變文件權限? [root@idc-v-71253?cvs]#?chmod?600?/etc/rsyncd.secrets??在客戶端(10.0.1.254):
[root@centos7?temp]#?touch?/etc/tridge.pass?[root@centos7?temp]#?echo?123456?>?/etc/tridge.pass??[root@centos7?temp]#?touch?/etc/susan.pass?[root@centos7?temp]#?echo?654321?>?/etc/susan.pass? [root@centos7?temp]#?chmod?600?/etc/tridge.pass?/etc/susan.pass??客戶端同步時需要使用選項--password-file指定所用密碼文件
PULL:
[root@centos7?temp]#?rsync?-avP??receiving?incremental?file?list?A/a.txt???????20?100%???19.53kB/s????0:00:00?(xfer#1,?to-check=675/703)?A/b.txt???????20?100%????6.51kB/s????0:00:00?(xfer#2,?to-check=674/703)?....?#省略部分輸出?Z/y.txt???????78?100%????1.27kB/s????0:00:00?(xfer#675,?to-check=1/703)?Z/z.txt???????78?100%????1.27kB/s????0:00:00?(xfer#676,?to-check=0/703)??sent?16981?bytes??received?71532?bytes??1416.21?bytes/sec? total?size?is?34632??speedup?is?0.39??PUSH:
[root@centos7?temp]#?echo?"baby?on?the?way..."?|?tee?-a?/data/cvs/A/*?baby?on?the?way...?[root@centos7?temp]#?rm?-rf?/data/cvs/B?[root@centos7?temp]#?rsync?-avP??sending?incremental?file?list?./?deleting?B/z.txt?deleting?B/y.txt?deleting?B/x.txt?....?deleting?B/a.txt?deleting?B/?A/a.txt???????55?100%????0.00kB/s????0:00:00?(xfer#1,?to-check=675/703)?A/b.txt???????55?100%???53.71kB/s????0:00:00?(xfer#2,?to-check=674/703)?....?A/y.txt???????55?100%???53.71kB/s????0:00:00?(xfer#25,?to-check=651/703)?A/z.txt???????55?100%???53.71kB/s????0:00:00?(xfer#26,?to-check=650/703)??sent?10331?bytes??received?684?bytes??22030.00?bytes/sec? total?size?is?35542??speedup?is?3.23??要注意上例中源目錄的書寫,在rsync中如果源目錄不以/結尾,意味著將在目的目錄下創建子目錄,如:
rsync?-avz?foo:src/bar?/data/tmp? #此時會將源目錄src/bar內所有的內容傳送至目標/data/tmp/bar內??可以在源目錄結尾增加/來阻止這一行為:
rsync?-avz?foo:src/bar/?/data/tmp?#此時會將源目錄src/bar內所有的內容傳送至目標/data/tmp內,不會創建子目錄bar配置文件中還可以設置其他參數如設置監聽端口、指定日志文件、指定允許客戶端列表等等,可使用命令man rsyncd.conf自行查看。
4、iptables 防火墻設置(注:基于linux2.6內核)
iptables通過定義一系列的規則利用內核的netfilter對每個網絡包進行過濾。用戶可以定義多種規則,實現對系統的防護。
首先我們先看一下一個網絡數據包是怎樣在系統中流轉的,再來說明netfilter在哪些位置起作用:
#入站
1)數據包從網絡到達網卡,網卡接收幀,放入網卡buffer中,并向系統發送中斷請求。
2)cpu調用網卡驅動程序中相應的中斷處理函數,將buffer中的數據讀入內存。
3)鏈路層對幀進行CRC校驗,正常則將其放入自己的隊列,置軟中斷標志位。
4)進程調度器看到了標志位,調度相應進程,該進程將包從隊列取出,與相應協議匹配,一般為ip協議,再將包傳遞給該協議接收函數。
5)網絡層對包進行錯誤檢測,沒錯的話,進行路由選擇。
6)此時的路由操作將包分為兩類,一類是本地包,繼續交給傳輸層處理;一類是轉發包,將會到達出站的第5步,路由選擇之后。
7)傳輸層收到報文段后將進行校驗,校驗通過后查找相應端口關聯socket,數據被放入相應socket接收隊列
8)socket喚醒擁有該socket的進程,進程從系統調用read中返回,將數據拷貝到自己的buffer。然后進行相應的處理。
#出站
1)應用程序調用系統調用,將數據發送給socket。
2)socket檢查數據類型,調用相應的send函數。
3)send函數檢查socket狀態、協議類型,傳給傳輸層。
4)傳輸層為這些數據創建數據結構,加入協議頭部,比如端口號、檢驗和,傳給網絡層。
5)ip(網絡層協議)添加ip頭,對包進行路由選擇,然后將包傳給鏈路層。
6)鏈路層將包組裝成幀,發送至至網卡的send隊列。
7)網卡將幀組織成二進制比特流發送至物理媒體上(網線)。
netfilter在5個位置放置了關卡
PREROUTING (入站網絡層錯誤檢測之后,路由選擇之前)
INPUT (入站路由選擇后,交給傳輸層處理之前)
FORWARD (入站路由選擇后,進行轉發之前;然后到達POSTROUTING)
OUTPUT (出站路由選擇之前)
POSTROUTING (出站路由選擇之后)
這5個位置即對應了iptables的5個規則鏈,如圖所示:
對于如何處理數據包,iptables還定義了如下4張不同功能的表:
1、raw 決定數據包是否被狀態跟蹤機制處理
可以作用的位置:OUTPUT、PREROUTING
2、mangle 修改數據包的服務類型、TTL、并且可以配置路由實現QOS
可以作用的位置:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
3、nat 用于網絡地址轉換
可以作用的位置:PREROUTING、POSTROUTING、OUTPUT
4、filter 過濾數據包
可以作用的位置:INPUT、FORWARD、OUTPUT
同一位置的不同表處理的優先級為 raw->mangle->nat->filter,但各表的使用頻度正好相反,filter表最常用(也是iptables不使用選項-t指定表時的默認表),raw表極少使用。
#語法?iptables?[-t?table]?COMMAND?chain?rule-specification?-t?table?指定表,省略時表示filter表?COMMAND?定義如何對規則進行管理?chain???指定規則生效的位置(規則鏈)?rule-specification?=?[matches...]?[target]?特定規則,包括匹配和目標?match?=?-m?matchname?[per-match-options]?匹配? target?=?-j?targetname?[per-target-options]?目標??netfilter在處理數據包時,會對照iptables指定的規則從上至下逐條進行匹配,如果符合某一條規則,就按這條規則的ACTION進行處理,這個表(table)后面的所有規則都將不會再對此包起作用。如果本表中所有的規則都沒有匹配上,則進行默認的策略處理。(注意:同樣的表可以作用于不同的鏈<位置>,不同的位置又可以有多張表。在定義規則或跟蹤數據包在防火墻內的流動時,一定要清楚的知道當前數據包在哪個位置、進入了哪張表、匹配到表中相應規則鏈的哪條語句)
COMMAND 選項:
-A 追加規則(尾部)。
-D 刪除規則(后面可以是規則描述或者規則號<第幾條>)
-I 插入規則(可以指定在第幾條之后插入)
-R 替換規則
-L 列出規則
-F 清除規則
-Z 清空匹配統計
-N 創建自定義鏈
-X 刪除自定義鏈(鏈必須為空且沒有其它鏈指向此鏈)
-P 指定鏈默認策略
-E 重命名鏈
規則選項:
-p 指定協議
-s 指定源(可以是ip地址,ip網段,主機名)
-d 指定目的(同-s)
-j target 跳轉到目標,目標可以是:用戶自定義鏈;特殊內建目標(DROP,ACCEPT等);擴展(EXTENSIONS)
-g chain 使數據包到指定自定義鏈中處理,完成后繼續在上一次由-j跳轉到本鏈的位置處繼續處理
-i name 指定入站網卡名
-o name 指定出站網卡名
-v 顯示詳細信息
-n 數字化輸出(域名等顯示為IP)
--line-numbers 顯示行號
target
ACCEPT?表示允許包通過?DROP???表示丟棄該包?RETURN?表示停止執行當前鏈后續規則,返回到調用鏈中? QUEUE??將數據包移交到用戶空間??EXTENSIONS包含兩種,一種是target擴展,表示對數據包做某種處理;一種是使用選項-m構成的匹配擴展,表示指定某種匹配方式。
target擴展
DNAT對數據包進行目的地址轉換,接受選項--to-destination(只能用于nat表,PREROUTING和OUTPUT鏈)
SNAT對數據包進行源地址轉換,接受選項--to-source(只能用于nat表,POSTROUTING和INPUT鏈)
如
#將目的地址為221.226.x.x,目的端口為80的數據包做DNAT,使目的地址為192.168.5.16,目的端口為80?iptables?-t?nat?-A?PREROUTING?-p?tcp?-i?eth1?-d?221.226.x.x??#將源地址為192.168.5.16,源端口為80的數據包做SNAT,使源地址變為221.226.x.x? iptables?-t?nat?-A?POSTROUTING?-p?tcp?-o?eth1?-s?192.168.5.16???LOG對匹配包進行日志記錄
REJECT同DROP一樣丟棄包,但返回錯誤信息。(只能用于INPUT、FORWARD和OUTPUT鏈)
REDIRECT重定向匹配包(只能用于nat表,PREROUTING和OUTPUT鏈)
#將目標端口8888的重定向至本機443端口? iptables?-t?nat?-A?PREROUTING??-p?tcp???匹配擴展
icmp匹配icmp協議,接受選項--icmp-type指定icmp類型
iptables?-A?OUTPUT?-p?icmp??tcp匹配tcp協議
udp匹配udp協議
connlimit連接限制
#限制每個C段IP?http最大并發連接數為16? iptables?-p?tcp???limit限速
#創建自定義鏈SYNFLOOD?iptables?-N?SYNFLOOD?#沒有超過限定值的話返回?iptables?-A?SYNFLOOD?-m?limit??#超過限定值,就視為SYNFLOOD攻擊,記錄日志并丟棄?iptables?-A?SYNFLOOD?-m?limit?? iptables??-A?SYNFLOOD?-j?DROP??multiport多端口
#允許轉發至多個TCP端口? iptables?-A?FORWARD?-p?tcp?-m?multiport???state狀態匹配
#允許從端口eth1進入的狀態是ESTABLISHED和RELATED的轉發包?iptables?-A?FORWARD?-i?eth1?-m?state??#允許http新建連接? iptables?-A?INPUT?-p?tcp???string字符串匹配
#對匹配到字符串GET?/index.html的http請求包進行日志記錄(? iptables?-A?INPUT?-p?tcp???time匹配時間
一些例子:
#清空規則?iptables?-F?#查看nat表的所有規則?iptables?-t?nat?-nvL?#設置INPUT鏈的默認規則?iptables?-P?INPUT?DROP?#刪除轉發鏈中的第二條規則?iptables?-D?FORWARD?2?#允許內網samba,smtp,pop3,連接?iptables?-A?INPUT?-m?state??iptables?-A?INPUT?-p?tcp?-m?multiport??iptables?-A?INPUT?-p?tcp?-s?192.168.0.0/24??#允許DNS連接?iptables?-A?INPUT?-i?eth1?-p?udp?-m?multiport??#星期一到星期六的8:15-12:30禁止qq通信?iptables?-I?FORWARD?-p?udp??#只允許每組ip同時15個80端口轉發?iptables?-A?FORWARD?-p?tcp??#保存規則到文件?iptables-save?>/etc/sysconfig/iptables.rule?#裝載保存在文件中的規則? iptables-restore?</etc/sysocnfig/iptables.rule??由于mangle表和raw表很少使用,就沒有舉相關的例子,另外,如果允許linux主機進行轉發(FORWARD),需要設置內核參數:echo 1 > /proc/sys/net/ipv4/ip_forward(臨時),或sysctl -w net.ipv4.ip_forward=1 &>/dev/null(永久)。iptables的規則定義較復雜,還有許多選項沒有在例子中使用到,讀者可以自行man。
作者:vvpale 來源:51CTO
總結
以上是生活随笔為你收集整理的Linux基础命令介绍七:网络传输与安全的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。