客观的:
我正在使用以下网络配置的嵌入式 Linux 设备。
- 接口 1:“wlan0”充当接入点。
- 接口 2:“eth1”连接到 Internet。
我的目标是从连接到“eth1”的无线客户端对到达“wlan0”的数据包进行 NAT(并且发往除 wlan0 子网中的 IP 以外的 IP)。这样连接到“wlan0”的无线客户端就可以访问 Internet。
尝试的解决方案:
我浏览了几个链接(不幸的是我错过了参考资料),这些链接使用iptables.
EXTIF="eth1"
INTIF="wlan0"
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
$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
route add -net 192.168.10.0/24 dev $INTIF
$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
#Puzzled, how will the matching condition of `-o $EXTIF` be satisfied for any packets???
echo " Enabling SNAT (MASQUERADE) functionality on $EXTIF"
$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE
I am bit new to `iptables` so have the following clarifications
需要说明:
FORWARD据我了解,只有当它不适合本地主机时,数据包才会遍历链。- 我的澄清是如何
-o $EXTIF满足任何数据包的匹配条件。我知道这-i $INTIF将是满意的,因为它是数据包的入口接口。