前言
这个问题可以看作是关联
设置
- 系统:运行启用 netfilter 和 iptables 的内核的嵌入式 Linux 系统。
- 接口数量:2
- eth0:连接到 NAT,进而可以访问互联网。
- WLAN0:AP 模式,配置静态 IP(192.168.10.1),客户端可以连接到
客观的
为连接到 AP(通过 wlan0)的无线客户端提供 Internet 访问(通过 eth0)。
IP 配置和路由输出
wlan0
inet addr:192.168.10.1
Bcast:192.168.10.255
Mask:255.255.255.0
eth0:
inet addr:10.102.8.93
Bcast:10.102.11.255
Mask:255.255.252.0
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.102.8.1 0.0.0.0 UG 0 0 0 eth0
10.102.8.0 0.0.0.0 255.255.252.0 U 0 0 0 eth0
192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
尝试的步骤(通过引用的脚本关联)
EXTIF="eth0"
INTIF="wlan0"
echo " External Interface: $EXTIF"
echo " Internal Interface: $INTIF"
echo " Enabling forwarding.."
echo "1" > /proc/sys/net/ipv4/ip_forward
echo " Enabling DynamicAddr.."
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
echo " Clearing any existing rules and setting default policy.."
$IPTABLES -P INPUT ACCEPT
$IPTABLES -F INPUT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -F OUTPUT
$IPTABLES -P FORWARD DROP
$IPTABLES -F FORWARD
$IPTABLES -t nat -F
echo " FWD: Allow all connections OUT and only existing and related ones IN"
$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
#$IPTABLES -A FORWARD -j LOG
echo " Enabling SNAT (MASQUERADE) functionality on $EXTIF"
$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE
观察结果
通过上述步骤,我能够10.102.X.X
从连接到 AP 的任何无线客户端(通过范围内的 wlan0 192.168.X.X
)ping 网络中连接的节点,但无线客户端没有 Internet 连接。
问题
对于没有互联网的问题,我的猜测是系统将到达 wlan0 的目标地址在10.102.X.X
eth0 范围内的数据包转发,但不会将到达 wlan0 的目标地址除10.102.X.X
eth0 之外的任何其他地址的数据包转发。请让我们知道您的想法,我是否应该添加任何其他规则来实现这一点。
答案1
您缺少 wifi 网络的 DNS。在文件中添加/etc/dhcpd.conf
如下行
option domain-name-servers 8.8.4.4, 8.8.8.8;
在所有option
行之间,然后重新启动 dhcp 服务器,您就完成了。无需其他操作。