我已经关注本教程创建一个接入点,将所有 http 请求重定向到我本地提供的网页。
但是,由于证书错误,https 请求无法获取我的页面,而是像永远加载一样。
我想创建一种围墙花园,允许 https 请求访问互联网,但将 http 请求重定向到我的页面,因为用户过一段时间后必然会点击 http 链接。
我使用的是运行 Raspbian lite 的 Raspberry Pi,它与 Debian 基本相同。Apache2 提供网页,dnsmasq 处理 dhcp,hostapd 创建接入点。
/etc/hostapd/hostapd.conf
interface=wlan0
driver=nl80211
ssid=FreeWiFi
channel=6
/etc/dnsmasq.conf
log-facility=/var/log/dnsmasq.log
address=/#/10.0.0.1
interface=wlan0
dhcp-range=10.0.0.10, 10.0.0.250,12h
no-resolv
log-queries
/etc/网络/接口
auto lo
iface lo inet loopback
iface eth0 inet dhcp
iface wlan0 inet static address 10.0.0.1
netmask 255.255.255.0
broadcast 255.0.0.0
pre-up iptables-restore < /etc/iptables.rules
已创建 IP 表规则
sudo iptables -F
sudo iptables -i wlan0 -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -i wlan0 -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -i wlan0 -A INPUT -p udp --dport 53 -j ACCEPT
sudo iptables -i wlan0 -A INPUT -p udp --dport 67:68 -j ACCEPT
sudo iptables -i wlan0 -A INPUT -j DROP
sudo sh -c "iptables-save > /etc/iptables.rules"
我假设我需要为端口 443 添加另一条规则以允许 https 请求。我不确定如何完成 dnsmasq 的设置以及如何将流量转发到我的硬件连接 eth0。
编辑:环顾四周,似乎我可能不需要在 dnsmasq 中更改任何内容,但我只需要使用一些 iptable 规则将 https 流量重新路由到 eth0?但我不知道如何专门针对 https 请求执行此操作。
sudo iptables -nvL
Chain INPUT (policy ACCEPT 491 packets, 45444 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- * * 0.0.0.0/0 10.0.0.0/24 tcp multiport dports 80
0 0 ACCEPT tcp -- * * 0.0.0.0/0 10.0.0.0/24 tcp multiport dports 80
Chain OUTPUT (policy ACCEPT 413 packets, 52820 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- * wlan0 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
0 0 ACCEPT tcp -- * wlan0 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
sudo iptables-保存
# Generated by iptables-save v1.4.21 on Tue Mar 7 22:56:30 2017
*nat
:PREROUTING ACCEPT [1781:191954]
:INPUT ACCEPT [704:143612]
:OUTPUT ACCEPT [204:15231]
:POSTROUTING ACCEPT [219:16055]
-A PREROUTING -i wlan0 -p tcp -m tcp -m multiport --dports 80 -j DNAT --to-destination 10.0.0.1
-A PREROUTING -i wlan0 -p tcp -m tcp -m multiport --dports 80 -j DNAT --to-destination 10.0.0.1
COMMIT
# Completed on Tue Mar 7 22:56:30 2017
# Generated by iptables-save v1.4.21 on Tue Mar 7 22:56:30 2017
*filter
:INPUT ACCEPT [389:44149]
:FORWARD ACCEPT [84:3648]
:OUTPUT ACCEPT [376:86142]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A FORWARD -p tcp -m tcp --dport 443 -j ACCEPT
-A FORWARD -d 10.0.0.0/24 -p tcp -m tcp -m multiport --dports 80 -j ACCEPT
-A FORWARD -d 10.0.0.0/24 -p tcp -m tcp -m multiport --dports 80 -j ACCEPT
-A OUTPUT -o wlan0 -p tcp -m tcp --dport 443 -j ACCEPT
-A OUTPUT -o wlan0 -p tcp -m tcp --dport 443 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 443 -m conntrack --ctstate ESTABLISHED -j ACCEPT
COMMIT
# Completed on Tue Mar 7 22:56:30 2017
答案1
iptables -A OUTPUT -o wlan0 -p tcp --dport 443 -j ACCEPT
iptables -I INPUT 1 -m conntrack -j ACCEPT --ctstate RELATED,ESTABLISHED
iptables -A FORWARD -p tcp -m tcp -m multiport -d 192.168.2.2/32 -j ACCEPT --dports 80
iptables -A PREROUTING -t nat -p tcp -m tcp -m multiport -i wlan0 -j DNAT --to-destination 192.168.2.2 --dports 80
第一条规则接受加密流量,并将被视为在返回流量上建立。