2014年9月6日 星期六 晴
关键词: Amazon AWS EC2 免费 Ubuntu nginx 反向代理 proxy ssh PPTP
新血来潮,今天又在Amazon AWS搞一年免费的EC2,这至少是我第三次申请了,大概流程记录如下:
- 注册帐号。 (1)只有新注册的帐号才能免费申请免费一年的EC2,好像时间从注册日开始算起。 (2)注册需要用到双币信用卡,我比较谨慎,用了一张以前没在Amazon上用过的。会扣1$,应该随后会打还到卡上,一般在验证信用卡都是这样验证的。 (3)注册需要手机号,我一样比较谨慎,用了一个以前没在Amazon上用过的。会打个电话过来,输入4位数字的PIN码,好像最后要加一个#号。
对了,要仔细阅读一下常用免费攻略的FAQ:https://aws.amazon.com/cn/free/faqs/
-
选择Region 在右上角ORegion可以选择在哪个机房。如果是面向亚洲的话,建议选东京或者新加坡,我一般选东京,我觉得连东京的比较快。
-
登录,选择免费的Instance(Free tier only)。 我选了一个Ubuntu 14.04的(Virtualization type: hvm,是Amazon最近推出来的,网络可能或许有优化),第一个默认的选项t2.micro就是Free的。装其他的免费系统也行,看自己喜欢装哪个吧。
据Amazon官网上介绍,使用 AWS 免费使用套餐的客户可以使用运行 Linux 和 Windows 的 t1.micro 实例各 750 个实例小时。Linux 和 Windows t1.micro 用量是分开计算的。 注:750个小时是一个月的,如果你Launch了一个linux instance,哪怕是1秒后Terminated,也是算一个小时的。
当然,总流量应该是固定的,我装Windows也没啥意思,就只装了Ubuntu 14.04。
创建免费的instance的时候,要自己上传自己的key或者通过Amazon网站生产key,记得自己保存下来。
-
申请Elastic IP 在Dashboard找到Elastic IP,点击申请,然后绑定到自己的免费Instance上。 注意,如果不绑定的话,每小时$0.01,直到IP绑定到Instance或被释放,可能是Amazon担心用户浪费。
-
ssh登录 我在windows下用的是SecureCRT 6.5.0连接的(据说也有Mac的版本),IP地址就是刚才的Elastic IP,端口默认就是22,用户名是ubuntu,鉴权只勾选公钥,公钥属性选中保存下来的Private key,点确定,打开,就可以连上了。
注意,不同操作系统可能不一样,Ubuntu的用户名是ubuntu,Amazon Linux的用户名可能是ec2-user,其他操作系统我还没验证过。操作的时候sudo的权限是有的。
ssh登录,不同工具可能不一样,putty和linux远程访问,应该是不一样的,可自行在网上搜索别人的经验。
- 端口转发与科学上网 用SecureCRT配置很简单,在属性那里添加一个就是了。 端口名称随意填写,随意填一个端口号如54321,勾上“使用SOCKS4或5动态转发”
Linux用户: 修改.ssh ,添加 Host aws HostName ... User ubuntu IdentityFile ~/.ssh/your-key.pem CompressionLevel 6 DynamicForward localhost:54321
浏览器方面,推荐Firefox+FoxyProxy扩展或者Chrome + Proxy SwitchySharp
Firefox可以直接连socks代理,不过记得在Firefox地址栏输入 about:config 有安全提示,点击继续;找到“network.proxy.socks_remote_dns”,双击改为True(默认False);重启Firefox。在代理那边socks选127.0.0.1,端口填54321,配置好后即可科学上网了。
- 为GAE配置反向代理(这才是我的主要目的) 我在人人网的多个应用都被人人网灭光了,只剩下两个了,由于GHS IP被墙,一般人也是打不开的。用appsp0t.com是可以打开的,但是我的很多程序都写死了域名,我找不到之前的代码了,只能改域名的IP指向了。
(1)sudo apt-get install nginx (2)sudo vi /etc/nginx/nginx.conf (3)敲i进入编辑模式,把下面这段配置编辑一下,拷贝到http{}中,编辑好后先按ESC再按冒号,wq回车即可退出。如果不修改的话,输入q可以推出;如果修改后不想保存,可以输入q!退出。 [code] upstream ghs { ip_hash; server ghs.google.com; #server 74.125.31.121; }
server { listen 80; server_name *.yourdoname.com; #access_log /var/log/nginx/ghs.log;
location /{ proxy_redirect off; proxy_set_header Host $host; proxy_pass http://ghs; proxy_set_header x-real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_redirect false; } } [/code]
后面可如法炮制再加自己的server,具体可以参考nginx的写法。
(4)重启nginx的服务(务必加sudo) sudo service nginx stop sudo service nginx start
(5)修改域名的DNS配置,将A记录的@指向之前EC2申请的独立ip即完成了所有的反向代理设置工作。 我是在dnspod.cn上配置的,很方便。一个A记录指向EC2的独立IP,其他要用到反向代理的CNAME一下这条A记录即可。
说实话,写这个是最不顺的,主要是两个问题,一是nginx里的配置我少写了一个花括号,后来我看了error.log才看出来的。我后来还在防火墙那里开了80端口。最后,我重启nginx的时候,没有加sudo,折腾了许久才看出来。
- Ubuntu上PPTP VPN的搭建 (1) sudo apt-get install pptpd
(2)sudo vi /etc/pptpd.conf #取消文件最后下面这两行的注释(用于分配给连接过来的VPN用户): localip 192.168.0.1 (本地侦听的地址,与真实IP无关的) remoteip 192.168.0.234-238,192.168.0.245 (客户端分配地址)
(3)增加VPN登录用户 sudo vi /etc/ppp/chap-secrets
#格式:用户名 服务类型 密码 分配的ip地址 按照上面格式添加一行,如 yobin * 123456 * 其中,第一个代表服务可以是PPTPD也可以是L2TPD,第二个代表随机分配ip
(4)修改DNS sudo vi /etc/ppp/pptpd-options 找到ms-dns,改为Google的DNS
ms-dns 8.8.8.8 ms-dns 8.8.4.4
(5)配置/etc/sysctl.conf,以允许ipv4转发 sudo vi /etc/sysctl.conf
把net.ipv4.ip_forward=1的注释去掉,保存退出
运行命令:sudo sysctl -p
(6) 重启pptpd服务 sudo /etc/init.d/pptpd restart
(7) 配置iptables sudo /sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
(8) 保存并配置重启后的iptables sudo su sudo iptables-save > /etc/iptables-rules
sudo vi /etc/network/interfaces,在eth0下面一行添加: pre-up iptables-restore < /etc/iptables-rules
(9) 每次开机启动处理 sudo vi /etc/rc.local 在exit 0之前添加此两行: pkill -9 nash#开机就清理nash-hotplug,否则CPU占用比较高 sudo /sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE#开机启动
其中/etc/rc.local相当于开机启动要执行的地方。
对了,我还补了一句:chmod +x /etc/rc.local
(10) 修改ufw(Ubuntu的防火墙) sudo vi /etc/default/ufw
(10) EC2上最重要的一点:将TCP 1723端口打开
做完上面这些步骤,VPN就基本搭建完毕了。如果真的有问题的话,就得仔细检查哪一步没有做,或者加log调试了。 Amazon 自带的AIM安装比较简单,支持一键安装,可以参考我之前的文章 。
至此,我在EC2干的活就基本完事了,我也担心超过额度收钱,不多做什么了。我主要就是给GAE配个反向代理,其他的基本不用,连接VPN速度太慢了。
生命在于折腾,做完上面这些步骤,中间还看log调试了那么一会儿,感觉自己对这些乱七八糟的配置又精进了一些。
...