web-dev-qa-db-ja.com

Iptablesキャプティブポータルはhttpをリダイレクトしますが、httpsパススルーを許可します

このチュートリアル に従って、すべてのhttpリクエストをローカルで提供されるWebページにリダイレクトするアクセスポイントを作成しました。

ただし、証明書エラーのため、httpsリクエストは私のページを取得せず、代わりに永遠にロードされているように動作します。

httpsリクエストがインターネットにアクセスできるようにするが、ユーザーはしばらくするとhttpリンクをクリックする必要があるため、httpリクエストを自分のページにリダイレクトする一種の壁に囲まれた庭を作成したいと思います。

基本的にDebianと同じRaspbianliteを実行しているRaspberryPiを使用しています。 Apache2はWebページを提供し、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/network/interfaces

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"

Httpsリクエストを許可するには、ポート443に別のルールを追加する必要があると想定しています。 dnsmasqの設定を完了する方法と、トラフィックをハードウェア接続eth0に転送する方法がわかりません。

EDIT:見回すと、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-save

# 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
NULL
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

最初のルールは暗号化されたトラフィックを受け入れ、リターントラフィックで確立されたと見なされます。

1
cybernard