我实际上正在试图发展一个公共无线networking(不是商业,仅仅是为了教育目的,我正在学习计算机科学……)。 但是我缺乏达到这个目标所需的知识(我通常比networkingpipe理更喜欢编程(爱堆栈溢出;-)])。
我想要做的就是像很多城市/学校的公共networking,每个地址都能够访问互联网之前被redirect到login页面。
我目前的设置是这样的:我有我的互联网连接到有线路由器。 该路由器连接到交换机。 我的个人电脑连接到这个开关。 我有一个IIS服务器连接到路由器。
我有一个无线接入点,但我不知道如何设置它来redirect传入的IP到我的IIS。 基本上我想阻止所有的互联网,并将非本地请求redirect到我的本地IIS(仅适用于WiFi用户,局域网应该有互联网)。
我想也许在我的服务器上安装一个DNS,并将其设置为路由器中的主DNS。 或者,也许连接WiFi服务器(与第二个networking适配器),并通过防火墙/代理redirect,但我不知道这些会否在理论上工作,在跳进学习如何设置这些选项之一…
任何帮助非常感谢!
你要做的是实现一个强制门户 (如你所知)。 WiFi Dog是最受欢迎的俘虏门户之一。 它是开源的,应该满足你的需求。
您可以使用ZoneCD从一张Live CD上运行强制门户,但是有些人说这很慢。 另外,我不确定这些设置是否可以重新启动(可能不是,因为我不认为任何东西都写入非易失性存储)
您的wifi需要连接到一个网关,您可以将stream量redirect到强制门户网站(login页面)。
你可以在linux上使用iptables来做到这一点。 假设你的接口eth0通过192.168.0.0/24子网连接到你的接入点,你的网关(linux服务器)被configuration为192.168.0.1 ,并且可以在一个单独的接口上访问互联网。 您的IIS服务器位于192.168.0.2:80 。
你的iptables规则可能是这样的:
iptables -t mangle -N my_access_filter iptables -t mangle -A INPUT -i eth0 -j my_access_filter iptables -t mangle -A my_access_filter -m mac --mac-source 11:22:33:44:55:66 -j RETURN # Grant access to mac 11:22:33:44:55:66, by returning and not marking the traffic iptables -t mangle -A my_access_filter -j MARK --set-mark 99 # Arbitrarily selected number # that's it for the mangle table, now the nat table iptables -t nat -A PREROUTING -p tcp --dport 80 -m mark --mark 99 -j DNAT --to 192.168.0.2:80 # ip o iptables -t nat -A PREROUTING -p udp --dport 53 -m mark --mark 99 -j DNAT --to 192.168.0.1 # For good measure, lets redirect their dns queries to our own dns server. # now the filter table reads: iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # standard rule to accept established connections iptables -A FORWARD -i eth0 -m mark --mark 99 -j DROP # This will drop traffic that is marked, preventing clients from accessing the internet
你的俘虏门户只需要把客户端ip或者mac,或者任何你过滤到mangle表中的my_access_filter,这可以通过
iptables -t mangle -I my_access_filter -m mac --mac-source <mac> -j RETURN
要么
iptables -t mangle -I my_access_filter -s 192.168.0.xx -j RETURN # by ip
希望这给了一些启发。