如何修改 iptables 文件(debian)中的以下行?
ACCEPT all -- XXX.XXX.XX.X anywhere PHYSDEV match --physdev-in vif3.1
到
ACCEPT all -- YYY.YYY.YY.Y anywhere PHYSDEV match --physdev-in vif3.1
我查了一下https://wiki.debian.org/iptables 我很难弄清楚如何准确地进行此修改。是否可以使用一个命令来完成,或者有一种方法可以暂时“提取” iptables 文件并使用 nano 或 vi 修改它,然后将其放回原位?
答案1
要使用替换该特定规则,iptables
您需要首先进行一些调试。
第一个选项是立即替换规则。
1)查看提到的行被放置在什么行号以及哪个CHAIN中。例如:
iptables -L -v -n --line-n
2) 找到该行并根据输出替换它。
iptables -R [CHAIN_NAME] [LINE_NUMBER] -s YYY.YYY.YYY.YYY -m physdev --physdev-in vif3.1 -j ACCEPT
第二个选项是保存 iptables 规则并修改文件并将其导入。
1)保存规则。
iptables-save > my_ipt-$(date +%F).ipt
2)修改my_ipt-$(date +$F).ipt
3)导入my_ipt-$(date +%F).ipt
iptables-restore < my_ipt-$(date +%F).ipt
注意:$(date +%F)
是您保存文件的日期,例如:2013-11-07
检查一切是否如预期
iptables -L -v -n --line-n
答案2
是的,这是可能的:
iptables -L CHAIN -n -v --line-numbers
给你规则中的索引
iptables -S CHAIN INDEX
显示规则
使用 -R CHAIN INDEX 参数进行编辑。
示例:
iptables -L Visioconf-OUT -n -v --line-numbers
Chain Visioconf-OUT (1 references)
num pkts bytes target prot opt in out source destination
1 719K 49M LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 4 prefix "DROP4 Visioconf-OUT "
2 719K 49M DROP all -- * * 0.0.0.0/0 0.0.0.0/0
iptables -S Visioconf-OUT 2
-A Visioconf-OUT -j 删除
iptables -R Visioconf-OUT 2 -s 1.2.3.4 -j DROP