centos 如何删除基于ip端口的iptables规则

5anewei6  于 2022-11-07  发布在  其他
关注(0)|答案(2)|浏览(194)

我正在尝试删除这样添加的规则;

iptables -t nat -A PREROUTING -p tcp -m tcp --dport [port] -j DNAT --to-destination [ip]:[port]

iptables -A FORWARD -s [ip] -p tcp --dport [port] -j ACCEPT

这是工作,我可以使用的端口,但当谈到删除规则,我有问题。它只是重新添加规则,而不是删除它。我已经尝试使用-D,但仍然没有运气。这是命令,我尝试删除规则;

iptables -D INPUT  -s -p tcp -m tcp --dport [port] -j DNAT --to-destination [ip]:[port]

iptables -D INPUT -s [ip] -p tcp --dport [port] -j ACCEPT
zujrkrfu

zujrkrfu1#

我想你还需要“-t nat”条目来删除。你也创建了一个FORWARD规则,然后试图删除一个INPUT规则。
iptables需要知道您要在哪个表上删除规则(INPUT、FORWARD、nat?)
问候
迪尔克

8ehkhllq

8ehkhllq2#

这种方式不是最好的,但它与我一起工作,没有知识如何与iptables一起工作。我将给予一个例子,我尝试了什么,我有这个规则想要删除

-A DOCKER -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.17.0.2:3000

首先,使用$ iptables-save转储iptables。


* nat

:PREROUTING ACCEPT [195:61417]
:INPUT ACCEPT [3:223]
:OUTPUT ACCEPT [281:68526]
:POSTROUTING ACCEPT [267:67686]
:DOCKER - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
-A DOCKER -i docker0 -j RETURN
-A DOCKER -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.17.0.2:3000
COMMIT

找到不需要的规则在*nat*filter下的位置...对我来说是在*nat下,我复制了从*nat到规则的所有内容,但不要复制它。然后运行命令$ iptables-restore并粘贴您复制的规则。然后键入COMMIT并退出


* nat

:PREROUTING ACCEPT [195:61417]
:INPUT ACCEPT [3:223]
:OUTPUT ACCEPT [281:68526]
:POSTROUTING ACCEPT [267:67686]
:DOCKER - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
-A DOCKER -i docker0 -j RETURN
COMMIT

如果你再试图抛弃这些规则,你会发现它不见了。

相关问题