FREESPOT みたいな
無線LAN -> Web認証 -> インターネット接続
してみる。
認証じゃなくても、初回は強制的に○○のページに誘導とかもできる。
CentOSにdhcp(dhcpd),gateway(iptables),www(apache)。
WAN
|eth0: x.x.x.x
CentOS
|eth1: 192.168.1.254
無線LAN(ルータモード)
|
端末
dhcpdの設定を適当に。
/etc/dhcp/dhcpd.conf
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.150;
option routers 192.168.1.254;
}
range 192.168.1.100 192.168.1.150;
option routers 192.168.1.254;
}
ipマスカレード
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
DNATで転送したり、しなかったり。
# ipt_recent を使って(認証済のipは)通す。有効時間1時間。
iptables -A PREROUTING -m recent -i eth1 -j ACCEPT \
--name webauth --rcheck --seconds 3600
# DNATで全部転送する。
iptables -A PREROUTING -i eth1 -j DNAT --to 192.168.1.254
iptables -A PREROUTING -m recent -i eth1 -j ACCEPT \
--name webauth --rcheck --seconds 3600
# DNATで全部転送する。
iptables -A PREROUTING -i eth1 -j DNAT --to 192.168.1.254
認証ページにリダイレクトする。
/etc/httpd/conf/httpd.conf
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^192\.168\.1\.254
RewriteRule ^(.*)?$ http://192.168.1.254/ [R=302,L]
</IfModule>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^192\.168\.1\.254
RewriteRule ^(.*)?$ http://192.168.1.254/ [R=302,L]
</IfModule>
お好みの認証をする。
認証の最後でipt_recentに追加。
で、普通にインターネット接続できるようになる。
# y.y.y.y = 認証済IP
# /proc/net/xt_recrnt/webauth の所有者変更必要
echo +y.y.y.y > /proc/net/xt_recrnt/webauth
メモ。# /proc/net/xt_recrnt/webauth の所有者変更必要
echo +y.y.y.y > /proc/net/xt_recrnt/webauth
# - すると削除
echo -y.y.y.y > /proc/net/xt_recrnt/webauth
# 全消去
echo / > /proc/net/xt_recrnt/webauth
echo -y.y.y.y > /proc/net/xt_recrnt/webauth
# 全消去
echo / > /proc/net/xt_recrnt/webauth
いろいろと雑だけど認証して一定時間すぎると再認証が必要なインターネット接続は実現できたと思う。
認証である必要はないので、リダイレクトにしたら初回だけ強制であるページを表示なんてのもできる。
実運用ならポート制限とか...。
こんにちは、ハチビ~と申します。
># ipt_recent を使って(認証済のipは)通す。有効時間1時間。
> # DNATで全部転送する。
上記の部分について、質問があります。
> # DNATで全部転送する。
この設定をした場合は、
># ipt_recent を使って(認証済のipは)通す。有効時間1時間。
の設定がされていて、認証済みのIPでもすべて転送されるという動作で正しいでしょうか。
やりたいとことは、認証済みIP以外は認証ページに転送するといったことを実現したいと考えています。
(要するに上記の設定は、両方同時に設定するという意味ではないということでしょうか)
あら、質問が...
> 認証済みのIPでもすべて転送されるという動作で正しいでしょうか。
下に書いてある
echo +y.y.y.y > /proc/net/xt_recrnt/webauth
で追加していないIPをすべて転送する動作となります。
> やりたいとことは、認証済みIP以外は認証ページに転送するといったことを実現したいと考えています。
記事に書いてあることで、実現できます。