iptables的刪除命令中的相關問題

来源:https://www.cnblogs.com/selfcs/archive/2019/09/18/11543175.html
-Advertisement-
Play Games

最近在做一個VPN中間件的配置工作,在配置iptables的時候,當用戶想刪除EIP(即釋放當前連接),發現使用iptables的相關命令會提示錯誤。 我就納悶了,怎麼會出現這個問題,按照官方的文檔也有錯? "官方文檔地址" 解決方法: 1. 按行刪除 如果按照行號刪除,就不會有這篇文章了,當然如果 ...


最近在做一個VPN中間件的配置工作,在配置iptables的時候,當用戶想刪除EIP(即釋放當前連接),發現使用iptables的相關命令會提示錯誤。

iptables: Bad rule (does a matching rule exist in that chain?).

我就納悶了,怎麼會出現這個問題,按照官方的文檔也有錯?

官方文檔地址

解決方法:

1. 按行刪除

如果按照行號刪除,就不會有這篇文章了,當然如果你刪除前就知道了行號,那麼就可以使用一下命令

iptables -t $table -D POSTROUTING 2

-t: 後面接的是要操縱的表。表包括四個,註意預設的可能不是你的table,具體看官方文檔地址

-D: 代表刪除

POSTROUTING: 用於源地址轉換(SNAT),這裡需要填你的規則連接。

然後後面接行號

iptables -t $table -L -n --line-numbers

2. 根據匹配規則刪除

官方文檔中採用的的精確匹配刪除。所以你不能只制定一個篩選條件。必須給出規則的每一個細節,和你當初添加該規則時一樣,和添加動作唯一不同的是,你要把-A改成-D。這種精確匹配刪除的成功依賴的就是用戶提供的所有match欄位,target欄位必須和內核中保存的一模一樣,精確到位元組級別的匹配。如果哪怕有一個位元組不匹配,就會有二義性,刪除失敗。

3. 整表整鏈刪除

這個太極端了,慎用

iptables -t $table -F

4. 使用python-iptables進行操作

本來我這介面就是用python寫的,所以自然就想到使用python-iptables來進行規則的刪除。這樣就可以不用精確匹配了。但問題是無法在阻塞態的時候使用

==但是可以重啟一個單獨的腳本運行==

python-iptables的官方文檔

import iptc

table = iptc.Table(iptc.Table.NAT)
table.autocommit = False  # 不加亦可,會自動提交,此處是手動
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

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 我們在linux下配置了tomcat後發現,無法訪問除了linux(如果是虛擬機的話,宿主機子根本無法訪問tomcat),解決下吧 原因是我們的tomcat訪問需要8080埠,但是從外部訪問,我們的防火牆會攔截,而你此時又恰好沒有配置8080埠,也沒有關閉防火牆,那麼就導致這樣咯, 解決步驟: ...
  • linux上古神器thefuck, 裝機必備, 命令行輸入錯誤殺手 ...
  • 更換壁紙 ​ 在kde的桌面右鍵 配置桌面 壁紙里更換壁紙,我不能直接添加圖像並應用。我的系統在這樣操作後重啟就會發現一切都被重置了。剛剛添加的圖片也不見了。 ​ 於是,我就模範原本存在壁紙文件夾里的文件,自己創建了一個壁紙文件夾 ​ 這是原本breath壁紙文件位置 我們在wallpapers文件 ...
  • CentOS 預設只有一個 root 用戶,但是 root 用戶的許可權過大,而且不利於多人協作,基於許可權管理和安全的原因,我們為系統新建一個用戶,並且使能其 SSH 登錄,同時禁止 root 用戶的登錄; ...
  • 一、ramdisk介紹 ramdisk通過直面意思就大概能理解意思,ram disk虛擬記憶體盤,將ram模擬成硬碟來使用的文件系統。對於傳統的磁碟文件系統來說,這樣做的好處是可以極大提高文件訪問速度;但由於是ram,所以 在掉電後,這部分內容不能保存。ramdisk文件系統是在系統上電後直接從磁碟一 ...
  • 比較 新的Linux發行版 已經沒有 文件了。因為已經將其服務化了。 解決方法: 1、設置 2、激活 3、添加啟動服務 手工創建或者拷貝已有的/etc/rc.local,並賦予執行許可權 ...
  • 摘要 Recovery模式指的是一種可以對安卓機內部的數據或系統進行修改的模式(類似於windows PE或DOS)。也可以稱之為安卓的恢復模式,在這個所謂的恢復模式下,我們可以刷入新的安卓系統,或者對已有的系統進行備份或升級,也可以在此恢復出廠設置(格式化數據和緩存)。 1. Recovery相關 ...
  • 執行:systemctl get-default //顯示預設的界面方式 multi-user.target //命令行界面 graphical.target //圖形化界面 執行:systemctl set-default multi-user.target //設置開機以命令行模式界面啟動 執行 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...