我有一条 iptable 规则,允许 IP 子网。规则如下:
iptables -I 输入 2 -i eth0 -s xxxx/24 -d xxXx -j 接受
例如,我想允许子网 172.16.0.0/24。尽管我已将此子网配置为允许,但我是否会遇到此子网的 IP 无法访问的问题?
我正在处理这样的问题。我已将 172.16.0.0/24 配置为允许从 iptables 访问,但当我尝试从 IP 172.16.0.9 访问时,却无法访问。
答案1
您可以通过启用 TRACE 目标来调试 netfilter 规则:
首先加载相关内核模块,直接将日志记录到syslog中:
modprobe -i ipt_LOG
然后创建一个规则来记录来自行为不端的系统的所有流量:
iptables -t raw -A PREROUTING --source 172.16.0.9 -p tcp -j TRACE
数据包使用字符串前缀进行记录: TRACE: tablename:chain- name:type:rulenum
其中类型可以是“rule”(表示普通规则)、“return”(表示用户定义链末尾的隐式规则)和“policy”(表示内置链的策略)。规则号可以通过以下方式找到:iptables -L --line-numbers
答案2
尝试删除“-d xxxx”。我这样说是因为 INPUT 表示所有发往您机器的流量,因此无需指定目的地。编辑:此外,尝试在“-s xxxx/24”之前添加“-p tcp”。我认为您需要指定匹配的协议。– aseaudi 17 分钟前
答案3
我正在考虑两个可能的问题:
1 - 您不允许流量从您的机器出去
iptables -I OUTPUT 1 -i eth0 -d x.x.x.x/24 -j ACCEPT
2 - 您正在阻止广播数据包到达您的机器
尝试这个来代替你原来的输入:
iptables -I INPUT 1 -i eth0 -s x.x.x.x/24 -j ACCEPT
不使用目标 IP。