我正在配置网络,并且需要仅允许某些 MAC 地址访问。
假设 eth0 和 eth1 是物理接口,eth1 连接外部网络,eth0 及其 vlan 位于内部网络中。
为了这个目的,我使用 Linux iptables,并且有以下默认配置代码。
# Allowing ip forwarding and loopback
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A INPUT -i lo -j ACCEPT
# Setting up nat and default chains settings
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -N FILTER
iptables -P FORWARD DROP
# Setting up default configuration
iptables -A FORWARD -p tcp -m conntrack --ctstate NEW -i eth0+ -o eth1 -j FILTER
iptables -A FORWARD -p tcp -m conntrack \
--ctstate RELATED,ESTABLISHED,DNAT,SNAT,INVALID -i eth0+ -o eth1 -j ACCEPT
iptables -A FORWARD ! -p tcp -i eth0+ -o eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0+ -m state \
--state RELATED,ESTABLISHED -j ACCEPT
通过这样做,我将过滤所有状态为 NEW 的传入 tcp 流量,并允许其他状态的任何其他协议或 tcp 的所有流量。我使用以下规则处理这些过滤后的 tcp 请求
# Allowing tcp traffic with ctstate NEW for certain mac
iptables -A FILTER -p tcp -m conntrack --ctstate NEW -i eth0+ -o eth1 \
-m mac --mac-source <mac> -j ACCEPT
在测试环境下,使用此配置,允许的 MAC 可以以正常下载速度访问互联网,但上传速度几乎为零。我是不是忘记了什么?
答案1
解决此类问题的最佳方法是捕获流量并使用 进行分析wireshark
。
大多数情况下,速度问题都是由 MTU 问题引起的。MTU 问题可能是由ICMP
所需的数据包被阻止引起的Path MTU discovery
。
粘贴完整的防火墙规则集。使用iptables-save -c
命令列出所有规则,而不仅仅是从filter
表中列出。
检查规则计数器。记住防火墙规则的顺序非常重要。