AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 571120
Accepted
Scott Forsyth
Scott Forsyth
Asked: 2014-01-31 12:40:43 +0800 CST2014-01-31 12:40:43 +0800 CST 2014-01-31 12:40:43 +0800 CST

按 IP 地址动态删除 iptables 策略

  • 772

我想根据源或目标 IP 地址以自动方式删除一些 NAT POSTROUTING 规则。

我知道源 IP 和目标 IP,但我不一定知道哪些策略已经存在。

例如,我可能有这个:

-A POSTROUTING -s 10.10.10.10/32 -p tcp -m tcp --dport 80 -j SNAT --to-source 1.2.3.4
-A POSTROUTING -s 10.10.10.10/32 -p tcp -m tcp --dport 443 -j SNAT --to-source 1.2.3.4
-A POSTROUTING -s 10.10.10.10/32 -j ACCEPT

或者我可能只有这个:

-A POSTROUTING -s 10.10.10.10/32 -j SNAT --to-source 1.2.3.4

我想从旧计算机取消分配该 NAT 地址并将其分配给新计算机。这都是自动化的,所以我无法手动查找。

删除该 IP 的旧策略的最佳方法是什么?我可以使用 list + grep 命令吗?我通常在 Windows 世界中闲逛,所以我不确定在这里处理这个问题的最佳方法。

iptables
  • 2 2 个回答
  • 965 Views

2 个回答

  • Voted
  1. Best Answer
    Michael Hampton
    2014-01-31T12:47:08+08:002014-01-31T12:47:08+08:00

    您可以通过精确指定删除规则并使用-D( --delete) 而不是来匹配删除规则-A。例如:

    iptables -t nat -D POSTROUTING -s 10.10.10.10/32 -p tcp -m tcp --dport 80 -j SNAT --to-source 1.2.3.4
    

    为了编写这个脚本,匹配一个特定的 IP 地址,并且不因竞争条件而丢失任何规则,让我们尝试这样的事情。这将删除 nat 表中包含给定 IP 地址的所有规则:

    IFS=$'\n'
    for rule in `iptables-save -t nat | grep -w $IP_ADDRESS | sed -e 's/-A/-D/'`; do
        echo $rule | xargs iptables -t nat
    done
    

    对此的一些注意事项:我们用于grep -w确保 IP 地址完全匹配,例如,以25不匹配结尾的给定地址250。从-Ato的转换-D是sed在循环中完成的。我们使用xargs将每个规则扩展为参数。

    • 2
  2. ricksebak
    2014-01-31T12:46:35+08:002014-01-31T12:46:35+08:00

    iptables -t nat -L POSTROUTING -n --line-numbers | grep -w 1.2.3.4 | awk '{print $1}'

    这将 grep 您想要的 IP 并获取防火墙规则的行号。然后使用iptables -t nat -D POSTROUTING 1删除规则 1 或您想要的任何数字。

    • 1

相关问题

  • OpenVPN 的 Linux IP 转发 - 正确的防火墙设置?

  • iptables 单个规则中的多个源 IP

  • 存储 iptables 规则的规范方法是什么

  • 使用 iptables 和 dhcpd 进行端口转发

  • 根据 Apache 日志数据自动修改 iptables 以阻止行为不良的客户端

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve