iptables命令學(xué)習(xí)

(Proudly powered by QKQ)

在學(xué)習(xí)Kubernetes的時(shí)候,kubernetes的proxy的實(shí)現(xiàn)方式夭拌,其中一種就是iptable。因此需要學(xué)習(xí)一下iptable相關(guān)指令板祝。

Q: iptables指令是用來(lái)干啥的肛循?

A: 先來(lái)linux man的說(shuō)明:

Iptables and ip6tables are used to set up, maintain, and inspect the tables of IPv4 and IPv6 packet filter rules in the Linux kernel.

簡(jiǎn)單來(lái)說(shuō),就是一個(gè)工具蚊夫,用來(lái)建立诉字、維護(hù)、查看Linux內(nèi)核中的IPv4和IPv6的網(wǎng)絡(luò)包的過(guò)濾規(guī)則(filter rules)知纷。

再來(lái)看另一個(gè)定義[2]:

iptables is an application that allows users to configure specific rules that will be enforced by the kernel’s netfilter framework. It acts as a packet filter and firewall that examines and directs traffic based on port, protocol and other criteria.

即iptables是一個(gè)應(yīng)用壤圃,該應(yīng)用可以配置Linux內(nèi)核中netfilter框架使用的規(guī)則(rules)。它可以通過(guò)檢查端口琅轧、協(xié)議及其他條件來(lái)實(shí)現(xiàn)包過(guò)濾器(packet filter)和防火墻的功能伍绳。

Q: iptables怎么用?

A: 首先得知道幾個(gè)概念:

Several different tables may be defined. Each table contains a number of built-in chains and may also contain user-defined chains.
Each chain is a list of rules which can match a set of packets. Each rule specifies what to do with a packet that matches. This is called a `target', which may be a jump to a user-defined chain in the same table.

這段描述中有幾個(gè)概念:

  • table乍桂,即表
  • chain冲杀,鏈條
  • rule效床,規(guī)則
  • packet,即網(wǎng)絡(luò)包
  • target权谁,目標(biāo)

這幾個(gè)概念之間的關(guān)系是:

  • 系統(tǒng)中可以有若干張表(table)
  • 每張表可以包含多個(gè)默認(rèn)的chains以及用戶自定義的chain
  • 每個(gè)chain里面可以包含若干個(gè)規(guī)則(rules)
  • 每個(gè)規(guī)則定義了對(duì)符合某個(gè)條件的網(wǎng)絡(luò)包的操作剩檀,這些操作稱為target,比如對(duì)符合條件的網(wǎng)絡(luò)包旺芽,跳轉(zhuǎn)到另一個(gè)用戶定義的chain谨朝,這個(gè)操作就是一個(gè)target

來(lái)張圖吧:


iptables.png

Q: table有哪些?

A: linux中當(dāng)前有五個(gè)table:

  • filter甥绿。默認(rèn)的table字币。即不查詢其他table的packet都會(huì)查詢此table。
  • nat共缕。當(dāng)一個(gè)網(wǎng)絡(luò)包要?jiǎng)?chuàng)建一個(gè)新的鏈接時(shí)會(huì)查詢此table洗出。
  • mangle。用來(lái)改變指定的網(wǎng)絡(luò)包图谷。
  • raw翩活。主要用來(lái)避免connection tracking。raw表具有最高的優(yōu)先級(jí)便贵。
  • security菠镇。用于MAC(Mandatory Access Control)網(wǎng)絡(luò)規(guī)則。MAC由Linux的安全模塊如SELinux實(shí)現(xiàn)承璃。security table會(huì)在filter table之后使用利耍。

其中每個(gè)table里面的chain有:


Screen Shot 2019-05-25 at 3.06.55 PM.png
Screen Shot 2019-05-25 at 3.07.25 PM.png

其中的box應(yīng)該就是指路由功能這樣一個(gè)黑盒。

Q: 如何使用iptables命令盔粹?

A: 首先隘梨,需要指定table,使用iptables -L <table_name>來(lái)指定哪個(gè)table舷嗡。
之后的命令行參數(shù)轴猎,可以分為幾類:

  • COMMANDS。命令进萄,指定了你想要完成的操作捻脖。
    • -A, --append chain rule-specification。在chain的最后增加一個(gè)或者多個(gè)rules中鼠。
    • -C, --check chain rule-specification可婶。判斷該規(guī)則是否存在于chain中。
    • -D, --delete chain rule-specification | rulenum兜蠕。刪除rule
    • -I, --insert chain [rulenum] rule-specification扰肌。插入一個(gè)或者多個(gè)rules.
    • -R, --replace chain rulenum rule-specification抛寝。替換某個(gè)rule熊杨。
    • -L曙旭,--list chain,查看所有該chain的rules晶府,如果沒(méi)有指定chain桂躏,則列出所有chain的所有rules。
    • -S, --list-rules chain川陆。列出該chain的所有rules剂习,如果沒(méi)有指定chain,則列出所有较沪。
    • -F, --flush chain鳞绕。flush該chain的所有rules,不指定chain尸曼,就flush該table中的所有chain中的所有rules们何。flush同一條一條刪除是一樣的。
    • ...
  • PARAMETERS控轿。參數(shù)冤竹,下列參數(shù)組成了規(guī)則的定義(rule specification)。
    • -4, --ipv4
    • -6, --ipv6
    • -p, --protocol protocol茬射,指定rule要去檢查的協(xié)議鹦蠕,可能的值有:tcp, udp, udplite, icmp, all等
    • -s, --source address[/mask]
    • -d, --destination address[/mask]
    • -m, --match
    • -j, --jump target。即如果match了在抛,應(yīng)該調(diào)到哪兒去钟病。可以跟DROP, ALLOW, REJECT刚梭。分別表示丟棄档悠、允許、拒絕望浩。
    • -g, --goto chain辖所。表示繼續(xù)到另一個(gè)用戶定義的chain中去處理
    • -i, --in-interface name。指定進(jìn)入哪個(gè)network interface
    • -o, --out-interface name磨德。指定出去的時(shí)候是哪個(gè)interface

當(dāng)table中沒(méi)有任何rules的時(shí)候缘回,默認(rèn)是不對(duì)包做過(guò)濾的。

Q: iptables中的-m是如何使用的典挑?

A: 這部分的內(nèi)容在man iptables中沒(méi)有酥宴,需要使用man iptables-extensions來(lái)查看具體的module。
其使用格式為:

iptables [-m name [module_options...]] -j target_name [target-options...]]

舉個(gè)例子:

# 插入一個(gè)rule您觉,使用了comment模塊拙寡,--comment為該模塊的options,添加了一個(gè)注釋
iptables -A INPUT -i eth1 -m comment --comment "my local LAN"

Q: 來(lái)點(diǎn)例子琳水?

A:
比如:

iptables -I INPUT -s 198.51.100.0 -j DROP

往默認(rèn)的filter表中的chain的頭部插入一個(gè)rule肆糕。該rule表示所有源地址為198.51.100.0的包全都丟棄(DROP)

比如:

sudo iptables -L -nv --line-numbers

查看filter表中的所有rules般堆,并顯示行號(hào)。其中-n表示不做domain的查詢诚啃。

最后淮摔,貼一張網(wǎng)上的圖[3],有些幫助:


Iptables-Diagram.jpg

參考資料:
[1] linux man page
[2] https://www.linode.com/docs/security/firewalls/control-network-traffic-with-iptables/
[3] https://msazure.club/kubernetes-services-and-iptables/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末始赎,一起剝皮案震驚了整個(gè)濱河市和橙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌造垛,老刑警劉巖魔招,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異五辽,居然都是意外死亡仆百,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén)奔脐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)俄周,“玉大人,你說(shuō)我怎么就攤上這事髓迎÷屠剩” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵排龄,是天一觀的道長(zhǎng)波势。 經(jīng)常有香客問(wèn)我,道長(zhǎng)橄维,這世上最難降的妖魔是什么尺铣? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮争舞,結(jié)果婚禮上凛忿,老公的妹妹穿的比我還像新娘。我一直安慰自己竞川,他們只是感情好店溢,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著委乌,像睡著了一般床牧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上遭贸,一...
    開(kāi)封第一講書(shū)人閱讀 51,301評(píng)論 1 301
  • 那天戈咳,我揣著相機(jī)與錄音,去河邊找鬼。 笑死著蛙,一個(gè)胖子當(dāng)著我的面吹牛删铃,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播册踩,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼泳姐,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼效拭!你這毒婦竟也來(lái)了暂吉?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤缎患,失蹤者是張志新(化名)和其女友劉穎慕的,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體挤渔,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡肮街,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了判导。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嫉父。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖眼刃,靈堂內(nèi)的尸體忽然破棺而出绕辖,到底是詐尸還是另有隱情,我是刑警寧澤擂红,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布仪际,位于F島的核電站,受9級(jí)特大地震影響昵骤,放射性物質(zhì)發(fā)生泄漏树碱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一变秦、第九天 我趴在偏房一處隱蔽的房頂上張望成榜。 院中可真熱鬧,春花似錦蹦玫、人聲如沸伦连。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)惑淳。三九已至,卻和暖如春饺窿,著一層夾襖步出監(jiān)牢的瞬間歧焦,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留绢馍,地道東北人向瓷。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像舰涌,于是被迫代替她去往敵國(guó)和親猖任。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容