简单的Linux程序,可以接受任何HTTP / HTTPS请求并返回单个页面?

我有一个Linux操作系统作为路由器。 有一个连接到互联网(WAN)的NIC,连接到8端口GbE交换机(LAN)的NIC以及连接到Linksys无线N路由器(WLAN)的NIC。 一切之间的路由工作正常。

我在无线路由器上完全禁用了安全性,但WLAN网卡被防火墙限制,因此它只接受DNS查询和PPTP VPN连接。 目前HTTP / HTTPSstream量和其他一切被阻止。

我想运行一些在WLAN网卡的端口80/443上侦听的东西,对于非VPN连接,如果有任何HTTP / HTTPS请求,它将返回一个网页,说“未经身份validation”,并解释如何login到VPN。 一个透明的代理似乎是我所需要的,但我的search似乎都指向我的Squid,它已经在我的服务器上运行,似乎这个简单的任务矫枉过正。

有没有一个更简单,轻量级的程序,只是这样做,或者我应该把它吸了起来,运行两个Squid实例(或弄清楚如何configuration它)?

或者,我正在做的整个VPN的事情是完全废话,我应该只在无线路由器上启用encryption?

无需安装任何花哨的HTTP服务器,代理或Perl模块,只要你有netcat和一个shell:

$而正确; do(echo -e'HTTP 1.0 200 OK \ r \ n \ r \ n'; cat static.html)| nc -q0 -l -p 80; DONE

这是原来的netcat。 GNU netcat有点不同,但是你可以使用相同的原理。 至于HTTPS,你可以使用与“openssl s_server”相同的技巧。

正如其他人所提到的,你可以设置一个简单的Web服务器来监听http / https请求。 select你最喜欢的有很多可供select的。 我会用apache来做,但只是因为这是我最熟悉的。

一旦Web服务器在那里,您将需要添加看起来像这样的iptables规则来拦截stream量并将其发送到您的本地Web服务器。

/sbin/iptables -t nat -A PREROUTING -p tcp -i {wlanif} --dport 80 -j REDIRECT --to-ports 80 /sbin/iptables -t nat -A PREROUTING -p tcp -i {wlanif} --dport 443 -j REDIRECT --to-ports 443 

如果页面是完全静态的,我会使用tux ,内核web服务器。 它的快速,稳定和非常可靠的静态内容邪恶。 我不确定它是否会处理SSLstream量,因此您可能需要将内容代理回加载了证书的服务器,因为它听起来不像您拥有此机器上的证书。

好的build议关于礼服。 还有很多典型的家庭宽带路由器使用lighttpd作为他们的控制面板和事物的networking服务器,所以这可能是另一种select。

你应该直接在你的Linux路由器盒子里使用一个小型的networking服务器。 无需使用Squid将stream量转发到另一台Web服务器…

除了已经提出的lighttpd之外 ,我build议你看看HTTPi ,这是一个非常小的Perl网站服务器。

你也可以看看LinuxJournal中的这篇文章 ,它使用大约20行代码创build了一个使用Python的web服务器。

既然你只想服务一个静态页面,不要看更复杂的东西…