我正在尝试用 RPi3 构建一种强制门户。我首先创建一个遵循这些说明的接入点。接下来,我配置 dnsmasq 将 wlan0 上的所有流量指向其自身。echo 'address=/#/172.24.1.1' >> /etc/dnsmasq.conf
连接后,所有流量都将重定向回我的节点应用程序。现在这就是我的问题开始的地方。所有流量都会发送到我的节点应用程序,包括源自树莓派的流量,因此在盒子上时我无法远程登录到任何网站或安装应用程序。
我认为问题出在 iptable 规则上。
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
我需要来自树莓派的所有流量都能够(通过)传到互联网,eth0
并且所有传入的流量wlan0
都能够继续重定向到我的节点应用程序。
更新:
以下是结果ip route sh
default via 10.1.10.1 dev eth0 metric 202
10.1.10.0/24 dev eth0 proto kernel scope link src 10.1.10.87 metric 202
172.24.1.0/24 dev wlan0 proto kernel scope link src 172.24.1.1
至于我正在使用什么强制门户软件,答案是否定的。我正在使用我编写的 Node JS 应用程序。这是一个简单的 Express JS 应用程序,可将所有路径重定向到一个页面。
dnsmasq.conf
interface=wlan0 # Use interface wlan0
listen-address=172.24.1.1 # Explicitly specify the address to listen on
bind-interfaces # Bind to the interface to make sure we aren't sending things elsewhere
#server=8.8.8.8 # Forward DNS requests to Google DNS
domain-needed # Don't forward short names
bogus-priv # Never forward addresses in the non-routed address spaces.
dhcp-range=172.24.1.50,172.24.1.150,12h # Assign IP addresses between 172.24.1.50 and 172.24.1.150 with a 12 hour lease time
address=/#/172.24.1.1
IP表
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination