因為yum沒有proxychains 可以直接安裝,然後又需要透過server去連ss代理
安裝 proxychains
# cd ~
# git clone https://github.com/rofl0r/proxychains-ng.git
# cd proxychains-ng
# ./configure && make && make install
# make install-config
配置
# vim /usr/local/etc/proxychains.conf
更改
socks4 127.0.0.1 9050
為
socks5 127.0.0.1 xxxx
xxxx為你shadowsocks本地代理的port
開啟shadowsocks
$ sslocal -s <server_ip> -p <server_port> -l <local_port> -k <password> -m <method>
配合nohup和&可以使之后台运行,关闭终端也不影响:
#nohup sslocal -s 服务器地址 -p 服务器端口 -l 本地端端口 -k 密码 -m 加密方法 &
檢查是否代理成功
# proxychains4 curl https://api.ipify.org/?format=json
參考資料:
https://www.netroby.com/view/3653 Install proxychains on centos 6
https://wiki.archlinux.org/index.php/Shadowsocks_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) Shadowsocks (简体中文)
2016年5月20日 星期五
2016年5月17日 星期二
gitlab 自動custom hook佈署到server上
gitlab和web server現在放在同一台機器上,想要本地測試完git push到機器上後自動佈署到web服務上
因為懶得搞另一套 jenkins,所以打算用hook做
方案有
git本身的hook
gitlab的 custom hook http://docs.gitlab.com/ee/hooks/custom_hooks.html
gitlab的 web hook http://docs.gitlab.com/ee/web_hooks/web_hooks.html
這裡選用gitlab的 custom hook
步驟:
0. 切換到git使用者,因為gitlab文件的使用者權限都是git
# sudo su git
1. 假設root使用者的test專案需要hook
2. 找server上test.git庫的位置,我的放在 /var/opt/gitlab/git-data/repositories/root/test.git ,但也有可能放在 /home/git/repositories/<group>/<project>.git ,依你安裝的方式不同而不同
3. 進入該資料夾後新建 custom_hooks 資料夾
4. 進入 custom_hooks 資料夾,在這邊新增原git hook類型的檔案,ex. pre-receive。這邊新增 post-receive這個鉤子文件,當push完成後這個文件就會被調用
post-receive
--work-tree 實際文件被存放的位置
5. 別忘了賦予 post-receive 可執行權限
$ chmod +x post-receive
6. /var/www/test.localhost/html 路徑也必須是git權限
# chown git:git -R /var/www/test.localhost/html
最後在本地端測試push後,機器上web服務也馬上更新了,
如果 /var/www/test.localhost/html 上面原本有內容的檔案不會清空,只會被覆蓋
參考資料:
http://sumyblog.me/2015/11/02/use-git-hooks-for-hexo-automatic-deployment/ 使用git hooks进行hexo博客自动化部署
因為懶得搞另一套 jenkins,所以打算用hook做
方案有
git本身的hook
gitlab的 custom hook http://docs.gitlab.com/ee/hooks/custom_hooks.html
gitlab的 web hook http://docs.gitlab.com/ee/web_hooks/web_hooks.html
這裡選用gitlab的 custom hook
步驟:
0. 切換到git使用者,因為gitlab文件的使用者權限都是git
# sudo su git
1. 假設root使用者的test專案需要hook
2. 找server上test.git庫的位置,我的放在 /var/opt/gitlab/git-data/repositories/root/test.git ,但也有可能放在 /home/git/repositories/<group>/<project>.git ,依你安裝的方式不同而不同
3. 進入該資料夾後新建 custom_hooks 資料夾
4. 進入 custom_hooks 資料夾,在這邊新增原git hook類型的檔案,ex. pre-receive。這邊新增 post-receive這個鉤子文件,當push完成後這個文件就會被調用
post-receive
#!/bin/sh git --work-tree=/var/www/test.localhost/html --git-dir=/var/opt/gitlab/git-data/repositories/root/test.git checkout -f--git-dir git庫所在位置
--work-tree 實際文件被存放的位置
5. 別忘了賦予 post-receive 可執行權限
$ chmod +x post-receive
6. /var/www/test.localhost/html 路徑也必須是git權限
# chown git:git -R /var/www/test.localhost/html
最後在本地端測試push後,機器上web服務也馬上更新了,
如果 /var/www/test.localhost/html 上面原本有內容的檔案不會清空,只會被覆蓋
參考資料:
http://sumyblog.me/2015/11/02/use-git-hooks-for-hexo-automatic-deployment/ 使用git hooks进行hexo博客自动化部署
2016年5月10日 星期二
Linode CentOS 7主機搭建Cisco AnyConnect VPN
iPhone的shadowsocks在牆外似乎不作用,所以找了一個除了PPTP以外的代理方式
ocserv.x86_64 : OpenConnect SSL VPN server
直接用yum裝即可
# yum install epel-release (如果你還沒裝epel的話)
# yum install ocserv
# mkdir certificates
# cd certificates
在此目錄下新建一個 ca.tmpl的CA證書模版,內容為:
生成CA密鑰
$ certtool --generate-privkey --outfile ca-key.pem
生成CA證書
$ certtool --generate-self-signed --load-privkey ca-key.pem --template ca.tmpl --outfile ca-cert.pem
生成伺服器憑證,這裡注意cn項必須對應你伺服器的功能變數名稱或IP,server.tmpl
生成密鑰
$ certtool --generate-privkey --outfile server-key.pem
生成server證書
$ certtool --generate-certificate --load-privkey server-key.pem --load-ca-certificate ca-cert.pem --load-ca-privkey ca-key.pem --template server.tmpl --outfile server-cert.pem
把證書移動到合適的地方
$ cp ca-cert.pem /etc/ocserv
$ cp server-cert.pem /etc/ocserv
$ cp server-key.pem /etc/ocserv
這邊要注意tcp-port和udp-port不要設9000,以免跟php-fpm的port衝突
$ ocpasswd -c /etc/ocserv/ocpasswd test
Enter password:
Re-enter password:
開啟NAT轉發:(這步我略過,查機器上的設定檔,net.ipv4.ip_forward已開啟)
$ sudo sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf
$ sudo sysctl -p
啟動ocserv服務
# ocserv -f -d 1
然後打開手機上的Cisco Anyconnect新建一個VPN,添加服務器:
IP:端口
ex.
xx.xx.xx.xx:4433
連線就能輸入密碼運行
$ vim user.tmpl
創建user密鑰
$ certtool --generate-privkey --outfile user-key.pem
創建user證書
$ certtool --generate-certificate --load-privkey user-key.pem --load-ca-certificate ca-cert.pem --load-ca-privkey ca-key.pem --template user.tmpl --outfile user-cert.pem
將證書和金鑰轉為PKCS12的格式,好導入Anyconnect,期間會要求你輸入帳號密碼,就輸入用ocpasswd產生的帳號密碼
$ certtool --to-p12 --load-privkey user-key.pem --pkcs-cipher 3des-pkcs12 --load-certificate user-cert.pem --outfile user.p12 --outder
Generating a PKCS #12 structure...
Loading private key list...
Loaded 1 private keys.
Enter a name for the key: test
Enter password:
Confirm password:
然後把user.p12這個證書放到一個可以直接被訪問的地方,用safari打開安裝,導入成功後將對應的VPN => 進階 => 憑證 => 選擇你導入的憑證
為了讓伺服器能夠認得這張證書,我們再來修改一下/etc/ocserv/ocserv.conf配置
$ vim /etc/ocserv/ocserv.conf
重啟ocserv
# kill -9 ocserv_pid
# ocserv -f -d 1
使用客戶端證書這方式我只有在公司網路環境才成功走代理,在家裡和3G網路VPN Log只顯示連線成功,但是瀏覽器打開iplocationfinder.com 檢查結果是失敗的 => 查不到原因,所以可能還是改為輸入帳號密碼登入為主 => 20160920已解決
https://github.com/CNMan/ocserv-cn-no-route
直接將 cn-no-route.txt 之中的 no-route 寫進 /etc/ocserv/ocserv.conf 中
最後一樣重啟ocserv服務
Windows客戶端下載
https://openconnect.github.io/openconnect-gui/
參考資料:
http://ifreedomlife.com/2015/04/20/Setup-Cisco-AnyConnect-VPN-on-CentOS7/ 在 CentOS 7 上搭建 Cisco AnyConnect VPN
https://www.logcg.com/archives/1343.html 使用ocserv搭建 Cisco Anyconnect 服务器 (主要)
1. 安裝ocserv ( OpenConnect server )
因為ocserv已經在epel 的庫中提供了,可以直接用yum安裝ocserv.x86_64 : OpenConnect SSL VPN server
直接用yum裝即可
# yum install epel-release (如果你還沒裝epel的話)
# yum install ocserv
2. 準備證書
# cd ~# mkdir certificates
# cd certificates
在此目錄下新建一個 ca.tmpl的CA證書模版,內容為:
cn = "xx.xx.xx.xx" organization = "xx.xx.xx.xx" serial = 1 expiration_days = 3650 ca signing_key cert_signing_key crl_signing_key
生成CA密鑰
$ certtool --generate-privkey --outfile ca-key.pem
生成CA證書
$ certtool --generate-self-signed --load-privkey ca-key.pem --template ca.tmpl --outfile ca-cert.pem
生成伺服器憑證,這裡注意cn項必須對應你伺服器的功能變數名稱或IP,server.tmpl
cn = "Your hostname or IP" organization = "xx.xx.xx.xx" expiration_days = 3650 signing_key encryption_key tls_www_server
生成密鑰
$ certtool --generate-privkey --outfile server-key.pem
生成server證書
$ certtool --generate-certificate --load-privkey server-key.pem --load-ca-certificate ca-cert.pem --load-ca-privkey ca-key.pem --template server.tmpl --outfile server-cert.pem
把證書移動到合適的地方
$ cp ca-cert.pem /etc/ocserv
$ cp server-cert.pem /etc/ocserv
$ cp server-key.pem /etc/ocserv
3. 準備配置文件
修改 /etc/ocserv/ocserv.conf# 登陸方式,目前先用密碼登錄 auth = "plain[/etc/ocserv/ocpasswd]" # 允許同時連接的用戶端數量 max-clients = 4 # 限制同一用戶端的並行登陸數量 max-same-clients = 2 # 服務監聽的IP(伺服器IP,可不設置) listen-host = 1.2.3.4 # 服務監聽的TCP/UDP埠(選擇你喜歡的數位) tcp-port = 4433 udp-port = 4434 # 自動優化VPN的網路性能 try-mtu-discovery = true # 確保伺服器正確讀取用戶證書(後面會用到用戶證書) cert-user-oid = 2.5.4.3 # 伺服器憑證與金鑰 server-cert = /etc/ssl/private/my-server-cert.pem server-key = /etc/ssl/private/my-server-key.pem # 用戶端連上vpn後使用的dns dns = 8.8.8.8 dns = 8.8.4.4 # 注釋掉所有的route,讓伺服器成為gateway #route = 192.168.1.0/255.255.255.0 # 啟用cisco用戶端相容性支援 cisco-client-compat = true
這邊要注意tcp-port和udp-port不要設9000,以免跟php-fpm的port衝突
4. 測試server
創建測試帳號(test)$ ocpasswd -c /etc/ocserv/ocpasswd test
Enter password:
Re-enter password:
開啟NAT轉發:(這步我略過,查機器上的設定檔,net.ipv4.ip_forward已開啟)
$ sudo sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf
$ sudo sysctl -p
啟動ocserv服務
# ocserv -f -d 1
然後打開手機上的Cisco Anyconnect新建一個VPN,添加服務器:
IP:端口
ex.
xx.xx.xx.xx:4433
連線就能輸入密碼運行
4. 創建客戶端證書,省得老輸入密碼
$ cd ~/certificates/$ vim user.tmpl
cn = "some random name" unit = "some random unit" expiration_days = 365 signing_key tls_www_client
創建user密鑰
$ certtool --generate-privkey --outfile user-key.pem
創建user證書
$ certtool --generate-certificate --load-privkey user-key.pem --load-ca-certificate ca-cert.pem --load-ca-privkey ca-key.pem --template user.tmpl --outfile user-cert.pem
將證書和金鑰轉為PKCS12的格式,好導入Anyconnect,期間會要求你輸入帳號密碼,就輸入用ocpasswd產生的帳號密碼
$ certtool --to-p12 --load-privkey user-key.pem --pkcs-cipher 3des-pkcs12 --load-certificate user-cert.pem --outfile user.p12 --outder
Generating a PKCS #12 structure...
Loading private key list...
Loaded 1 private keys.
Enter a name for the key: test
Enter password:
Confirm password:
然後把user.p12這個證書放到一個可以直接被訪問的地方,用safari打開安裝,導入成功後將對應的VPN => 進階 => 憑證 => 選擇你導入的憑證
為了讓伺服器能夠認得這張證書,我們再來修改一下/etc/ocserv/ocserv.conf配置
$ vim /etc/ocserv/ocserv.conf
# 改為證書登陸,注釋掉原來的登陸模式 auth = "certificate" # 證書認證不支援這個選項,注釋掉這行 #listen-clear-file = /var/run/ocserv-conn.socket # 啟用證書驗證 ca-cert = /etc/ocserv/ca-cert.pem
重啟ocserv
# kill -9 ocserv_pid
# ocserv -f -d 1
5. 智能分流
因為人在大陸直接全局翻牆會造成大陸國內網站訪問巨慢的問題,所以必須在服務器端設route table推送到客戶端https://github.com/CNMan/ocserv-cn-no-route
直接將 cn-no-route.txt 之中的 no-route 寫進 /etc/ocserv/ocserv.conf 中
最後一樣重啟ocserv服務
Windows客戶端下載
https://openconnect.github.io/openconnect-gui/
參考資料:
http://ifreedomlife.com/2015/04/20/Setup-Cisco-AnyConnect-VPN-on-CentOS7/ 在 CentOS 7 上搭建 Cisco AnyConnect VPN
https://www.logcg.com/archives/1343.html 使用ocserv搭建 Cisco Anyconnect 服务器 (主要)
訂閱:
文章 (Atom)