浏览模式: 标准 | 列表

原厂固件英文版:http://www.tp-link.com/support/download.asp?a=1&m=TL-WR841N&h=V7

中文版:http://www.tp-link.com.cn/pages/product-detail.asp?d=23&t=4#tag

先配好电脑端的http服务器,可以直接用IIS,然后把固件放在发布目录下,然后关闭电脑防火墙。接下来telnet到路由器,执行:

cd /tmp

wget http://192.168.1.10/wr841n.bin

如果下载成功,会有提示,然后可以用 ls 命令验证是否文件是否正确,否则后面刷坏了就变砖了。

为了保险,先清空 nvram:

mtd erase nvram

然后开始刷机:

mtd -r write w841n.bin  linux

之后就等待吧,什么都别动,刷完之后自动重启。然后再等个几分钟应该就可以连上路由器啦。

虽然推荐使用有线网络来操作,但是使用无线网络也可以完成,我就是用无线网络刷的。最后刷的是英文版,虽然没有中文版界面好看,不过DDNS上支持的服务多一些。

前几天在 debian etch 上配置了一个 apache2 反向代理虚拟主机,因为不能实现代理到应用服务器的负载均衡,所以感觉不太完美。今天配置了一下 lighttpd,发现用 lighttpd 实现反向代理虚拟主机比用 apache2 还要简单,而且实现负载均衡也很容易。早知如此,就不捣鼓 apache2 了。

debian etch 中有 lighttpd 这个包,直接 apt-get 就可以安装了。

安装之后,运行一下:

lighty-enable-mod proxy

就打开 proxy 扩展了。

编辑 /etc/lighttpd/conf-enabled/10-proxy.conf,加入:

$HTTP["host"] =~ "gatetest.(ujn.edu.cn|ujn.cn|ujn6.edu.cn|ujn.org.cn)" {
 
proxy.balance = "hash"
 
proxy.server  = ( "" => ( ( "host" => "10.0.0.10" ),
                            
( "host" => "10.0.0.11" ),
                            
( "host" => "10.0.0.12" ),
                            
( "host" => "10.0.0.13" ) ) )

这样的配置信息就可以了。

至于 lighttpd.conf 文件,可以去掉一些模块和配置,一般只需要保留这些就可以了:

server.modules             = ( "mod_accesslog" )
server.document-root       = "/var/www/"
server.errorlog            = "/var/log/lighttpd/error.log"
accesslog.filename         = "/var/log/lighttpd/access.log"
server.pid-file            = "/var/run/lighttpd.pid"
server.dir-listing         = "disable"
server.username            = "www-data"
server.groupname           = "www-data"
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"

如果要允许 IPv6,可以加入:

server.use-ipv6 = "enable"

选项。

以上配置就实现了一个反向代理。这种方式配置的话不需要修改 /etc/hosts,而且能够实现负载均衡,相当不错。不过 debian 的 lighttpd 包是不带 mod_cache 这个模块的,因为这个模块是第三方模块,需要打补丁自己编译。为了方便,我重新编译了 lighttpd 的 debian 包,这个包里已经包含了 mod_cache 模块了,只需要安装好之后,只需要执行一下:

lighty-enable-mod cache

就可以开启 cache 模块了。

编译好的带 cache 模块的 lighttpd 包可以在这里下载:lighttpd_1.4.13-4_i386.deb.zip

» 阅读全文

最近,学校里又有许多地方要申请开通网站,因为是学校,所以校园网出口主要是教育网,虽然也有电信和网通的出口,但是 IP 跟教育网的公网 IP 比起来稀有的很,所以,一般部门申请开通网站都需要开通教育网出口,而不会给他们一个电信或者网通的 IP。但问题是,教育网出口的收费是按照流量来收费的,费用相当高,所以,如果许多部门都来开通教育网出口的话,那学校在这方面会支出很大一笔。为了解决这个问题,我于是打算搞一个反向代理,出口搞成教育网和网通双线的,属于教育网免费地址的就走教育网,非免费公网地址就走网通出口。因为网通出口是包年的,不用白不用,这样就省了给教育网交钱啦。

至于反向代理是什么我就不说了,不知道的同志上 google 搜一下就知道了。这里主要写一下如何在 debian etch 上用 apache2 配置反向代理虚拟主机。

首先用 debian-40r0-i386-netinst.iso 安装最小化的系统,任何多余的东西都不要。

安装好之后,配置好 sources.list,然后更新一下系统。

用 apt-get install apache2 安装 apache 2。

安装好之后,进入 /etc/apache2/mods-enabled 目录,所有的扩展都可以删除。

然后在 /etc/apache2/mods-enabled 目录下建立 proxy 和 url_rewrite 扩展的软链接。

ln -s ../mods-available/proxy.conf proxy.conf
ln -s ../mods-available/proxy_http.load proxy_http.load
ln -s ../mods-available/proxy.load proxy.load
ln -s ../mods-available/rewrite.load rewrite.load

然后修改 proxy.conf 内容为:

proxy.conf
<IfModule mod_proxy.c>
        ProxyRequests Off
        
<Proxy *>
                AddDefaultCharset off
        
</Proxy>
        ProxyVia Off
</IfModule>

然后再修改 /etc/apache2 目录下的 apache2.conf 文件内容为:

apache2.conf
ServerRoot "/etc/apache2"
LockFile /var/lock/apache2/accept.lock
PidFile /var/run/apache2.pid
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
<IfModule mpm_worker_module>
    ServerLimit          16
    StartServers          2
    MaxClients          150
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>
User www-data
Group www-data
HostnameLookups Off
ErrorLog /var/log/apache2/error.log
LogLevel warn
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
Include /etc/apache2/httpd.conf
Include /etc/apache2/ports.conf
Include /etc/apache2/conf.d/
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
ServerTokens Prod
ServerSignature Off
Include /etc/apache2/sites-enabled/

其中,IfModule mpm_worker_module 段中的具体数据需要根据具体服务器的情况(如内存、CPU 等)进行配置。

接下来修改 /etc/apache2/sites-enabled 目录下的 000-default 文件:

000-default
NameVirtualHost *
<VirtualHost *>
        ServerName webgate1.ujn.edu.cn
        ServerAlias *.ujn.edu.cn *.ujn6.edu.cn *.ujn.org.cn *.ujn.cn
        DocumentRoot /usr/share/apache2/error
        RewriteEngine On
        RewriteCond %{HTTP_HOST} (.*)\.ujn(6*)\.(edu\.cn|org\.cn|cn)
        RewriteRule ^/(.*) http://%{HTTP_HOST}/$1 [P,L]
        ErrorLog /var/log/apache2/error.log
        LogLevel warn
        CustomLog /var/log/apache2/access.log combined
        ServerSignature Off
</VirtualHost>

这个文件是配置反向代理的关键,ServerName 指定的是该服务器的名字,可以部署多台,然后分别命名 webgate1、webgate2、webgate3 … 即可。

ServerAlias 是指定该服务器的别名,也就是我们要代理的站点的名字,为了方便,这里使用了通配符。这样做,以后增加站点时就不需要再修改该配置文件了。

RewriteEngine On 是打开 URL 重写引擎。

RewriteCond 是进行 URL 重写的条件,这里的条件是要访问的主机名与我们代理的主机名匹配。为了便于以后增加站点不需要修改配置文件,这里匹配的主机名也用了批量匹配的方式。

RewriteRule 是把允许代理的请求强制作为代理请求发送,并立即中断重写处理。

到这一步,apache2 就配置完了。剩下的就是关于 DNS 的配置了。

首先给你的 apache2 反向代理在你所管理的 DNS 服务器上配置好它的域名,例如本例中就可以将它配置为 webgate.ujn.edu.cn,这里,可以将多个反向代理服务器配置为这同一个 webgate.ujn.edu.cn 域名,这样便可以由 DNS 来实现负载均衡。

然后,将你要代理的站点的域名在你所管理的 DNS 服务器上配置为指向 webgate.ujn.edu.cn 的别名,这样所有的请求就会都发送到 webgate.ujn.edu.cn 服务器上了。

在 webgate.ujn.edu.cn 上(也就是运行 apache2 的反向代理服务器上),不要设置任何域名服务器,也就是把 /etc/resolv.conf 和 /etc/network/interfaces 中关于域名服务器的设置项删除或者注释掉。

最后修改 /etc/hosts 文件,将你要代理的站点的域名和它的真实地址写到这个文件中,例如:

192.168.1.1    gatetest.ujn.edu.cn     gatetest.ujn6.edu.cn    gatetest.ujn.org.cn     gatetest.ujn.cn

hosts 文件中,一个 IP 可以对应多个域名,都写在一行当中,用空格和 tab 分割即可。但是不可以多个 IP 对应同一个域名,否则只有最开始的那个 IP 跟域名对应关系有效。

也就是说 hosts 文件不支持这种基于域名的负载均衡。

» 阅读全文

经过 21 个月的开发,Debian GNU/Linux version 4.0 —— etch 终于发布了,它支持多达 11 款处理器架构,内置KDE,GNOME 和 Xfce 桌面环境,并提供加密软件和对 FHS v2.3 的支持。

» 阅读全文

原创作品,转载请注明出处。

在 ubuntu 6.06 LTS server 上安装 Helix Mobile Server 一文中给出了 ubuntu 上的启动管理脚本,这里再给一个 debian 的启动管理脚本。感觉 Helix Mobile Server 在 debian sarge 上运行效果更好。

helix
  1. #! /bin/sh
  2. set -e
  3.  
  4. # /etc/init.d/helix: start and stop the Helix Mobile Server daemon
  5.  
  6. HELIX_HOME=/opt/helix
  7.  
  8. if test -f /etc/helix.conf; then
  9.     . /etc/helix.conf
  10. fi
  11.  
  12. test -x $HELIX_HOME/Bin/rmserver || exit 0
  13. ( $HELIX_HOME/Bin/rmserver -h 2>&1 | grep -q Helix ) 2>/dev/null || exit 0
  14.  
  15. check_for_helix_stop() {
  16.     ( ps -A | grep -q `cat $HELIX_HOME/Logs/rmserver.pid` ) 2>/dev/null || return 0
  17.     return 1
  18. }
  19.  
  20. check_for_helix_start() {
  21.     ( ps -A | grep -q `cat $HELIX_HOME/Logs/rmserver.pid` ) 2>/dev/null || return 1
  22.     return 0
  23. }
  24.  
  25. helix_failed() {
  26.     echo "[failure]"
  27.     exit 1
  28. }
  29.  
  30. export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"
  31.  
  32. case "$1" in
  33.   start)
  34.         echo -n "Starting Helix Mobile Server..."
  35.         check_for_helix_start || start-stop-daemon --start --quiet --background --exec $HELIX_HOME/Bin/rmserver -- $HELIX_HOME/rmserver.cfg || helix_failed
  36.         echo "[ok]"
  37.         ;;
  38.   stop)
  39.         echo -n "Stopping Helix Mobile Server..."
  40.         check_for_helix_stop || start-stop-daemon --stop --quiet --oknodo --pidfile $HELIX_HOME/Logs/rmserver.pid || helix_failed
  41.         echo "[ok]"
  42.         ;;
  43.  
  44.   reload|force-reload)
  45.         echo -n "Reloading Helix Mobile Server..."
  46.         check_for_helix_stop || start-stop-daemon --stop --signal 1 --quiet --oknodo --pidfile $HELIX_HOME/Logs/rmserver.pid --exec $HELIX_HOME/Bin/rmserver || helix_failed
  47.         check_for_helix_start || start-stop-daemon --start --quiet --background --exec $HELIX_HOME/Bin/rmserver -- $HELIX_HOME/rmserver.cfg || helix_failed
  48.         echo "[ok]"
  49.         ;;
  50.  
  51.   restart)
  52.         echo -n "Restarting Helix Mobile Server..."
  53.         check_for_helix_stop || start-stop-daemon --stop --quiet --oknodo --pidfile $HELIX_HOME/Logs/rmserver.pid || helix_failed
  54.         check_for_helix_start || start-stop-daemon --start --quiet --background --exec $HELIX_HOME/Bin/rmserver -- $HELIX_HOME/rmserver.cfg || helix_failed
  55.         echo "[ok]"
  56.         ;;
  57.  
  58.   *)
  59.         echo "Usage: /etc/init.d/helix {start|stop|reload|force-reload|restart}"
  60.         exit 1
  61. esac
  62.  
  63. exit 0

» 阅读全文