分享

无法访问Github,该如何更新OpenStack代码?

sstutu 发表于 2014-7-16 12:00:32 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 1 25435
导读:
本文为学习openstack,遇到不能更新代码的提供的一些解决办法





最近一段时间通过git pull命令更新openstack代码,或者使用git review命令提交代码时总是超时,失败。只能尝试使用goagent这种免费的http代理来穿透长城防火墙实现代码的顺利下载。

1, 安装配置goagent代理,goagent是一个运行在google云(一台国外虚机)上的一个python写的https代理程序,所以需要你在google云上注册一个帐户并将goagent这个代理程序的服务端上传到云上,另外在你的机器上运行goagent客户端(sudo python /bak/java/goagent-goagent/local/proxy.py),具体方法请google之,如:http://www.wheattime.com/over-th ... t-switchysharp.html,略。(git clone https://github.com/goagent/goagent.git

2, 设置http及https代理,这要求将git url改为"git clone http://**"或者"git clone https://**", 如果是"git://**"打头,需配置tscoks代理来实现。
export https_proxy="https://127.0.0.1:8087"
export http_proxy="http://127.0.0.1:8087"

3, 安装证书,下列命令会将github的证书“/bak/java/goagent-goagent/local/certs/github.com.crt”安装。
sudo yum install nss-tools
浏览所有证书: sudo certutil -d sql:/home/hua/.pki/nssdb -L
查看证书详情: sudo certutil -d sql:/home/hua/.pki/nssdb -L -n github
导入证书:sudo certutil -d sql:/home/hua/.pki/nssdb -A -t TC -n "github" -i /bak/java/goagent/local/CA.crt
删除证书:sudo certutil -d sql:/home/hua/.pki/nssdb -n "github" -D /bak/java/goagent/local/CA.crt

4, 这时候可成功通过"git pull"来更新openstack的代码时,日志如下:
INFO - [Aug 26 13:47:03] 127.0.0.1:50390 "GAE CONNECT github.com:443 HTTP/1.1" - -
INFO - [Aug 26 13:47:10] 127.0.0.1:50390 "GAE GET https://github.com/openstack/neu ... ice=git-upload-pack HTTP/1.1" 200 562208
INFO - [Aug 26 13:49:33] 127.0.0.1:50504 "GAE CONNECT github.com:443 HTTP/1.1" - -
INFO - [Aug 26 13:49:37] 127.0.0.1:50504 "GAE POST https://github.com/openstack/neutron.git/git-upload-pack HTTP/1.1" 200 89357

其它:
1, 浏览器想使用上述http代理的话,可以在Internet选择中设置Network proxy的Method为"Automatic", URI设置为”http://127.0.0.1:8086/proxy.pac
  如果想要浏览https的网站,同样需要在浏览器中导入证书, 打开FireFox->选项->高级->加密->查看证书->导入证书, 选择/bak/java/goagent-goagent/local/CA.crt, 勾选所有项,导入。
   Chrome可安装SwitchySharp (https://code.google.com/p/wwqgtx ... ptions.bak&can=2&q=),它设置为”自动切换模式”,这样“墙外”“墙内”就可以自动切换了。
   Firefox可安装FoxyProxy (https://addons.mozilla.org/zh-cn ... foxyproxy-standard/)
2, 如果goagent出问题的话,一是保证程序最新,二是可以试着修改goagent-goagent/local/proxy.ini文件中的profile = google_cn参数。
3, 有一个叫qrouter的代理项目,可以叠加多个代理的带宽,是不同的tcp连接走不通的线路,达到同时使用多个线路的效果。

2013.9.9添加:
1, 使用squid建立http代理的方法:
a. Install squid in the computer, config it to use 21 port and start it.
sudo vim /etc/squid/squid.conf
##################################
http_access allow localnet
http_access allow all

# And finally deny all other access to this proxy
#http_access deny all

# Squid normally listens to port 3128
http_port 21
##################################
sudo service squid start
b. In the server, you need export http_proxy=http://<the computer IP>:21 in shell.
c. Now you can use any program which use http_proxy.
for example: wget www.google.com

2, 使用tsock建立socket代理的方法:
a. Set socks proxy in the server using ssh command
ssh -D 8008 -p 22 <your username>@<your IP> -fN
this command will specifies a local “dynamic” application-level port forwarding using 8008.
b. Using tsocks command to access Internet through the port 8008.
You need install tsocks first.
sudo yum install tsocks
Conifg it to use 8008.
sudo vim /etc/tsocks.conf
##################################
local = 192.168.1.0/255.255.255.0
local = 127.0.0.0/255.0.0.0
server = 127.0.0.1
server_type = 4
server_port = 8008
##################################
Then you can using the socks proxy like:
sudo tsocks wget www.google.com


2013.11.22日更新:
http://www.freecanadavpn.com/

今天goagent用不了了,无法从github更新代码,都干不了活了,群上的一个好心人给我一个vpn帐号,继续翻墙成功更新openstack代码:
1, PPTP客户端
    经测试在fedora 17上不好使,最后我用的是L2TP客户端。
在Fedora 19 NetworkManager自带的PPTP连接器是好使的,诀窍是身份验证勾选MSCHAP和MSCHAPv2,MPPE也要开启, 关掉PAP,否则伟大的长城防火墙会继续干扰明文PAP的PPTP报文。
在windows 8.1中,需要将vpn属性那块的数据加密选择“最大强度的加密”,”使用可扩展的身份验证协议(EAP)中“的"MS-CHAP v2"
  1) 安装, sudo yum install pptp pptp-setup,  http://sourceforge.net/projects/pptpclient/
  2) sudo ln -s /usr/sbin/ip /bin/ip
  3) 建立连接
     sudo pptpsetup --create vpntunnel --server na.vpnip.net --username vpnip.net --password 2013 --encrypt --start
     sudo pptpsetup --delete vpntunnel
  4) 设置到github.com的路由 (在/etc/hosts里设置:192.30.252.131 github.com)
sudo route add -net 192.30.252.0 netmask 255.255.252.0 dev ppp0
  5) 图形化GUI工具,http://code.google.com/p/vpnpptp/

2, L2TP客户端
  1)sudo yum install xl2tpd
  2)配置使用xl2ptd作为客户端(它也可以做服务端的,类似于strongwan)
$ cat /etc/xl2tpd/xl2tpd.conf

[lac quqi99]
name = myvpn
lns = <vpn-server-ip-address>
refuse chap = yes
refuse pap = yes
require authentication = yes
pppoptfile = /etc/ppp/peers/options.l2tpd.client
ppp debug = yes
length bit =yes

$ cat /etc/ppp/peers/options.l2tpd.client
ipcp-accept-local
ipcp-accept-remote
refuse-pap
refuse-chap
refuse-eap
refuse-mschap
require-mschap-v2
require-mppe-128
noccp noauth
idle 1800
mtu 1410
mru 1410
defaultroute
usepeerdns
debug
lock
connect-delay 5000
name "<vpn-use-name>"
password "<vpn-password>"

注意: 下列不使用明文确保数据都加密的配置(启用MSCHAPv2和MPPE,关掉其他如chap, pap, chap)是避免GWF的干扰不总是断连接的关键.
/etc/xl2tpd/xl2tpd.conf

refuse chap = yes
refuse pap = yes
require authentication = yes
/etc/ppp/peers/options.l2tpd.client
refuse-pap
refuse-chap
refuse-eap
refuse-mschap
require-mschap-v2
require-mppe-128


且为防gfw断线还要在/etc/ppp/options.xl2tpd中添加下列配置吗?
refuse-pap
refuse-chap
refuse-eap
refuse-mschap
require-mschap-v2
require-mppe-128


   3)启动服务,sudo service xl2tpd restart
   4)切换到root服务开始拨号,成功之后会看到ppp0这个网卡,echo 'c quqi99' >/var/run/xl2tpd/l2tp-control
     断开连接 echo 'd quqi99' >/var/run/xl2tpd/l2tp-control
   5) 设置到github.com的路由 (在/etc/hosts里设置:192.30.252.131 github.com)
sudo route add -net 192.30.252.0 netmask 255.255.252.0 dev ppp0

当时成功过,但今天又报错:xl2tpd Maximum retries exceeded for tunnel


2013.12.11添加,
今天发现无法执行git review提交代码,一开始就怀疑又是长城防火墙导的鬼,gerrit使用的地址是ssh://<username>@review.openstack.org:29418/openstack/neutron.git,可见是ssh协议,平时使用的像goagent这样的https_proxy代理肯定是不好使的,实在没办法,只好花钱买了个vpn,按上述方法架好vpn,再添加到review.openstack.org的静态路由(sudo route add -host 198.101.231.251 dev ppp0),终于成功提交代码。
# traceroute review.openstack.org
traceroute to review.openstack.org (198.101.231.251), 30 hops max, 60 byte packets
1  10.10.11.1 (10.10.11.1)  287.837 ms  287.814 ms  287.801 ms
2  * * *
3  * * *
4  * * *
5  * * *
6  * * *
7  * * *
8  * * *
9  * * *
10  review.openstack.org (198.101.231.251)  307.272 ms !X  307.240 ms !X  307.231 ms !X

android手机设置vpn连接时,建立L2TP/IPSec VPN连接,killwall的预共享密钥是:vpn.psk


3,SoftEther VPN
1)下载SoftEther VPN Client for Linux后执行执行make命令安装, http://www.softether.org/5-download
2) 运行vpn client
   ./vpnclient start
3) 配置vpn client, http://wan.pengganas.net/entry/p ... tallation-on-linux/

附录,windows上如何连接vpn
windows 8.1可以通过它自带的vpn客户端创建PPTP和L2TP的VPN,但我用了一下,连我购买的killwall的VPN失败,所以我将它换成IPSec的方式连接,使用叫Shrew Soft VPN的客户端工具,具体方法详见:https://vpnso.com/KB/read.php?ID=194。连完之后,我并不想所有网站都走vpn的路由,还是想保持原有的默认路由不变,想访问google的话就给添加google的路由走vpn,方法如下:
C:\Windows\System32>route -4 print |findstr "0.0.0.0"
网络目标        网络掩码          网关       接口           跃点数
0.0.0.0          0.0.0.0      192.168.1.1    192.168.1.104    125
0.0.0.0          0.0.0.0            在链路上    10.10.11.6     31

你可以在VPN拨号以后再手动修改路由,因为你通过VPN拨号只是想访问某些网段的IP(如google, 74.125.235.68),拨号成功后将这段IP的路由添加上,比如:
route delete 0.0.0.0 mask 0.0.0.0 IF 0xc005  (delete vpn gw)

route add 10.0.0.0 mask 255.0.0.0 10.10.1.1 IF 0xc0005  (vpn gw)

route add  74.125.235.68 mask 255.255.255.255 10.10.11.6  (google)
tracert google.com


Windows路由命令语法:
ROUTE [-f] [-p] [command [destination] [MASK netmask] [gateway] [METRIC metric] [IF interface]
删除默认路由,route delete 0.0.0.0 mask 0.0.0.0
添加默认路由,route add 0.0.0.0 mask 0.0.0.0 192.168.1.1 IF 17 (其中索引接口IF可以通过route -4 print命令查看)


写一个脚本处理将国外的某些需要访问的ip加入到白名单设置走vpn的路由:
#!/bin/bash
# Setting route after the ppp0 has been created. by quqi99


white_ip_list=`cat << EOF
   74.125.235.68    # google.com
   74.125.128.91    # google.com
   76.74.254.123    # fanqianghou.com
   192.30.252.129   # github.com
   198.101.231.251  # review.openstack.org
   199.59.150.39    # twitter.com
   103.245.222.184  # pypi.python.org
   185.31.17.185    # pypi.python.org
EOF
`



DEVICE=ppp0
PUBLIC_GW=$(ip -4 addr show |grep 'scope global' | awk {'print $2'} |head -1 |awk -F '.' {'print $1"."$2"."$3"."1'})
route add default gw $PUBLIC_GW

echo "$white_ip_list" | while read line; do
   white_net=$(echo $line |awk {'print $1'} |awk -F '.' {'print $1"."$2"."$3"."0'} |uniq)
   route add -net ${white_net}/24 dev $DEVICE
done

#route del -net 0.0.0.0 gw 0.0.0.0 dev $DEVICE



附录二:
pypi使用国内清华源加速安装:
$ cat ~/.pip/pip.conf
[global]
index-url = http://e.pypi.python.org/simple
$ cat ~/.pydistutils.cfg
[easy_install]
index_url = http://e.pypi.python.org/simple














作者:张华
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明
( http://blog.csdn.net/quqi99)
欢迎加入about云群425860289432264021 ,云计算爱好者群,关注about云腾讯认证空间

已有(1)人评论

跳转到指定楼层
lbwahoo 发表于 2014-7-17 21:31:03
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条