2006/11/26

尝试了两个新的免费软件

尝试了两个新的免费软件LCISOCreatorCDBurnerXP Pro,前者是用来把光盘的内容Rip出来做成一个ISO的软件,后面一个是用来刻录光盘的,发现这两款免费的软件非常好用,不差于ultraiso和NERO,NERO7实在是太肥了。

我通常复制光盘都喜欢把它先rip成iso格式,然后再刻录,把硬盘的文件制作为isoCDBurnerXP Pro就可以达到,可惜它不能直接把CDROM里面的光盘直接制作ISO,否则它一个就足够了,这样加上前面一个ISO creater,一切OK,终于可以扔掉肥硕的Nero了,也可以和盗版的untraiso editor告别了。

推荐我的freesoftware的收藏:

my del.icio.us for Freesoftware





Del.icio.us : , ,

2006/11/25

AMD 64 Freeze On Debian

我的PC是AMD 64 X2 3800,M2N-E主板,装了Debian-etch AMD 64,配置好各种X 字体 输入法等等之后,遗憾的发现,X-windown下面不停的Freeze,表现为鼠标键盘间或的失去相应,而且尤其是用鼠标stroll down的时候。上Google一搜,果然,n多的人都有这个问题,debian里面的bug report已经有了 #379480

通过搜索debian的AMD64邮件列表,发现在启动的时候加一个noapic选项会解决,但是也有可能带来网卡启动不了的毛病。

后来发现OpenBSD也有这个毛病。看来暂时没救了,等bug解决吧。

Del.icio.us : ,

2006/11/24

有线通同一个Cable Modem下两台机器添加路由之解决方案

有线通,两个实IP,Windows和Vmware里面的linux各一个,为了能在它们之间直接连线而不受cablemodem的1M带宽限制,需要添 加静态路由(同时也适用于非vmware里面的linux,因为vmware里面的linux本来就是局域网的一台linux)

以下转自cableplus官方网站

不 过两台pc共享上网后也有一个问题,那就是两台pc之间的通讯是通过OCN的网络而不是只通过hub直接通讯,这是因为pc设置dhcp后,在获取ip等 网络信息后生成自己的路由表时将到非本地的任何网络的路由设置为OCN网络上的一个网关,所有到其他pc(包括同一个hub下连的pc)的通信都通过 scn网络上的某个网关,故而这两台pc之间的通讯速度是受cable modem的上下行速度限制,尤其cable modem的上行速度比下行慢一倍,故两台pc之间的通讯更为缓慢,而且也会受到OCN网络延时的影响。
解决这个两台pc之间通讯的问题,只要做一个路由设置,在两台pc互相设置永久指向彼此的路由为对方(一般情况下pc获得ip地址不会改变,如果改变可以删除这条路由设置,重新设置新的路由)。
windows 有一个route命令用来显示、人工添加和修改路由表项目的,该命令只有在安装了 TCP/IP 协议后才可以使用。它的使用方法如下:route [-f] [-p] [command ] [mask subnetmask] [metric costmetric],其中:
-f:清除所有网关入口的路由表。如果该参数与某个命令组合使用,路由表将在运行命令前清除。
-p:该参数与 add 命令一起使用时,将使路由在系统引导程序之间持久存在。默认情况下,系统重新启动时不保留路由。与 print 命令一起使用时,显示已注册的持久路由列表。忽略其他所有总是影响相应持久路由的命令。
Command可指定一个命令。Destination可指定发送 command 的计算机。
mask subnetmask:指定与该路由条目关联的子网掩码。如果没有指定,将使用 255.255.255.255。gateway 参数可指定网关。名为Networks的网络数据库文件和名为Hosts 的计算机名数据库文件中均引用全部 destination 或 gateway 使用的符号名称。如果命令是 print 或 delete,目标和网关还可以使用通配符,也可以省略网关参数。
例如,pc 1的获得的ip地址为:100.100.100.100,pc2获得ip的地址为100.100.200.200
则在pc1的命令行下输入:route add -p 100.100.200.200 mask 255.255.255.255 100.100.100.100
则在pc2的命令行下输入:route add -p 100.100.100.100 mask 255.255.255.255 100.100.100.200.200
在两台pc下输入route print:可以看到路由表中将增加一行:
pc1:
Network Destination Netmask Gateway Interface Metric
100.100.200.200 255.255.255.255 100.100.100.100 100.100.100.100 1
pc2:
Network Destination Netmask Gateway Interface Metric
100.100.100.100 255.255.255.255 100.100.200.200 100.100.200.200 1
pc关电重启路由仍然存在。
此路由的删除方法很简单,如:
pc1: route delete 100.100.200.200
pc2: route delete 100.100.100.100

以上方法是在Windows下面的

以下是Linux里面的。

第一步,需要到3322.org给两台机器分别申请两个域名,以方便后面的操作。

具体见www.3322.org的网站帮助,申请到域名,下载到客户端,并且设置其域名在开机后自动更新。

以下操作时候,假设已经有如下前提

Windows机器:winxp.8866.org

linux机器:linux.8866.org

做了下面一个脚本localroute.sh

在开机后自动执行的脚本当中增加localroute.sh add,让它在最后一个执行

平时可以localroute.sh show看一下路由

#!/bin/sh
while [ -z "$WIN_IP" ]; do
WIN_IP=`nslookup winxp.8866.org | sed -n '6p' | awk -F": " '{print $2}'`
LIN_IP=`nslookup linux.8866.org | sed -n '6p' | awk -F": " '{print $2}'`
done
ACTION=$1
case "$1" in
del | add)
route ${ACTION} -host ${WIN_IP} gw ${LIN_IP}
;;
show)
echo "Windows IP:${WIN_IP}"
echo "Linux IP:${LIN_IP}"
route
;;
*)
echo "Usage: $0 {add|del|show}"
exit 1
;;
esac

2006/11/21

SSH Tunnel之fuck GFW整体解决方案

在不能使用代理服务器或者tor绕开防火长城的场合(比如单位里面不可以使用非企业代理,比如日后tor被土共封锁),如果ssh 22端口没有被封锁,那就可以利用OpenSSH强大的tunnel功能来
实现高速安全的访问Internet任意开放网站的任意开放端口 。在这里简称挖地道

1准备条件:
1.1 某国外主机shell,这个需要你自己去找,买一个或找找一个免费的,需要上面的开启sshd
1.2 Firefox浏览器配合foxyproxy扩展,虽然用IE也方便,但是当大多数网站不需要挖地道访问只有个别网站需要挖地道访问自己又是懒人懒得每次访问blocked网站去切换浏览器的代理设置的情况下,用foxyproxy这个基于模版自动匹配代理的扩展还是很方便的。
1.3 国外代理服务器,任意一个高速匿名免费代理服务器

2原理:
2.1首先man ssh,注意ssh的manpage里面这也一个选项:

-L port:host:hostport
Specifies that the given port on the local (client) host is to be
forwarded to the given host and port on the remote side. This
works by allocating a socket to listen to port on the local side,
and whenever a connection is made to this port, the connection is
forwarded over the secure channel, and a connection is made to
host port hostport from the remote machine. Port forwardings can
also be specified in the configuration file. Only root can for-
ward privileged ports. IPv6 addresses can be specified with an
alternative syntax: port/host/hostport


2.2基本格式

ssh -l USER -L local_port:any_host_blocked_by_gfw:the_blocked_hosts_port ssh host_which_out_of_gfw

这样任何被屏蔽的主机(any_host_blocked_by_gfw)的任何端口(the_blocked_hosts_port),就可以在本机127.0.0.1的localport访问了

2.3解释,这里有好几个host不要搞错。
ssh -l USER是你用来登录目标ssh主机的用户名,ssh就加上一个-l选项
local_port:本机的某端口,最好大一些,保证没有被其他程序占用的,以后被屏蔽主机的某端口就被映射在本机的此端口
any_host_blocked_by_gfw:任何一个被gfw干了的主机,比如zh.wikipedia.org
the_blocked_hosts_port:前面提到的被干了的这个主机的某个端口,比如25 23 80
host_which_out_of_gfw:任何一台不在土共的GFW范围内的ssh host

2.4例子:
ssh -l fuckGFW 8088:zh.wikipedia.org:80 fuckgfw.free.com

我用fuckGFW帐号登录fuckgfw.free.com主机,并且把维基百科中文的80端口映射到本机的8088端口,这样下次用http://localhost:8088来访问维基百科

3应用:
每次去挖这样一个坑麻烦了点,这时候就要动动脑筋想想别的办法了。普通的代理服务访问国外主机虽然会被土共的gfw盾,但是,如果把普通国外代理服务器加上一个ssh的套套,那土共的GFW就煞笔了,而且即使土共把这个代理服务器本身干了也没用,因为我们的国外ssh host和国外的代理服务器都是在GFW之外的,那就是终极解决方案:
用ssh tunnel给国外代理服务器加套
例子:
ssh -l fuckGFW 3128:proxy.anywhere.com:8080 fuckgfw.free.com

按照提示输入fuckGFW帐号在fuckfw.free.com主机的密码,然后保持这个ssh连接不要关掉,
这样就给国外的代理服务器proxy.anywhere.com加了套,然后在本地的浏览器设置代理为localhost:3128,那么只要你到fuckgfw.free.com的连接是22端口的ssh加密连接,土共就对你的内容无可奈何。
至于fuckgfw.free.com和proxy.anywhere.com之间是不是加密的会不会监听,目前看来似乎是不加密的(否则我在防火墙内我的本机开一个ssh再加上一个squid就可以访问任意国外主机了),所有这样做还是有风 险,千万不要用这样的方案访问你的paypal帐号gmail等等。但是用来绕开防火墙,正常使用google是足够了,访问blogspot wikipedia等等也没有问题。

此方案的突出几个优点:

a:不需要在ssh主机上面安装软件,这样需要相对较少的ssh shell权限,很多免费的国外ssh主机就可以达到这个要求。

b:不需要在ssh主机上面开允许连入的端口,这样也可以减少对ssh 主机的需求,很多ssh主机只允许22端口连入时,我们这个方法也可以奏效,以上面的例子,3128端口是开设在你自己使用的client 机器的,8080端口是开设在代理服务器proxy.anywhere.com的,ssh主机上面并没有开设额外的端口,还是只有一个22端口。当然,ssh主机应该可以访问intenet的任何端口,这个应该不是问题的吧。

c:安全。开设在client的端口默认是只允许client本机访问的,同一局域网无法访问,除非你调整ssh client的设置。而且前面提到的,主机上面除了原先的22端口也不开设任何额外的端口,非常的安全。也避免了自己秘密安装的防火墙被其他人透露后带来流量激增的问题

d:专门针对GFW的关键字过滤,这个方法同其他的绕开GFW主机方案比如在你购买的国外主机安装Phpproxy等等最大的不同和优点在于此。防火墙最难对付的地方并不是直接block主机地址,而是当访问国外主机返回的字符中有所谓敏感字词的时候给你来个链接重置,非常的讨厌。用普通的代理服务器(无论是国外的还是你自己安装的还是pkblogs.com等等这种类型的) 可以轻松的绕开GFW对block主机地址的屏蔽,但是当有敏感字词的时候还是难逃法眼。而这个方法,由于从你的client到ssh host之间是ssh密文传播的,GFW无能为力。


4.To Do
通常网上容易找到的代理服务器都是只支持http的,支持https的还没有找到,所以访问https的内容比如gmail还是没有好的解决方法,目前只能设置一下foxyproxy直接访问https的内容(或者用tor),还有一个办法就是再挖一个通道,把gmail的pop服务器的端口和smtp直接映射在本地的某端口,宁可暂时放弃一下gmail web的丰富feature,也要不受限制的访问google的服务。注意,在ssh到一台主机的时候,可以同时挖n条隧道的,也就是可以在ssh命令后面加上n个-L 参数

5.补充
使用windows操作系统的也可以用此方法,putty对ssh的tunnel有完美的支持。

抓图一张作为例子,第一行是我自己用的http代理,马赛克一下,hoho,第二行和第三行把gmail的pop.google.com和smtp.google.com的端口加了ssh的套套分别映射到了本机的995和587端口,下面正在填写的那个是一个例子,把国外代理服务器的anyproxy.abroad.com的8080端口加ssh套套映射到本地的5088端口,供浏览器作为代理服务器 localhost:5088使用。

putty

Del.icio.us :

2006/11/20

[转载]ssh tunnelling

http://www.brandonhutchinson.com/ssh_tunnelling.html

ssh tunnelling

ssh tunnelling is an excellent way to tunnel insecure protocols through a secure communication channel. In this example, I'll tunnel POP3 traffic using ssh. Traditional POP3 traffic, including username and password information, travels clear-text across the network.

OpenSSH is used in the following examples.

To tunnel POP3 traffic using ssh: 1. Make sure an ssh client is installed on your machine and an ssh server is installed on the POP3 server. 2. Create a local ssh tunnel on your machine (port 1234 for this example) to the POP3 server's port 110. You will need to be the root user to bind to "privileged" ports (< 1024). # ssh -f -N -L 1234:localhost:110 user@POP3_server 3. Test the tunnel. $ telnet localhost 1234 You should see the POP3 server's banner information. 4. Configure your mail client to access your mail via POP3 using mail server localhost and port 1234.

"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 -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" || $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 2006-09-20 update using pgrep: #!/bin/sh # REMOTE_HOST is the name of the remote system REMOTE_HOST=my.home.system # $COMMAND is the command used to create the reverse ssh tunnel COMMAND="ssh -N -R 7437:localhost:22 $REMOTE_HOST" # Is the tunnel up? pgrep -f -x "$COMMAND" > /dev/null 2>&1 || $COMMAND Old script: #!/bin/sh # $COMMAND is the command used to create the reverse ssh tunnel COMMAND='ssh -N -R 31337:localhost:22 my_home_system' # Is the tunnel up? CHECK_TUNNEL=`ps -eo args | grep "$COMMAND" | grep -v grep` # If the tunnel is not up, create the tunnel if [ -z "$CHECK_TUNNEL" ] ; then $COMMAND fi Links: http://www.akadia.com/services/ssh_port_forwarding.html http://www.hackorama.com/pages/stunnell.shtml http://proxytunnel.sourceforge.net/ http://proxytunnel.sourceforge.net/papers/muppet-200204.html

Back to brandonhutchinson.com.

Last modified: 2006/10/23
http://xn.lupaworld.com/index.php/10/action_viewspace_itemid_33.html

ssh 使用新法

ssh 使用新法:公网(合法 ip)用户访问内网(私有 ip)服务器(http,ftp,sshd,cvs...),内网的朋友不妨一看。
内网的朋友苦于没有合法 ip,不能对外提供 internet 服务。解决方案很多,可以通过在网关做端口映射,或其他的辅助软件等。 本文介绍两种比较简单实用的方法,利用 ssh 这个强大的工具。 (以下方法不分平台,都适用) 案例一、 内网主机 A ,开了 http,ftp ,http ,vnc,sshd,socks5,cvs 等服务。无合法 ip 地址。 外网主机 B ,开了 sshd 服务。有合法 ip : 218.xxx.xxx.xxx 我们的目的是让 B 能访问 A 上的各种服务。 步骤: 1、A 知道 B ip 后,先用 ssh client 连上 B,命令如下: ssh -R 1234:localhost:21 -l root 218.xxx.xxx.xxx 解释: 关于 ssh 的参数,请看 ssh --help -L listen-port:host:port Forward local port to remote address -R listen-port:host:port Forward remote port to local address -L local (本地) -R :remote (远程) -R 1234:localhost:21 其实做了个“端口转发(forward)"。 意思是主机 A 把本地的 21端口(对应ftp服务)映射为 B 的1234 端口(任意未被占用),同时 A 监听 B 的1234 端口。 在 B 上用 netstat -al | grep 1234 ,你能看到这个监听连接。 任何发送到 B 1234 端口的请求将被传送到 A的 21 端口。 2、B 用 ftp 工具(任意,如gftp) 连本地的 1234 端口,输入 A 的 ftp 用户和密码。 ftp localhost 1234 千万不要觉的奇怪,为什么连的是本地的地址。 举个不恰当例子,相当于 A 在 B 的房间里装了个窃听器(监听端口),那么 B 在房间里说的话就通过窃听器传送到了 A。 3、推广: 如果 B 没占用 21 端口的话,那么可以写成: A使用: ssh -R 21:localhost:21 -l root 218.xxx.xxx.xxx B使用: ftp localhost 如果你想使用 A 上的 http 或其他服务,只需改变服务端口: http服务 : A使用:ssh -R 1234:localhost:80 -l root 218.xxx.xxx.xxx B使用:w3m http://localhost:1234 sshd服务: A使用:ssh -R 1234:localhost:22 -l root 218.xxx.xxx.xxx B使用:ssh localhost -p 1234 vnc 服务: A使用:ssh -R 1234:localhost:5901(其他) -l root 218.xxx.xxx.xxx B使用:vncviewer localhost:1 socks5服务: A使用:ssh -R 1234:localhost:1080 -l root 218.xxx.xxx.xxx B 略 cvs 服务: A使用:ssh -R 1234:localhost:2401 -l root 218.xxx.xxx.xxx B使用:cvs -d :pserver:root@localhost:1234/home/cvsroot login 这里是否一定要用 root ,涉及到权限问题,具体还得靠大家来总结经验。 案例二、 部分朋友会问了,这样的话只是两台机器的互相通讯,如何让广域网的人都能访问呢? 聪明的你,这时候可能已经有了答案。 内网主机 A ,开了 http,ftp ,http ,vnc,sshd,socks5,cvs等服务。无合法 ip 地址。 外网主机 B ,开了 sshd 服务。有合法 ip : 218.xxx.xxx.xxx 我们的目的是让 internet 上的任何主机能访问 A 上的各种服务。 步骤: 1、首先,B 的sshd 服务端做点小小的设置: vi /etc/ssh/sshd.config 加入 GatewayPorts yes 然后重启 sshd 服务: /etc /init.d/ssh restart 或 /etc/init.d/sshd restart (解释: 不加,默认会把监听端口绑定在 localhost 或 lo(127.0.0.1),这样除了 B自身别人是没法访问监听端口的。 加入 GatewayPorts yes,把监听端口绑定到 0.0.0.0 ,这样外部的所有机器都能访问到这个监听端口。 主要是考虑安全性问题,默认情况,只允许本地访问。 这里才是真正的难点,实验了一个晚上,累人呀!给点鼓励吧 :) 2、A 知道 B ip 后,先用 ssh client 连上 B,命令如下: ssh -R 21:localhost:21 -l root 218.xxx.xxx.xxx (事先确定 B 的21 端口未被占用) 3、分布在 internet 的其它客户机使用 ftp 工具(任意),连 B 21端口。 ftp 218.xxx.xxx.xxx 21 你会发现自己连上了内网 A 的ftp 服务。 此法和案例一完全一样。 internet --------->> B 21 端口----------->>A 21端口 可以叫做端口转发,或隧道技术,也可以称之为跳板(B),或反弹 。呵呵,我瞎说的。。。 可能遇到的问题: Country:/etc# ssh localhost -p 1234 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host is be:5f:d2:45:66:4d:0c:9e:2b:6b:45:65:a7:b2:85:28. Please contact your system administrator. Add correct host key in /root/.ssh/known_hosts to get rid of this message. Offending key in /root/.ssh/known_hosts:11 RSA host key for localhost has changed and you have requested strict checking. Host key verification failed. Country:/etc# ssh localhost -p 1234 root@localhost's password: Last login: Mon May 5 02:39:53 2003 from localhost localhost root # 如上问题,请删除 ~/.ssh/known_hosts,然后再试。 点评: 当然 ssh 还有很多的功能没有用,如先用 ssh 连接 上去后,可以用 scp命令来存取文件,等等。 scp -P xxx user@host:path/file 其它突破网关传送文件的方式也千变万化。 优点是: 可以突破网关,一般情况下,向网管要求在网关上给你做端口映射是不现实的,但用此法你可以让要好的朋友给你做。 使用方案一:比较点对点传送文件比较方便,或使用ssh进行远程控制内网。 ssh本身是加密,保证安全可靠。 缺点也不少: 使用 ssh 加密,势必影响性能,可以用 -C 选项调节压缩率。 如果象方案二使用额外的服务器,数据都要服务器中转(我是这样认为,没跟踪过),势必影响速度。 公网的服务器不好找。 建议:恳请编程高手们根据类似得原理,做个端口转发小工具,效果会更好。

2006/11/16

搬家到blogger.com安家

mblogger.cn彻底不行了,速度慢,还老维护,而且居然在post文章的时候过滤词句,俺最讨厌被过滤,因此搬家到blogger.com这里。 从今天开始,以后 yesure.mblogger.cn就不更新了。 那边的技术文章慢慢都将搬过来,其他的水文就放在那边不动了,做纪念。还好,文章不是很多,手工搬过来。

google的这个blogger.com真不错,模版,速度,email post等等。

至于这里被GFW block的问题,对我来说无所谓,如果连绕开某墙都不会,那也没有必要当我的blog的读者了。