May 14, 2012

1, 如何仅仅使用auth key验证(一旦key验证失败,则断开此ssh连接,不再进行keyboard interactive 验证,这在使用脚本或者for 循环处理批量主机时非常实用)
反之可以设置BatchMode=no

To Execute SSH and SCP in Batch Mode (Only when Passwordless login is enabled)
for ssh:  -o BatchMode=yes
for scp: -B

2, 防止ssh client检查~/.ssh/known_hosts ,
这样就不会因为对方主机被重新安装过(指纹变化)而退出ssh连接:

-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no

3, 设置Timeout (openssh支持,sun Solaris ssh没有这个选项)

ssh -o ConnectTimeout=10 Where 10 is time in seconds.

4, ssh 打洞

ssh -L 1234:skywalker:80 root@skywalker
访问本地1234端口则为访问skywalker 80号端口

ssh -R *:1234:localhost:81 root@skywalker
访问远程主机skywalker 1234端口则为访问本机的81号端口 (skywalker上sshd_config 的GaterwayPorts 需为yes)

 

5, 生成Private/Public key (命令如下,请自行选择参数)

$ ssh-keygen

id_rsa就是你的私钥,而id_ras.pub则是你的公钥)(或者id_dsa/id_dsa.pub ),现在你需要将公钥拷贝到服务器,如果你的系统有ssh-copy-id命令,拷贝会很简单:

$ ssh-copy-id ryan@targethost

否则,你需要手动将你的公钥拷贝到target host的~/.ssh/authorized_keys (或者~/.ssh/authorized_keys2 )文件中:

cat ~/.ssh/id_rsa.pub | ssh  user@targethost “umask 077; test -d ~/.ssh || mkdir -p ~/.ssh ; cat >> ~/.ssh/authorized_keys”

如果ssh key不生效,记得检查.ssh  和 ~/.ssh/authorized_keys的属性,确保没有g和o的rwx权限

 

6, 重定向X display

如果你需要将远程主机application 的X display到你的笔记本(前提是你的笔记本具有X display的能力, Linux/Unix/Macos天生具有,windows请找相应的软件,XManager?)

此时你需要使用-X  参数

ssh -X -l root targethost “xlogo”

这个选项需要服务器开启X forwarding,编辑/etc/ssh/sshd_config,添加或修改此行:

X11Forwarding yes

7, 重新定义EscapeChar 

默认情况下,对于已有的ssh connection,如果键入 ~. (tilde  然后 dot) ,ssh连接将会自动断开。但这对于远程使用跳板机(管理机)的情况就不太实用,当通过笔记本ssh到管理机上,并ssh到其他主机或者 Solaris Zone console管理的时候,(这样的场景中,当你需要断开管理机与其他主机的ssh连接,或者退出Solaris zone console) 键入  ~. 将会直接断开你与管理机的 ssh 连接。 所以我们需要重新定义笔记本端ssh client的EscapeChar

我的定义如下,编辑~/.ssh/config,加入

EscapeChar `

这样EscapeChar就从~ (tilde) 定义成了 ` (backquote) ,在管理机端,你可以放心使用~. 来断开跳板连接,而使用 `.  时才会断开你与跳板机的连接。(Windows用户请自行查找ssh client配置文件位置,应该也可配置)

 

8,外一则: 关于ssh client pseudo-tty 模式 .bashrc 在-t情况下不加载 

November 8, 2011

原文在此:
Top 10 DTrace scripts for Mac OS X

http://dtrace.org/blogs/brendan/2011/10/10/top-10-dtrace-scripts-for-mac-os-x/

原文写的非常细致,连如何打开Terminal都在开篇的时候做了介绍,我这里只是做一下简单摘要,建议大家看原文。

MacOS内已经内置很多Dtrace脚本在/usr/bin下, 用sudo即可直接使用,这篇文章除了它们,也使用了Dtrace Book中的一些实用脚本。 脚本下载地址:DTrace book tarball

希望对Dtrace 入门的看山哥的Dtrace中文教程

 

1, iosnoop ,  察看磁盘io 情况,注意,是“ 磁盘 ” io,不是文件系统IO。 (iosnoop -h for help)

2, hfsslower.d (dtrace book) 察看dfs文件系统 io, 文件系统cache/hint等,所以会比 iosnoop看到的信息多很多。

    sudo ./dtbook_scripts/Chap5/hfsslower.d 1 (Trace 1ms 及更慢的文件系统io)

3, execsnoop , 察看新系统进程的exec  (sudo execsnoop -v)

4, opensnoop , 察看进程打开文件情况 ( sudo opensnoop -ve)

5, dtruss ,类似Linux的Strace, Solaris的truss (dtruss -h for help, dtruss -e ls , dtruss -n firefox-bin)

6, soconnect_mac.d (dtrace book), 察看outbound TCP connection 情况.
还有 soaccept_mac.d 察看 INbound 情况

7, errinfo ,系统调用fail的err信息

8, bitesize.d , 字符方式直观显示app的 I/O workload

9, iotop , (iotop -CP 1)
C: rolling output , P: disk busy percentage.

10, maclife.d (dtrace book) 跟踪删除的/创建的 文件。

更多脚本:

man -k dtrace

October 30, 2011

1, 安装squid

aptitude install squid

or

yum install squild

2, 配置:

vim /etc/squid/squid.conf

增加如下:

auth_param basic program /usr/lib64/squid/ncsa_auth /etc/squid/squid_user.txt

auth_param basic children 5

acl squid_user proxy_auth REQUIRED

acl myip  src 111.222.0.0/16  #你的client ip address network

http_access allow squid_user myip

3, 配置用户名密码:

htpasswd -c /etc/squid/squid_user.txt userid

cat /etc/squid/squid_user.txt

重启squid:

/etc/init.d/squid restart

 

4, 修改Linux文件描述符number:

默认下Linux的文件描述符为1024个,按照以下方式增大

  1. # ulimit -n #查看当前文件描述符数量
  2. # ulimit -HSn 65499 #修改文件描述符数量
  3. #写入配置文件,使配置永久生效:
  4. # echo “* soft nofile 65499″ >> /etc/security/limits.conf
  5. # echo “* hard nofile 65499″ >> /etc/security/limits.conf

 

Reference :

http://linux.vbird.org/linux_server/0420squid.php#adv_auth

http://www.libertyvps.com/thread-46-1-1.html

October 25, 2011

今天遇到两例ssh pseudo-tty的使用,都值得记录一下。

一是在使用mindterm的时候,需要借助跳板机, 流程如下:

<laptop(mindterm)> ssh to   <jump box> ssh to <target host>

这种情况下,使用pseudo-tty就是必须的  (-t),否则 <jump box>上的ssh没法进行交互。根据ssh 的manual :

-t      Force pseudo-tty allocation.  This can be used to execute arbitrary screen-based programs on a             remote machine, which can be very useful, e.g. when implementing menu services.  Multiple -t options             force tty allocation, even if ssh has no local tty.

如果需要远程运行基于screen-based的程序,如ssh -t -l root targethost “vim”,则这个 -t 是必不可少的。
第二例是caifeng遇到的诡异问题。他需要远程到target host A执行一些脚本,发现当不使用-t的时候,系统每次都会自动加载.bashrc 中的内容,造成脚本运行异常。如果使用-t参数,ssh 过去的session就是忽略掉.bashrc。 从而脚本正常运行。
首先看bash manual:

–norc     Do not read and execute the personal initialization file ~/.bashrc if  the  shell  is  interactive.

This option is on by default if the shell is invoked as sh.

也就是当bash由sh来调用的,那么默认将不加载.bashrc

而这个问题就取决于bash的调用方式:

  • 1, rshd: remote shell daemon调用bash, ( 不使用pseudo-tty,直接远程执行命令,就是这种方式)
  • 2, sh调用bash。(使用pseudo-tty情况下,将会由sh调用bash)

 

July 6, 2011

今天遇到一些 dns client古怪的行为方式,这里做一个记录:

命令如下:

Linux

[root@crp-abc~]# host  -v -t A  -N1 lvsosprovsvc01.lvs 10.10.10.10
Trying “lvsosprovsvc01.lvs”

Host lvsosprovsvc01.lvs not found: 3(NXDOMAIN)
Received 111 bytes from 10.10.10.10#53 in 0 ms

Solaris

crp-xyz# host  -v -t A  -N1 lvsosprovsvc01.lvs 10.10.10.10
Trying “lvsosprovsvc01.lvs”
Received 111 bytes from 10.10.10.10#53 in 0 ms
Trying “lvsosprovsvc01.lvs.corp.abc.com”
Trying “lvsosprovsvc01.lvs.vip.corp.abc.com”
Trying “lvsosprovsvc01.lvs.qa.abc.com”

lvsosprovsvc01.lvs.qa.abc.com. 125 IN  A      10.10.10.11

 

两机器的/etc/resolv.conf相同。

也就是说 同样是在尝试按照Absolute dns name 来解析lvsosprovsvc01.lvs(红字)失败后, Solaris下host命令继续尝试search domain list,直到最终找到结果,但是Linux却放弃了。

 

host命令的Manual page 中对 ndots的描述:

The -N option sets the number of dots that have to be in name for it to be considered absolute. The default value is that defined using the ndots statement in /etc/resolv.conf, or 1 if no ndots statement is present. Names with fewer dots are interpreted as relative names and will be searched for in the domains listed in the search or domain directive in /etc/resolv.conf.

host 命令的Manual page中对ndots的描述:

-N ndots     Set the number of dots that have to be in  name for  it  to be considered absolute. The default value is that defined using the ndots statement in /etc/resolv.conf, or 1 if no ndots statement is present. Names with fewer  dots  are  inter-
preted  as  relative names and will be searched  for in the domains  listed  in  the  search  or domain directive in /etc/resolv.conf.

Manual中并没有明确对这种行为做出解释,是Linux下做的少了?还是Solaris下做的多了呢?

为了在Linux下避免这种行为,最好的解决办法就是将ndots修改为2,那么lvsosprovsvc01.lvs就永远不会被当成 Absolute name来对待,所以直接就会走search domain list进行匹配查询,直到找到结果。

 

关于/etc/resolv.conf中的search 参数也有一个tricky的地方,因为这个list最长只支持6个domain:

The search list is currently limited to six domains with a total of 256 characters.

 

我不知道有什么办法expand这个list,除了修改 host 命令源代码 include/resolv.h 中的这行。

#define MAXDNSRCH       6               /* max # domains in search path */

 

June 20, 2011

solaris 11 express 在 2010年就推出了,前几天正好公司空出来一个老台式机,就装上试了试。如果这个“推测”准确的话,正式版本的solaris 11可能在 2011.11.11推出,的确是个好日子 。如果真的放在11时11分11秒发布就更好玩了。

solaris 11 用的是Build 151a

solaris:~$ uname -a
SunOS solaris 5.11 snv_151a i86pc i386 i86pc Solaris

 

在solaris 11中ifconfig 转变到 dladm and ipadm

这个变动很大,/etc/hostname.nic模式就要变掉了。不过对SA来说是福音,因为更直观了,易用了,放弃丑陋的ifconfig吧。

* dladm – administer data links

dladm可以用户 查看/创建 所有数据链路层的信息: phys,aggregation, vlan,link,bridge,wifi,etherstub,ip tunnal..

dladm的help简单明了,基本不用看manual就可以直接 try。

以下是几个demo:

root@solaris:~# dladm show-phys
LINK         MEDIA                STATE      SPEED  DUPLEX    DEVICE
bge0         Ethernet             up         1000   full      bge0
root@solaris:~# dladm show-vnic
LINK         OVER         SPEED  MACADDRESS        MACADDRTYPE         VID
vnic1        etherstub01  0      2:8:20:25:1a:47   random              0
vnic0        bge0         1000   2:8:20:67:cf:15   random              0
root@solaris:~# dladm show-aggr
root@solaris:~# dladm show-link
LINK        CLASS     MTU    STATE    BRIDGE     OVER
bge0        phys      1500   up       –         –
etherstub01 etherstub 9000   unknown  –         –
vnic1       vnic      9000   unknown  –         etherstub01
vnic0       vnic      1500   up       –         bge0

yoqian@solaris:~$ dlstat -i 3
LINK    IPKTS   RBYTES    OPKTS   OBYTES
bge0    5.08M  410.21M  142.41K   13.17M
vnic1        0        0        0        0
vnic0    4.95M  397.73M    3.47K  149.42K

 

* ipadm – configure Internet Protocol network  interfaces  and TCP/IP tunables

ipadm可以用户 查看/创建 所有IP层的信息: interface, IP address. interface 属性,address属性.

root@solaris:~# ipadm show-if
IFNAME     STATE    CURRENT      PERSISTENT
lo0        ok       -m-v——46 —
bge0       ok       bm——–4- —
vnic0      ok       bm——–46 -46
vnic1      disabled ———— -46
root@solaris:~# ipadm show-addr
ADDROBJ           TYPE     STATE        ADDR
lo0/v4            static   ok           127.0.0.1/8
bge0/_a           dhcp     ok           100.249.68.30/22
vnic0/v4          static   ok           192.168.123.101/24
lo0/v6            static   ok           ::1/128

For example, IP forwarding 可以更方便的设置了,修改ip层的属性就可以了,如下:

查看各种协议属性:

root@solaris:~# ipadm show-prop |egrep “forw|PROT”
PROTO PROPERTY              PERM CURRENT      PERSISTENT   DEFAULT      POSSIBLE
ipv4  forwarding            rw   off          –           off          on,off
ipv6  forwarding            rw   off          –           off          on,off

如何利用dladm和ipadm添加logic ip(类似传统的hostname.bge0:1),只需以下两步,没有配置文件,非常直观易懂。

1, 用dladm查看现有的link,如下,然后我们可以在bge0上新建一个vnic3

root@solaris:~# dladm show-link
LINK        CLASS     MTU    STATE    BRIDGE     OVER
bge0        phys      1500   up       –         –

root@solaris:~# dladm create-vnic -l bge0 vnic3

root@solaris:~# dladm show-link
LINK        CLASS     MTU    STATE    BRIDGE     OVER
bge0        phys      1500   up       –         –
vnic3       vnic      1500   up       –         bge0

root@solaris:~# dladm show-vnic
LINK         OVER         SPEED  MACADDRESS        MACADDRTYPE         VID
vnic3        bge0         1000   2:8:20:8b:5e:fb   random              0

2,  使用ipadm设置 vnic3的ip address

root@solaris:~# ipadm create-addr -T static -a local=192.168.123.201/24 vnic3/v4
root@solaris:~# ipadm show-addr
ADDROBJ           TYPE     STATE        ADDR
lo0/v4            static   ok           127.0.0.1/8
bge0/_a           dhcp     ok           100.249.68.30/22
vnic3/v4          static   ok           192.168.123.201/24
lo0/v6            static   ok           ::1/128

 

CAUTION: 默认情况下solaris 11 express 会启用 nwam来管理nic,而传统的physical:default是disabled。如下:这样会导致我们上面做做的修改在system reboot后处于disable状态。

系统默认的情况:

root@solaris:~# svcs -a |grep physi
disabled        3:13:09 svc:/network/physical:default
online          3:13:14 svc:/network/physical:nwam

所以装好solaris 11第一件事就是把nwam disable,然后enable physical:default ,就可以放心使用ipadm了。

# svcadm disable nwam
# svcadm enable network/physical:default

更多ipadm信息可以看这里或者这个pdf

May 22, 2011

我是从Linux转到Mac OS的,那个时候正好上一家公司的笔记本要归还了,我还在犹豫要不要买个IBM thinkpad,装Linux然后直接就把老机器的/home目录rsync过去就可以用起来了。恰巧我在水木上逛,看到有人贴新蛋正在清仓甩货MacBook,于是果断买了一个。5700RMB的价格很有诱惑力,不用犹豫了。从那时起到现在大概用mac os大概一年半了,中间也纠结过几次,要不要再用回Linux,但是最终还是没反复,这里有必要总结一下,其实就是一个要问自己的问题:

你为什么用电脑?没有最好的,只有最合适的。

刚上大学的时候开始用电脑是为了学习编程,跟大家打游戏,偶尔编辑网页。windows完美解决了我的需求,后来对Linux感兴趣,于是装了个双系统,偶尔过去玩玩,顺带完成毕业设计。但是主需求没变过,所以windows依然占据我大部分使用电脑时间。

大学毕业开始工作,因为跟Unix相关,渐渐对Unix/Linux感兴趣,外加身边很多同事都在用Linux,于是就转到Linux。虽然当时的Gnome/KDE版本易用行完全没法跟现在相提并论,但是折腾折腾用起来也没啥太大障碍,毕竟不用做太多文档工作,openoffice套件外加thunderbird完全能解决办公需要。剩下的大部分工作都是在gnome-terminal和firefox里面度过的,对OS知识不求甚解,偶尔顺带从Linux中学到一些皮毛常常还像捡到了宝贝。我那个时候很少玩游戏了,这挺主要的。

然后到了 eBay,现今这份工作对于我使用电脑的需求是:office 套间一定要好用,我现在一天收的邮件是以往的10倍,邮件收到后的相应速度很重要,这就要跟公司的MS 邮件服务器有很好的兼容,系统更要足够稳定。至于OS本身已经不再是一个学习的场所,仅仅是一个工具,因为从这个工具出发,iTerm的ssh可以带我去到任何我想要的OS。而为了适应以往的Linux桌面经验,Mac OS 这个时候就成为了最适合的OS:BSD的内核结构,可以方便的是用各种开源工具; 很多以往Linux下的脚本直接拿过来用即可。而我也常常为Mac OS下高质量的应用程序和为用户着想的贴心设计折服。

OS不再是手中的积木,任凭你搭建玩耍,从中寻找乐趣;而是一个靠得住的工具,用起来得心应手。 我要把时间放在更多OS以外的地方,却要保持跟*nix最近的距离,这就是我现在需求,而Mac OS 很好的满足了。

现在Mac OS有烂大街的趋势,安全问题很可能会是未来的威胁,我也要改一改长久以来对Mac OS的盲目信任。用windows又不想装那如同摆设一样的杀毒软件的时候,我总是很警惕的,未来也许对待Mac OS 也会有同样的警惕,不过我真不希望那一天到来。

April 12, 2011

刚工作的时候第一次见到Sun E15k,那个场景很激动人心:当时一群农民工一边喊着口号,一边用原木和麻绳将两坨庞然大物放置在数据中心的中央。公司的销售经理在旁边开玩笑说这么高科技的东西我们却用最原始的方式来运输–没办法,机房还不够现代化,机器出了集装箱,就要依赖这些木棒和麻绳的威力。但是人力不负众望,机器毫发无损。安装的那一天,我拿出照相机,悄悄的问技术经理,我拍几张照片行不?他抬头看了一下旁边说“躲着点儿摄像头,拍吧”,于是我电脑里就一直保留着那几张因为光线不足而模糊的照片,蓝色的机柜上SUN的Logo若隐若现。

几天前,Facebook发布消息,开源其服务器及数据中心设计。新闻中的Facebook机房一排排整齐的服务器LED发出崭新的蓝光,一下就让我想起了那张E15k照片。

x86服务器价格便宜,计算速度快,部署周期短,从而成为了互联网行业的首选。x86服务器的市场也更是各路厂商拼杀最激烈的地方,但是各个厂商也应该心里最清楚一点:那就是x86其实没有多少秘密,他们在其上附加了各种噱头,附加各种所谓的方便管理模块,但其实都是在试图制造障碍,让用户锁定自家品牌。CPU无非姓Intel姓AMD,内存条也无非是亚洲东部那几个区域所产,硬盘也早已成为了白菜价,对于业界标准的x86/64架构没有厂商敢于不遵守。对于小规模的用户,厂商们各自祭出噱头来吹吹新特性,拿出测试结果顺便贬低一下竞争对手,还是可以锁定一批用户的。但是对于Facebook,Google的这种用“农场”机械化养殖的方式安置服务器的,最适合他们的服务器只有是定制的服务器。

Facebook 开源服务器和数据中心出人意料的早了Google一步,Google用自己组装的x86已经很多年,业界也早已知晓,但却迟迟没有走出硬件开源的路线,真是被Facebook抢了先机,时代真是不同了。

http://opencompute.org/servers/

http://opencompute.org/datacenters/

这两个链接中,Facebook共享了服务器和数据中心必要的设计。除了感慨x86没有秘密之余,也被里面的细节感动了一把,连设计CAD图纸都给出来了,以及各种设计上的考虑,每一个曾经进过机房的人都应该看一下,量体裁衣才是最合适的。机器简单没有过多的附加模块,网卡也仅有两块,支持ROL(reboot over LAN),真是效率为先。用多少就放进去多少,不浪费。

服务器和数据中心节能效果是其卖点,整个数据中心的能耗按PUE(Power Usage Effectiveness,电能使用效率)衡量是1.07,低于业界通常的1.5。对我而言,真正吸引人的确实数据中心和服务器的方便管理的特性。将这样的文档交给SA和Site Service人员,将永远不会有mis comunicate, 因为这就是公司的标准,不用被各个厂商的型号和标准所混淆。也可以将自动化管理做到极致。

x86服务器已经进入了工厂管理时代,手工作坊都歇了吧。

 

April 11, 2011

Amazon ec2 为了推广云服务,提供了为期一年的免费体验活动,如果不舍得花钱买VPN又想翻墙的人,正好可以利用其大家一套翻墙梯子,周末做了一下,这里摘要一下:

EC2的Free Tie:

AWS Free Usage Tier (Per Month):

  • 750 hours of Amazon EC2 Linux Micro Instance usage (613 MB of memory and 32-bit and 64-bit platform support) – enough hours to run continuously each month*
  • 750 hours of an Elastic Load Balancer plus 15 GB data processing*
  • 10 GB of Amazon Elastic Block Storage, plus 1 million I/Os, 1 GB of snapshot storage, 10,000 snapshot Get Requests and 1,000 snapshot Put Requests*
  • 5 GB of Amazon S3 standard storage, 20,000 Get Requests, and 2,000 Put Requests*
  • 30 GB per of internet data transfer (15 GB of data transfer “in” and 15 GB of data transfer “out” across all services except Amazon CloudFront)*
  • 25 Amazon SimpleDB Machine Hours and 1 GB of Storage**
  • 100,000 Requests of Amazon Simple Queue Service**
  • 100,000 Requests, 100,000 HTTP notifications and 1,000 email notifications for Amazon Simple Notification Service**
  • 10 Amazon Cloudwatch alarms**

值得注意的是下面的这行小字:

* These free tiers are only available to new AWS customers and are available for 12 months following your AWS sign-up date.

也就是说只针对新AWS用户有效,如果你以前就曾经注册过AWS,即便没有开启过任何服务,如果想用这个Free Tier,Amazon也是一样要收费的。我上过当,所以建议重新注册一个amazon帐户的妥当。注册成功后需要提交VISA信用卡,Amazon扣除1美元之后,即可创建EC2虚拟机了(Sign in to the AWS Management Console)。

按照条款中写的,创建Linux Micro Instance的虚拟机类型,amazon会在右侧用黄色的五角星表示出来那些符合Free Tier规格的Instance。我选择的是Type是t1.micro的Debian os。

instance 创建好后,amazon会提供一个pem文件,利用这个文件,就可以无需密码连接到创建好的Instance中,右键点击instance后,选择connect,会拿到instance的完整域名,和登陆提示。

下一步就开始以root身份安装PPTP和squid

PPTP 部分

# aptitude update;aptitude install  pptpd

修改/etc/pptpd.conf

localip 192.168.11.1
remoteip 192.168.11.234-238,192.168.11.245

修改 /etc/ppp/chap-secrets 添加用户名和密码(注意看文件的格式要求)

# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
user   *                mypassword         *

编辑/etc/sysctl.conf。
修改#net.ipv4.ip_forward=1net.ipv4.ip_forward=1 (取消#号注释)。然后执行如下命令:

# sysctl -p

编辑/root/ipt.sh,加入一下内容并执行 /root/ipt.sh

iptables –flush POSTROUTING –table nat
iptables –flush FORWARD
iptables -t nat -A POSTROUTING -s 192.168.11.0/24 -j SNAT –to-source `ifconfig  | grep ‘inet addr:’| grep -v ’127.0.0.1′ | cut -d: -f2 | awk ‘NR==1 { print $1}’`
iptables -A FORWARD -p tcp –syn -s 192.168.11.0/24 -j TCPMSS –set-mss 1356

然后把/root/ipt.sh加入/etc/rc.local

执行/etc/init.d/pptpd restart,启动pptpd

另外别忘记打开amazon 防火墙Security Groups的TCP 1723 port

SQUID part

# aptitude install squid

修改/etc/squid/squid.conf,将http_port改成如下:这样只有pptp vpn连入主机的用户才可以使用这个代理.

http_port 192.168.11.1:3128

启动Squid

/etc/init.d/squid

 

随后VPN进去之后,使用代理服务器192.168.11.1:3128就可以正常翻墙了。

在使用mac os的情况下,不要选择“Send all traffic over VPN connection”

这样也就意味着system的default router依旧保持原样,而非全部流量都走192.168.11.1 (PPTP 对端IP),只有在是用代理的情况下才会是用EC2的流量,这样既节约流量,又可以灵活的控制哪些是需要翻墙访问,哪些使用本地ISP。

另外firefox代理设置推荐是用FoxyProxy

That’s all!

 

(more…)

April 10, 2011

我是2000年才开始接触电脑,第一次进大学上网的时候,手里捏着从报纸上抄下来的sohu.com网址,但是面对电脑却不知道应该把这几个字符输入到哪里,现在回忆起来,菜鸟的记忆依然历历在目。但是接下来这11年间就再也没离开过键盘,毕业之后,除去长伴左右的螺丝刀,键盘却是最每天工作最密切的伙伴,靠其为生,更是兴趣所在。

前几天买了apple的有线usb keyboard,为的是接上macbook,使用Ctrl键在左下角的键盘。我对左下角是fn键的笔记本键盘深恶痛绝,工作性质要求,每天敲命令Ctrl键十分频繁: shell中 :C-c, C-z, C-a, C-e, C-w, C-k…. VIM中: C-d, C-u… 但是偏偏macbook的fn占据我最为习惯的位置,把小小的control键夹在fn 和 option键中间,每次找它都很痛苦。一些PC笔记本也是这样的大脑进水的设计,fn键放在那么好的黄金位置干嘛?

我在网上跟美国team的Adam说起了此事,Adam 早年从apple公司出来,对apple的产品是铁杆粉丝。Adam听说我把Ctrl键放在左下角就认为是标准键盘是在太菜鸟了, 他说起了关于键盘Ctrl键和Caps Lock键位置之争:早年的NeXT(Jobs从 apple出去之后创建的公司)键盘Ctrl键和Caps Lock键位置与现今的PC键盘相反,甚至于后来的Sun Type6 键盘也是采用了同样的设计,他认为Ctrl键就应该放在现今Caps Lock的位置,Caps Lock白白的浪费了一个黄金位置。如下图:

这也让我想起刚刚工作时接触的SUN 工作站,就曾经是用过这样的键序,这两个键都很重要,一不小心按错容易有麻烦,于是我放弃了这种”古怪”的键盘设计,用回了正常的PC键盘。SUN在2000年之后生产的键盘也放弃了这种键序,转而使用我们目前习惯的键盘位置。Adam认为这是一种倒退,是IBM和微软助长了这种错误,凭借着庞大的用户群体,使人们慢慢抛弃了这种更合理的键盘布局。

我好奇的做一下测试,如果将Caps Lock和Ctrl键互换,使用Ctrl的确会更加的方便:

1,Ctrl与 f,j键在同一行,左手轻微滑动就可以触碰得到。

2,左手腕不必弯曲就可以用小手指按住Ctrl,对左手关节是一种保护。

3,当左手小指按住Ctrl之后,其余四指的触控范围更广,几乎不用低头就可以按出f键附近的组合键(因为左手掌按Ctrl的时候不必大幅移动,如果Ctrl在左下角就不一样了)

4,如果仔细看一下,f,j这一行键的确非常的重要,回车键就在右手小指触控范围。把重要的键放在一行更科学。

我上网搜了一下,似乎关于Caps Lock和Ctrl键的讨论还是很多,只是我们平时很少关注,也许使用emacs的程序员们更有资格讨论这个问题,比方说这个:Why You Should Not Swap Caps Lock With Control,此人就认为Ctrl在左下角更有效率,这种争论真的就像是Big endian, little endian一样长盛不衰。萝卜白菜各有所爱,对我而言还是不要更改键序的好,虽然软件很容易做到re-map,但是一旦养成了习惯,就成为了“一小撮”,无法适应其他的“标准”键盘,敲错了命令就不好了。但是“标准”这个词现在看来真的是个双刃剑。