dz论坛管理

可能标题起得有点大,但是之前我管理学校的dz论坛时可真是抓瞎~~

学了很多东西,从PHP,MYSQL到LINUX,而都只是浅浅的理解了一些,具体怎么维护真是一头雾水,这不,刚刚上了dz官网才发现该怎么作都告诉我们了。。。。。

http://www.discuz.net/usersguide/catalog.htm

使用ssh -D保证网络畅通

更新:
直接使用ssh -D,不需要使用tinyproxy
依据:
man SSH
-D [bind_address:]port
Currently the SOCKS4 and SOCKS5 protocols are supported, and ssh will act as a SOCKS server

如:
ssh -D 192.168.0.1:8133 account@sshserver
就可以建立一个sock proxy.

后在浏览器的sock proxy设置就行了。
同时也可使用priovxy转乘http,然后和squid配合。

原文:

回到北京,通上网后,就发现一个上国外的网站特别慢,而且一些网站由于GFW的原因不能访问,这个很不方便,所以对这个进行了一些研究,现在把经验分享给大家。

主要的考虑:
1. 通过GFW,正常访问wikipedia, 和国外的新闻网站。
突破GFW的方法有
(1)tor,由于P2P,且数据加密,GFW对它没有什么太大的办法,但不排除有人,专门开诱引服务器的可能。
(2)访问cgi-proxy之类的东西, (与cgi-proxy之间使用ssl连接),
(3)使用ssh, 在linux爱好者中,有不少人在国外有host, 这个也应该是一个不错的方法

2。尽可能快的加速访问国际网的速度(现在慢有人说是光纤的原因,可以光纤事故已经有一个月了,到底要到什么时候才能修好。
这个我考虑使用多个proxy同时做代理的方法,

3.接入本地网站的计算机,无需做特别的设置就可以访问使用上面的功能。
这个一般使用iptable的功能,把80端口的数据包转发到代理服务器的端口。

现在配置的

上面是ssh tunner的过程,
host1上一般需要运行一个很小的代理程序,这里使用的是tinyproxy
他可以在一般用户方式下执行
我的配置文件:

User xxx
Port 62888
Listen 127.0.0.1
Timeout 600
Logfile “./tinyproxy.log”
LogLevel Notice
PidFile “./tp.pid”
MaxClients 30
MinSpareServers 3
MaxSpareServers 10
StartServers 5
Allow 127.0.0.1
ConnectPort 443
ConnectPort 563

2007 1/29 更新:
两个注意点:
1. port需要是没有用过的, 不要使用大于65536的port,使用的port也不能是其他程序已经使用的。
2. tinyproxy的执行方法:
tinyproxy -c tinyproxy.conf -d
不加 -d的话是不行的。 实际的执行过程中,我是执行了一个screen,在screen的一个窗口上执行了上面的命令。

在另一个窗口上做测试。

3。 测试方法:
可以使用screen.
配置
.wgetrc
http-proxy=127.0.0.1:62888
然后 wget xxx

如上图的示在本地开启多种连接。
/etc/hosts
192.168.0.1 sshtunnerl1
192.168.0.1 sshtunnerl2
192.168.0.1 tornetwork

/etc/squid/squid.conf

加入

cache_peer sshtunnel1 parent 8119 7 no-digest no-netdb-exchange
cache_peer tornetwork parent 8118 7 no-digest no-netdb-exchange

acl wikidomain dstdomain .wikipedia.org
acl voadomain dstdomain .voanews.com
acl sfdomain dstdomain .sf.net
acl sourceforgedomain dstdomain .sourceforge.net

cache_peer_access sshtunnel1 allow wikidomain
cache_peer_access sshtunnel1 allow voadomain
cache_peer_access sshtunnel1 allow sfdomain
cache_peer_access sshtunnel1 allow sourceforgedomain

cache_peer_access sshtunnel1 deny all

todo:
1。怎么写好规则squid,由于 squid restart比较费时,所以不知道有没有方法可以在不重启squid的情况下更新
规则。

已经解决, 使用/etc/init.d/squid reload, 一个低级的拼写错误使我误认为squid不支持reload(感谢achaoge)
achaoge
还提出了cat squid.conf.orig acl_rules > squid.conf && reload的方法,可以把关于对不同domain的配置,集中到一个文件来。这样如果有人愿意就可以写出很方便的web based的规则编辑工具。

2。怎样实现,第三种方法,就是从internet取得大里的代理,验证后,动态修改squid的规则。

利用Putty通过ssh端口转发实现FireFox和MSN加密代理访问

http://www.chedong.com/blog/archives/001246.html
参考原文:http://thinkhole.org/wp/2006/05/10/howto-secure-firefox-and-im-with-putty/

加密传输的机制如下:

/ foo.com

浏览器 <==secure tunnel==>ssh server – bar.com

example.com

浏览器先通过加密通道链接到一台服务器上,然后通过这个服务器再访问整个互联网。主要的用途就是这个绕道访问。具体你需要通过加密通道绕过谁? 谁用谁知道……
具体配置过程:
SSH登录工具Putty的登录设置中配置tunnel,目标设置为Dynamic,添加一个端口7070,再按Add,一个动态转发端口就实现了;

然后用相应帐号ssh登录后:除了登录的终端窗口意外,本地的7070连服务器的22端口之间就有了一个SSH加密的转发通道了。

为了方便切换,可以使用FireFox的SwitchProxy tool插件,设置socks代理通过本地的127.0.0.1:7070 进行传输。

MSN的机制类似:就是在连接配置中设置sock5 加密代理。

附:
获得国外的SSH帐号或者有Dreamhost虚拟主机的可以增加ssh用户:都可以用类似机制进行加密访问。

感谢number5:
更简单方便的setup方式是使用 putty的后台命令行程序plink
plink -N username@remote.ssh.server -D 127.0.0.1:7070
其中 -N 表示不需要shell
username@remote.ssh.server 换成你ssh帐户名和主机域名或者地址
或者替换成 -load sessionname 也可以,用dreamhost上的帐号试了一下,真的很快
如何在Windows下使用密钥方式登录Linux服务器:
如果设置需要基于密钥的登录(如果不设置密钥密码,就可以自动登录了),
我没有试成使用puttygen生成的密钥(公钥/私钥)直接部署在Linux服务器上。目前成功的方法是:先在服务器上用服务器上用./ssh-keygen生成密钥对,将公钥 id_rsa.pub >> 部署到要登录到的服务器上:/home/username/.ssh/authorized_keys 中,密钥在Windows客户端下使用:将密钥 id_rsa下载到本地,然后用puttygen导入id_rsa 另存转换为putty格式的密钥id_rsa.ppk即可。然后使用 plink -i c:pathtoid_rsa.ppk username@example.com方式登录。

注意:
加密通道和网站是否提供https没有直接的关系,https是指服务商直接向客户提供的加密,例如:GMail: https://mail.google.com/mail/, GReader: https://www.google.com/reader/view/,从ssh server到服务网站之间仍然是明文的http传输;
加密通道和匿名不匿名访问网站也没有直接关系。
ssh_tunnelling

捐献1$,获得国外主机登录帐号:SilenceIsDefeat.org
Che Dong (2006年11月25日 18:37) | 评论(5) | 引用通告(2)
http://silenceisdefeat.org/ 是一个非营利组织(创建于2000年):支持言论自由的公共Unix主机系统, 捐献(基于PayPal: 最高50$)后可以获得一个Unix系统帐号。 目前帐号包括:50MB用户空间, http访问(http://silenceisdefeat.org/~username), ssh, sftp, imap-ssl mail, pop3-ssl mail. 加密的即时通讯端口:IRC, AIM, MSN, ICQ, Yahoo!,Jabber, and Lily. P2P BitTorrent 客户端! 而且包括服务器端的SPAM检查。此外还有几个 为IRC的频道。 支持了一把:获得的帐号信息如下服务器一台P4 2G + 1G内存,操作系统是OpenBSD,web服务支持PHP http://silenceisdefeat.org/~chedong/ 登录上去到home看了一下:目前共有 4595个用户目录。
从国内服务器的路由情况:
My traceroute [v0.71]
chedong (0.0.0.0) Sat Nov 25 16:18:27 2006
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 60.195.249.1 0.7% 304 21.3 17.6 0.5 128.1 10.9
2. 202.99.57.129 3.0% 304 19.8 16.7 0.3 25.6 6.6
3. 202.99.57.253 1.3% 304 20.1 29.2 0.7 215.0 38.6
4. 221.4.0.5 1.3% 304 53.4 51.5 35.0 59.8 6.4
5. 221.4.4.225 2.6% 304 66.4 69.7 45.9 214.0 26.9
6. 221.4.0.9 2.0% 304 63.0 70.7 42.6 272.0 39.7
7. 219.158.10.137 2.6% 304 63.4 62.1 42.1 247.2 20.6
8. 219.158.4.53 2.0% 304 90.2 91.0 68.8 287.4 26.7
9. 219.158.3.30 2.6% 304 91.9 85.0 68.8 92.7 6.5
10. 160.81.7.81 0.3% 304 256.0 253.0 235.0 269.1 6.0
11. 144.232.4.245 2.6% 304 264.6 265.1 237.1 441.4 24.7
12. 144.232.20.181 2.6% 303 257.7 267.9 236.7 462.0 41.3
13. 144.232.3.218 2.6% 303 259.2 268.3 237.3 474.7 41.7
14. 144.232.9.240 1.6% 303 264.4 265.5 237.9 434.9 26.3
15. so2-0-0-2488M.ar1.SJC2.gblx.net 6.9% 303 357.9 353.4 333.1 484.3 19.7
16. so0-0-0-2488M.ar2.TPA1.gblx.net 8.2% 303 405.1 402.4 384.0 471.6 12.2
17. Lightspeed-IP-Inc-Triple-8-Tampa 7.3% 303 666.4 662.9 645.1 677.5 6.8
18. ve49.core02.tpa.sagonet.net 9.2% 303 509.5 506.6 484.2 526.6 7.2
19. gi0-2.ds05.tpa.sagonet.net 9.9% 303 311.2 308.3 291.6 321.4 6.6
20. ???
21. silenceisdefeat.org 99.7% 303 501.0 501.0 501.0 501.0 0.0

在 *nix 下
使用 SSH 命令:
ssh -f -C -q -N -D port number username@domain.tld
这样就可以把 Tunnel 放到后台执行了,参数的具体意思请参照 ssh 的 man page。

在 Windows 下
如果想把 Tunnel 放到后台,Putty 似乎不提供这个功能,不过我们可以使用一个叫 MyEntunnel 的小程序。它可以使 plink (putty 的命令行形式) 运行在后台并监视之,如果网络连接断了或是其它情况使 plink 停止运行,MyEntunnel 会自动重新启动 plink 并建立连接。

http://nemesis2.qx.net/software-myentunnel.php

事实上,MyEnTunnel 就是一个 pLink 的前端程序,建立 SSH Tunnel 还是靠 pLink(自)。在 MyEnTunnel 中,我们只需要填写好相关的信息即可,不需要记忆 pLink 那“丰富”的参数。对于一般用户而言,我们只需要设置以下几项(Setting 选项卡):

SSH Server:就是你的 SSH 服务器的地址;
SSH Port:一般都是 22;
Username/Password:用户名/密码;
选中 Reconnect on Failure,Enable Dynamic SOCKS;
Port:填上你本地代理的端口,如 8080;
然后点击 Connect 就可以了,等待任务栏中的小锁变成绿色,说明我们成功建立了一条 SSH Tunnel,并在 localhost:8080 上开启了一个 Socks 服务器。在你的浏览器中进行相关设置后,你就可以看到 Feedburner,看到 WordPress.com,看到 YouTube 了……

当然,相对于直接使用 pLink 来说,MyEnTunnel 最大的优势在于“断线重连”功能。它可以自动监视 pLink 的运行状态,如果断线了便可以自动重新连接。对于本本用户来说,我们可以自由的合上本本待机了,酷

当然,MyEnTunnel 虽好,但使用还是有一定的条件的:

一个大火长城外的 SSH Server,并且支持 SSH Tunnel。这对于如今的 Blogger 来说貌似不是什么难事,Dreamhost,Bluehost 都 OK;
服务器/虚拟主机需要支持比较大的流量。这个是很需要注意的,因为通过 Tunnel 的访问所产生的流量都是要计入你的 Hosting Account 的。国外主机流量虽大,但超了费用也高,所以还是建议您最小化使用 Tunnel,另外不要分享你的 SSH Account,特别是对于 mt, dreamhost 这样支持多个 SSH Account 的主机;
本地软件支持 Sock 代理。Firefox 是没问题的,QQ/MSN/GTalk 也都没问题。如果您的软件只支持 HTTP 代理的话,我建议您用 CCProxy 的二级代理功能建立一个本地的 HTTP 代理;如果您的软件压根就不支持代理设置,可以考虑用 SockCaps 这样的软件来解决;

http://bemike.org/2007/07/16/surpassing-gfw.html
突破 GFW 一法
Published on July 16, 2007 @ 10:32 am

生活在世界上最大的局域网中,是我们的无奈,但要是想突破 GFW 办法还是有的是的。
很多人喜欢用 Tor 或是”xx之门”之类的软件穿墙,我没用过,据说这两种方法速度都不太灵光。然后有一些人用 PHProxy 这个软件把国外主机变成代理服务器,通过代理访问不能访问的网站。这个方法我认为非常的好,尤其是 PHProxy 在使用上非常简单,如果你和代理之间的网络速度良好的话,访问任何墙外的网站速度都是非常快的。
如果你自己没有国外主机的话,其实一点也没关系,在网上搜索使用 PHProxy 的服务器比搜索普通的代理服务器容易的多,而且只要能找到使用 PHProxy 的服务器,几乎 100% 都可以正常使用,这点比普通代理服务器好的太多了。
在 Google 中搜索:
intitle:phproxy
然后你就可以看到一大堆的结果,别客气,选一个你访问起来最快的,尽情的向自由的世界奔去吧!
Update: dawnh 同学有一个非常好的补充,在上述的搜索语句中加入 inurl:https 就可以访问基于内容过滤的网站了。


intitle:phproxy inurl:https

http://www.brandonhutchinson.com/ssh_tunnelling.html
“Reverse” ssh tunnel
It is possible to create a “reverse” ssh tunnel. The reverse tunnel will allow you to create an ssh tunnel from your work computer to your home computer, for example, and then login to your work machine from your home machine even if your work firewall does not permit ssh traffic initiated from your home machine!

For this to work, an ssh server must be installed on your work and home computer, and ssh (TCP port 22) must be allowed outbound from your work computer to your home computer.

$ ssh -R remote_port:localhost:22 your_home_computer

ex. $ ssh -R 2048:localhost:22 home.computer.com

At home, you would then run ssh -p 2048 localhost to log into your work computer via ssh.

Here is a script I run every 5 minutes through the cron facility on my work system to make sure the reverse ssh tunnel to my home system is up and running. It is useful in case my_home_system is rebooted.

2006-11-15 update:

#!/bin/sh

# $REMOTE_HOST is the name of the remote system
REMOTE_HOST=my.home.system

# $REMOTE_PORT is the remote port number that will be used to tunnel
# back to this system
REMOTE_PORT=5000

# $COMMAND is the command used to create the reverse ssh tunnel
COMMAND="ssh -q -N -R $REMOTE_PORT:localhost:22 $REMOTE_HOST"

# Is the tunnel up? Perform two tests:

# 1. Check for relevant process ($COMMAND)
pgrep -f -x "$COMMAND" > /dev/null 2>&1 || $COMMAND

# 2. Test tunnel by looking at "netstat" output on $REMOTE_HOST
ssh $REMOTE_HOST netstat -an | egrep "tcp.*:$REMOTE_PORT.*LISTEN"
   > /dev/null 2>&1
if [ $? -ne 0 ] ; then
   pkill -f -x "$COMMAND"
   $COMMAND
fi

ssh_tunnelling