溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

iptables刪除命令中的相關(guān)問(wèn)題

發(fā)布時(shí)間:2020-08-08 05:49:45 來(lái)源:ITPUB博客 閱讀:158 作者:安全劍客 欄目:網(wǎng)絡(luò)安全
最近在做一個(gè)V*P*N中間件的配置工作,在配置iptables的時(shí)候,當(dāng)用戶想刪除EIP(即釋放當(dāng)前連接),發(fā)現(xiàn)使用iptables的相關(guān) 命令會(huì)提示錯(cuò)誤。iptables: Bad rule (does a matching rule exist in that chain?)。
我就納悶了,怎么會(huì)出現(xiàn)這個(gè)問(wèn)題,按照官方的文檔也有錯(cuò)?以下是我針對(duì)iptables刪除 命令的解決辦法。
解決方法:
1. 按行刪除

如果按照行號(hào)刪除,就不會(huì)有這篇文章了,當(dāng)然如果你刪除前就知道了行號(hào),那么就可以使用一下命令

iptables -t $table -D POSTROUTING 2

-t: 后面接的是要操縱的表。表包括四個(gè),注意默認(rèn)的可能不是你的table,具體看官方文檔地址

-D: 代表刪除

POSTROUTING: 用于源地址轉(zhuǎn)換(SNAT),這里需要填你的規(guī)則連接。

然后后面接行號(hào)

iptables -t $table -L -n --line-numbers
2. 根據(jù)匹配規(guī)則刪除

官方文檔中采用的的精確匹配刪除。所以你不能只制定一個(gè)篩選條件。必須給出規(guī)則的每一個(gè)細(xì)節(jié),和你當(dāng)初添加該規(guī)則時(shí)一樣,和添加動(dòng)作唯一不同的是,你要把-A改成-D。這種精確匹配刪除的成功依賴的就是用戶提供的所有match字段,target字段必須和內(nèi)核中保存的一模一樣,精確到字節(jié)級(jí)別的匹配。如果哪怕有一個(gè)字節(jié)不匹配,就會(huì)有二義性,刪除失敗。

3. 整表整鏈刪除

這個(gè)太極端了,慎用

iptables -t $table -F
4. 使用Python-iptables進(jìn)行操作

本來(lái)我這接口就是用python寫的,所以自然就想到使用python-iptables來(lái)進(jìn)行規(guī)則的刪除。這樣就可以不用精確匹配了。但問(wèn)題是無(wú)法在阻塞態(tài)的時(shí)候使用

==但是可以重啟一個(gè)單獨(dú)的 腳本運(yùn)行==

python-iptables的官方文檔

import iptc
table = iptc.Table(iptc.Table.NAT)
table.autocommit = False  # 不加亦可,會(huì)自動(dòng)提交,此處是手動(dòng)
chain = iptc.Chain(table, "POSTROUTING")
for rule in chain.rules:
    if rule.src == f"{network_segment}/255.255.255.0":
        chain.delete_rule(rule)
table.commit()
table.autocommit = True

原文地址: https://www.linuxprobe.com/iptables-post-table.html

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI