顯示具有 network 標籤的文章。 顯示所有文章
顯示具有 network 標籤的文章。 顯示所有文章

2017年7月22日 星期六

Google Driver 下載發生noncesigner錯誤

https://superuser.com/questions/836345/why-is-my-chrome-failing-to-download-some-files
解法:
google chrome
ctrl + shift + del 
清除 快取圖片和檔案  和 Cookie(網站需要重新登陸)

重開chrome登陸google drive,即可下載

2016年9月16日 星期五

設定Private DNS


有些網址不想讓外面人訪問,所以設定了Private DNS,讓使用VPN連線進來的設備可以直接打開網址訪問私有站。這篇的情況是iPhone 使用AnyConnect 連線openconnect,server系統為 CentOS 7

安裝bind9
# yum install bind bind-utils
編輯 /etc/named.conf 設定檔
# /etc/named.conf
新增 ACL "trusted"區段
acl "trusted" {
        10.12.0.1;    # ns1 - DNS server
        ...
        10.12.0.190;  # iPhone LAN IP
        ...
        10.12.0.254;
};
因為VPN連進來,會自動分配虛擬IP,所以只好窮舉
編輯 options 區段
options {
    listen-on port 53 { 127.0.0.1; 10.12.0.1; };
    # listen-on-v6 port 53 { ::1; };
    ...
    allow-query     { trusted; };  # allows queries from "trusted" clients
    ...
}
10.12.0.1為我連上VPN後的主要DNS IP
在最底下加入
include "/etc/named/named.conf.local";

設定 local file
# vim /etc/named/named.conf.local
zone "test2.yourdomain.com" {
    type master;
    file "/etc/named/zones/db.test2.yourdomain.com";
};
zone "test3.yourdomain.com" {
    type master;
    file "/etc/named/zones/db.test3.yourdomain.com";
};
zone "12.10.in-addr.arpa" {
    type master;
    file "/etc/named/zones/db.10.12";
};

因為我的 test.yourdomain.com DNS解析是設在CloudFlare 公開的,如果這邊zone只設 yourdomain.com ,然後在正解和反解檔案分別設 test2.yourdomain.com 、test3.yourdomain.com,這樣子連vpn後使用私有VPN 雖然查得到 test2.yourdomain.com和test3.yourdomain.com 但設在代管上的test.yourdomain.com會查詢不到

產生Forward Zone File
# chmod 755 /etc/named
# mkdir /etc/named/zones
編輯 test2.yourdomain.com 正解設定
# vim /etc/named/zones/db.test2.yourdomain.com
$TTL    604800
@       IN      SOA     ns1.test2.yourdomain.com. admin.test2.yourdomain.com. (
                  3       ; Serial
             604800     ; Refresh
              86400     ; Retry
            2419200     ; Expire
             604800 )   ; Negative Cache TTL
;
; name servers - NS records
     IN      NS      ns1.test2.yourdomain.com.

; name servers - A records
ns1.test2.yourdomain.com.          IN      A       10.12.0.1

; 10.12.0.0/16 - A records
test2.yourdomain.com.        IN      A      10.12.0.1 # 因為我web server和DNS在同一台

編輯 test3.yourdomain.com 正解設定
# vim /etc/named/zones/db.test3.yourdomain.com
$TTL    604800
@       IN      SOA     ns1.test3.yourdomain.com. admin.test3.yourdomain.com. (
                  3       ; Serial
             604800     ; Refresh
              86400     ; Retry
            2419200     ; Expire
             604800 )   ; Negative Cache TTL
;
; name servers - NS records
     IN      NS      ns1.test3.yourdomain.com.

; name servers - A records
ns1.test3.yourdomain.com.          IN      A       10.12.0.1

; 10.12.0.0/16 - A records
test3.yourdomain.com.        IN      A      10.12.0.1

編輯反解設定
# vim /etc/named/zones/db.10.12
$TTL    604800
@       IN      SOA     test2.yourdomain.com. test3.yourdomain.com. (
                              3         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
; name servers
      IN      NS      ns1.test2.yourdomain.com.
      IN      NS      ns1.test3.yourdomain.com.

; PTR Records
0.1   IN      PTR     ns1.test2.yourdomain.com.    ; 10.12.0.1
0.1   IN      PTR     ns1.test3.yourdomain.com.    ; 10.12.0.1
0.1   IN      PTR       test2.yourdomain.com.  ; 10.12.0.1

0.1   IN      PTR       test3.yourdomain.com.  ; 10.12.0.1

檢查bind 設定檔語法
# named-checkconf
檢查zone file
# named-checkzone test2.yourdomain.com /etc/named/zones/db.test2.yourdomain.com
zone test2.yourdomain.com/IN: loaded serial 3
OK
這邊 檢查時需特別注意,named-checkzone後的test2.yourdomain.com需換成你正確的域名,否則會報 ignoring out-of-zone data 的警告
# named-checkzone  12.10.in-addr.arpa /etc/named/zones/db.10.12
zone 12.10.in-addr.arpa/IN: loaded serial 3
OK

啟動bind9
# service named start

最後用nslookup檢查是否設定成功
# nslookup
> server 10.12.0.1
Default server: 10.12.0.1
Address: 10.12.0.1#53
> test2.yourdomain.com
Server:         10.12.0.1
Address:        10.12.0.1#53

編輯 /etc/ocserv/ocserv.conf ,讓手機連上VPN後優先選擇內網的DNS
dns = 10.12.0.1
dns = 8.8.8.8
dns = 8.8.4.4
然後重啟oscerv

最後手機連上VPN後訪問 test2.yourdomain.com,成功


參考資料:
https://www.digitalocean.com/community/tutorials/how-to-configure-bind-as-a-private-network-dns-server-on-centos-7  How To Configure BIND as a Private Network DNS Server on CentOS 7
http://blog.ltns.info/linux/openwrt_ocserv_vpn_client_smart_proxy/  OpenWrt路由器搭建和配置ocserv实现VPN客户端智能代理


2016年5月10日 星期二

Linode CentOS 7主機搭建Cisco AnyConnect VPN

iPhone的shadowsocks在牆外似乎不作用,所以找了一個除了PPTP以外的代理方式

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

使用客戶端證書這方式我只有在公司網路環境才成功走代理,在家裡和3G網路VPN Log只顯示連線成功,但是瀏覽器打開iplocationfinder.com 檢查結果是失敗的 => 查不到原因,所以可能還是改為輸入帳號密碼登入為主  => 20160920已解決

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 服务器 (主要)


2016年3月30日 星期三

Cloudflare 使用心得

原本在 匯智 http://domain.wis.com.tw/ 買的網址,結果內建的代管只能放6筆記錄
看了這篇 https://sofree.cc/cloudflare-free-cdn/ 後,決定試試 Cloudflare
Cloudflare 優點:
DNS代管服務
減少主機流量與資源消耗
阻擋惡意攻擊
加速網站瀏覽速度
免費不限流量的CDN - 查不到你實際網站IP,若是台灣主機,通常就不建議開CDN功能,因為,Cloudflare並沒有台灣的節點,大多數都讀取美國檔案,這樣反而繞路

CDN是什麼呢?
全名是「內容傳遞網路」(Content delivery network或Content distribution network),簡單說就是CDN伺服器會分散於全球各地,而這些伺服器會去抓取你網站的內容快取,而如果你人在美國,讀取了有掛CDN的網站,它就會就近讀取美國節點的網站,儘管網站在台灣,你也會感覺瀏覽速度不差。透過分散式的節點,可以分散網站的資源使用,如果你存取的美國節點失效,它會在就近找一個新的節點存取資料,讓資料不間斷。

先說結論:
因為我的主機用linode,一個月有2 TB Transfer,加上又是自己一個人用。所以只用得到DNS代管服務。

Cloudflare 註冊
前略
最後一步會跟你說把原本的Nameservers 改成 Cloudflare 的Nameservers
然後登入 匯智 後台,把所有DNS記錄刪除,然後點 "A、MX、CNAME紀錄關閉"
再將DNS設成 Cloudflare的DNS
然後開啟Cloudflare後台菜單就可以開始設定DNS了。只是免費版新設定的子網域紀錄反應會比較慢(真的有點慢,我這邊等了20分鐘才ping到)

後台點選DNS菜單後,列表中Status可以切換要不要啟用CDN功能
啟用:
啟用後ping到的ip位址是Cloudflare的ip位址
停用:
會直接ping到你真實ip

使用dnstracer 查你設的 主DNS和次DNS
http://blog.xuite.net/happyman/tips/26266122-dnstracer+%E4%BD%BF%E7%94%A8
$ dnstracer  -c -o -q ns your.domain -s . -4
Tracing to your.domain[ns] via A.ROOT-SERVERS.NET, maximum of 3 retries
A.ROOT-SERVERS.NET [.] (198.41.0.4)
 |\___ a.gtld-servers.net [com] (192.5.6.30)
 |     |\___ alice.ns.cloudflare.com [your.domain] (2400:cb00:2049:0001:0000:0000:adf5:3a3c) Not queried
 |     |\___ alice.ns.cloudflare.com [your.domain] (173.245.58.60) Got authoritative answer
 |     |\___ rob.ns.cloudflare.com [your.domain] (2400:cb00:2049:0001:0000:0000:adf5:3b8c) Not queried
 |      \___ rob.ns.cloudflare.com [your.domain] (173.245.59.140) Got authoritative answer
...
但其實不用這麼麻煩,因為dig也可以,而且dig比較通用
$ dig @168.95.1.1 your.domain -t ns
...
;; ANSWER SECTION:
your.domain.            86400   IN      NS      alice.ns.cloudflare.com.
your.domain.            86400   IN      NS      rob.ns.cloudflare.com.


















2015年10月22日 星期四

在windows和linux使用網路共享資料夾( samba 和cifs),非NFS

因為在 在Windows 7 使用docker  中要配置Virtual Box和windows 7 的共享資料夾失敗
所以改用samba和cifs的方式

在windows上產生共享資料夾
1. 開啟網路和共用中心 => 變更進階共用設定 => 開啟網路探索  /  開啟檔案及印表機共用 => 保存
2. 右鍵你要共享的資料夾 => 內容 => 共用 => 進階共用 => 勾選"共用此資料夾" => 權限 =>
選 Everyone 後下方勾選 "完全控制"
3. 右鍵你要共享的資料夾 => 內容 => 安全性 => 編輯 => 新增 => 輸入物件名稱來選取 填入 Everyone => 確定

在linux上存取windows的共享資料夾
$ sudo apt-get install cifs-utils
$ mkdir ~/windows_shared
掛載
$ sudo mount.cifs //192.168.169.140/test_shared /home/bear/windows_shared -o gid=1000,uid=1000
或
$ sudo mount -t cifs -o uid=1000,gid=1000 //192.168.169.140/test_shared /home/bear/windows_shared
注意: -o 後面的參數需以逗號(,)分開,不能用空白
查uid 和 gid
$ id
必須指定uid和gid,否則資料夾權限在linux會變成root:root

卸載
$ sudo umount -a -t cifs -l windows_shared/

NFS和samba的差異
In a closed network (where you know every device), NFS is a fine choice.
在封閉網路中( 你知道每個裝置 ),NFS是不錯的選擇
It might look more complicated than it really is but it's solid, predictable and fast. Something you can't level against Samba... At least, in my experience.
NFS比較複雜,但他可靠的、可預見的和快速的。有些事情無法和Samba放在同一層級比較
Samba will probably be a bit slower but is easy to use, and will work with windows clients as well..
Samba 可能會慢一點,但容易使用。並且能與windows端工作

$ sudo apt-get install nfs-kernel-server => 看字面就知道意思 nfs已經算linux模組了
samba其實就是網路芳鄰

在Linux上產生共享資料夾
安裝samba
# sudo apt-get install samba
建立samba的使用者和密碼
# smbpasswd -a bear
建立共享資料夾
$ mkdir ~/ubuntu_shared
編輯設定檔
# vim /etc/samba/smb.conf
格式:
[<folder_name>]
path = /home/<user_name>/<folder_name>
available = yes
valid users = <user_name>
read only = no
browsable = yes
public = yes
writable = yes
Ex.
[ubuntu_shared]
path = /home/bear/ubuntu_shared
available = yes
valid users = bear
read only = no
browsable = yes
public = yes
writable = yes
重啟samba
# service smbd restart

在windows上存取linux的共享資料夾
(假設要建在桌面)在桌面上點右鍵 => 新增 => 捷徑 =>
輸入項目的位置:
\\192.168.169.147\ubuntu_shared

之後便可在sublime 將該捷徑加入project

Windows開分享資料夾給Windows(以前的網路上的芳鄰、網芳)
https://support.microsoft.com/zh-tw/kb/2702421
先在資料夾上點右鍵 => 內容 => 共用 => 共用(按鈕) => 新增Everyone => 共用(按鈕) => 完成
其他電腦嘗試連接該共用資料夾時,出現詢問帳號密碼的對話視窗,若您沒有共用資料夾電腦上的使用者名稱及密碼是無法順利存取該資料夾。
問題的發生原因
這是因為預設是啟用以密碼保護共用,所以共用對象若沒有共用資料夾所在之電腦的使用者帳戶和密碼,即便是開放 Everyone 仍無法存取共用的檔案。
問題的解決方法
控制台 => 網路和網際網路 => 網路和共用中心 => 變更進階共用設定 => ( 家用或工作場所 => 以密碼保護的共用 )選取"關閉以密碼保護的共用"
取消共用
資料夾上點右鍵 => 內容 => 共用 => 進階共用(按鈕) => 取消勾選"共用此資料夾"

參考資料:
http://www.howtogeek.com/176471/how-to-share-files-between-windows-and-linux/ How to Share Files Between Windows and Linux
http://stackoverflow.com/questions/74626/how-do-you-force-a-cifs-connection-to-unmount  How do you force a CIFS connection to unmount
http://askubuntu.com/questions/7117/which-to-use-nfs-or-samba  Which to use NFS or Samba?









2015年9月2日 星期三

haproxy使用心得

系統:ubuntu14.04

安裝:
$ sudo apt-get install haproxy

檢查haproxy版本
$ haproxy -v

檢查haproxy設定檔 ( /etc/haproxy/haproxy.cfg )
$ haproxy -V -c -f haproxy.cfg

設定:
1. 編輯 /etc/default/haproxy ,將 ENABLED=0 改為 1
ENABLED=0 => ENABLED=1

2. 避免 [ALERT] 243/175711 (2715) : Starting proxy http_proxy: cannot bind socket 錯誤
# sysctl -e net.ipv4.ip_nonlocal_bind=1

3. 解決 [ALERT] 243/175711 (2715) : Starting proxy http_proxy: cannot bind socket 錯誤
原來是nginx把 80 port 佔用了,要把nginx 換成其他port
把 /etc/nginx/sites-available 中vhost設定檔中server{}中的 listen 換成其他port
ex.
listen 80; => listen 81;
listen [::]:80; => listen [::]:81;
然後重啟nginx

4. 編輯haproxy.cfg (因為我的haproxy版本是1.4,所以照 http://cbonte.github.io/haproxy-dconv/configuration-1.4.html#2.3 上面改的)
global
    daemon
    maxconn 256

defaults
    mode http
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms

frontend http-in
    bind *:80
    default_backend servers2

frontend http-in2
    bind *:88
    default_backend servers

backend servers
    server server1 192.168.1.140:80 maxconn 32
backend servers2
    server server2 192.168.1.147:81 maxconn 32

架構
我的VM( 192.168.1.147 ):
haproxy 80
nginx  81

我電腦(win 7, 192.168.1.140):
apache 80

結果
http://192.168.1.147:88/ 開windows apache 80 程式
http://192.168.1.147/ 開VM nginx 81 程式

http://192.168.1.147:81/ 開VM nginx 81 程式

註:
如果只設一組 frontend 兩組backend
frontend http-in
    bind *:80
    default_backend servers

backend servers
    server server1 192.168.1.140:80 maxconn 32
    server server2 192.168.1.147:81 maxconn 32
這樣打開 http://192.168.1.147 在firefox用 ctrl+f5 刷頁,會在 192.168.1.140:80 和 192.168.1.147:81 兩台主機切換



參考資料:
http://blog.longwin.com.tw/2009/03/haproxy-ha-load-balance-2009/  使用 HAProxy 完成 網站分流, 平衡負載
http://cbonte.github.io/haproxy-dconv/configuration-1.4.html#2.3  HAProxy Configuration Manual ( 1.4 example )



2014年11月24日 星期一

linux安裝megatools和megacmd

在linux上能用指令下載mega檔案的工具有:
megatools
megacmd

系統:Debian 7

安裝megacmd

安裝megacmd難度比較低
1. 在github上下載megacmd-master.zip後解壓縮
2. 在解壓縮的資料夾下
$ make
$ cp megacmd /usr/local/bin
即安裝完成

使用megacmd
下載(需開一個帳號,然後將你要下載的檔案import到你的帳號裡面再下載,沒看到可以直接下載https連結的方法)
$ megacmd -force get mega:/testing/megacmd /tmp/
報錯:
ERROR: Downloading mega:/xxx.jpg failed (Object (typically, node or user) not found)
用wget檢查:
$ wget https://mega.xxx/
錯誤: “mega.xxx” 的证书不可信。
錯誤: “mega.xxx” 的证书颁发者未知。
... 無解,只好改用megatools

安裝megatools

方法一
把source.list改成unstable
deb http://ftp.cn.debian.org/debian unstable main contrib non-free
然後用apt-get安裝。但是我實在不想讓我的debian炸掉... 所以沒用這方法安裝
方法二
安裝所需的套件
# aptitude install libglib2.0-dev libcurl4-openssl-dev libssl-dev
不然./configure時會報錯
...
configure: error: Package requirements (gio-2.0 >= 2.32.0 libcurl openssl) were not met:
...
下載megatools的linux原始碼Archive(megatools-1.9.93.tar.gz),並解壓縮後到該資料夾下
$ ./configure
$ make
# make install
安裝完後就能使用megadl等相關mega指令了

下載
$ megadl 'https://mega.co.nz/#!xxx...'
報錯:
megadl: error while loading shared libraries: libmega.so.0: cannot open shared object file: No such file or directory
需要使用root執行一次ldconfig後才能正常下載
# ldconfig


參考資料:
http://blog.hbautista.com/linux/megatools-en-debian-jessie/ (西班牙文blog...請搭配google翻譯使用)

2014年11月7日 星期五

Firefox FoxyProxy設定

設定了shadowsocks+foxyproxy翻牆後有個問題一直很困擾我,手動設定代理伺服器後一些內網自訂的網址( ex. test.localhost 、公司內網網站 )都沒辦法同時打開

要怎麼設定讓firefox同時上牆外網站(ex. facebook)和內網網站呢?

開啟FoxyProxy介面後,代理伺服器面板:
Default => "代理伺服器細節"選擇"選擇"直接連線"
新增代理伺服器( 假設命名MyProxy ) => "代理伺服器細節"選擇"手動設定代理伺服器"(設定值依你的代理伺服器設定而異)
MyProxy => 網址樣式 =>
1. 勾選"內部IP位址不使用此代理伺服器"
2. 將你要直接連線的內網網址"增加新的網址"到黑名單中
ex.
增加新的樣式:
樣式名稱:隨便打
網址樣式:*test.localhost* (我用萬用字元,要注意最後要加*號才能讓網址下所有檔案都直連)
然後下面選擇"黑名單"
新增萬用樣式:(必加,不然牆外的網站上不去)
樣式名稱:*
網址樣式:*
然後下面選擇"白名單" (黑名單的優先權會大於白名單)

回到FoxyProxy的代理伺服器面板,上方"選擇樣式"選"根據已經定義好的樣式及優先權使用代理伺服器"

然後國內哪些網站要連就要像設routing table一樣一個一個設進去,不然連線會較慢,無法作到完全的智能翻牆。

自訂routing table
使用 https://github.com/kalecgos0616/tools/tree/master/wildcard_bypass_domain 裡面的foxyProxy_bypass.json 在FoxyProxy的網址樣式中匯入
檢查:
開百度地圖看是不是鎖定在你所在的城市,如果在國外地圖會放到最小

SSLedge Chrome套件設定不走代理的網址
如同上面Firefox FoxyProxy遇到一樣的問題,有些內網網址要怎麼不走代理:
點選SSLedge套件圖示 => 點你走的代理上的設定圖示 => ByPass(繞行) 最下面加入你要直連的網址(ex. ,*test.localhost*)




2014年11月3日 星期一

Arch Internet sharing(透過另一台電腦上網)

環境:
我的電腦有連兩個網路、內網(接有線eth0 or enp0s25)和外網(收無線網路wlan0 or wls1) 有個內網的設備想透過我電腦上外網去更新程式。 內網不能對外,外網可以。
我的電腦enp0s25和內網設備enp2s0(用ifconfig查該點腦是用哪個網路)連同一個無線ap,在同一個LAN

原本要外接usb無線網卡用wpa_supplicant(需另外安裝)連無線網路去更新,但是更新一下網卡就過熱段掉了。才改採用internet sharing的方法
# wpa_supplicant -i wlan0 -c <(wpa_passphrase your_SSID your_key)

參考:https://wiki.archlinux.org/index.php/Internet_sharing
我的電腦:
1. 設定固定IP - 這步我將mac網址寫在無線ap的設定上面去設定固定ip
2. 啟用封包轉發( Enable packet forwarding )
查packet forwarding 設定:
# sysctl -a | grep forward
暫時啟用packet forwarding:
# sysctl net.ipv4.ip_forward=1
如果保留這些設定在重開機後:
編輯/etc/sysctl.d/30-ipforward.conf:
net.ipv4.ip_forward=1
net.ipv6.conf.default.forwarding=1
net.ipv6.conf.all.forwarding=1
3. 啟用NAT
# iptables -t nat -A POSTROUTING -o internet0(能上外網的網路) -j MASQUERADE
# iptables -A FORWARD -i net0(內網的網路) -o internet0(能上外網的網路) -j ACCEPT
# iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
例:
# iptables -t nat -A POSTROUTING -o wls1 -j MASQUERADE
# iptables -A FORWARD -i enp0s25 -o wls1 -j ACCEPT
# iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

設備:
1. 設定固定ip - 將mac網址寫在無線ap的設定上面去設定固定ip
2. 設定route方向
# ip route add default via 192.168.123.100 dev eth0
例:
# ip route add default via 192.168.0.101 dev enp2s0
出現錯誤:
RTNETLINK answers: File exists
解法:
重啟網路
# ifconfig enp2s0 down
# ifconfig enp2s0 up
3. 檢查ping不ping得出去
# ping 114.114.114.114
4. ping得出去後設定DNS
/etc/resolv.conf:
nameserver 114.114.114.114

內網設備即可透過我電腦去更新程式
如:
# pacman -Syu mplayer

shan:此方法適用於linux-like的系統

更快速的方法:proxychains
假設server IP(能上外網那台):192.168.92.2
client IP(只能上內網那台):192.168.92.138
[bear@192.168.92.138 proxychains]$ ssh -NfD 9050 bear@192.168.92.2
[bear@192.168.92.138 ~]proxychains4 curl http://baidu.com
註:
server無須做任何設定,9050 port是client上proxychains.conf預設走的port
socks4     127.0.0.1 9050

client透過server上的shadowsocks上牆外網站
把server(非shadowsocks的server,是internet sharing中的server)的ss跑在0.0.0.0上
然后把client的代理配置到server的IP上
server shadowsocks的config.json配置新增:
"local_address": "0.0.0.0",
client proxychains.conf配置:
socks5  192.168.92.2 8080
最後用這些指令透過ss上網
[bear@192.168.92.138 ~] proxychains4 curl http://facebook.com
[bear@192.168.92.138 ~] proxychains4 pacman -S subversion
特別改謝shell指導

2014/11/27
上述"client透過server上的shadowsocks上牆外網站"情況在使用pacman -Sy更新時會報錯:
error: failed retrieving file 'core.db' from mirrors.163.com : Resolving timed out after 10519 milliseconds
使用iptables方法則正常

參考資料:
http://heylinux.com/archives/2933.html