如何解決內網中網絡被限制的問題

來源:http://yangkuncn.cn/how_to_salve_network_cannot_visit.html

如何解決內網中網絡被限制的問題

目錄:

原始引用地址: 如何解決內網中網絡被限制的問題
time: 2019.11.21 08:20

正式開始前先看個圖:

訪問被拒絕

訪問被拒絕

訪問被拒絕

   當你處於內網中,你想訪問的資源被網關拒絕時,如上圖中截圖,你應該怎麼處理?有沒好的方法解決這些問題?當然有。你只需要一臺linux主機,虛擬機也可以。這臺linux主機充當你的網當,當需要訪問被拒絕的資源時,直接轉發到其它地方處理,這樣你就可以訪問這些資源了。當然你不知道哪些資源禁止訪問,簡單粗暴的方法是直接轉發所有的數據。  

拒絕訪問的原理

如下圖,是訪問被拒絕時的抓包數據,圖中1爲一個正常的http get數據包,當網關檢測到其數據中的HOST的主機或ip在禁止訪問列表中時,中止正常的http連接,進行第2,3步。先給http client發個302轉移(就是我們上面看到訪問被拒絕的頁面),之後直接給http client發送了兩次rst(有可能一次是http server發的,一次是網關發的),這樣一個正常的http 連接就這樣被網關給中止了,這其實就是一個第三人攻擊了。其實網關在給client發301和rst數據時,他應該也給server發至少一個rst。

    通過這個分析我們可以發現http連接是十分不安全的,可以過濾你的數據,篡改你的數據,給你發301,也可以給你發送垃圾信息,如廣告。如果是https你的信息,都是加密的,網關看不到任何傳輸的數據內容,包括剛纔說的http get中的host。如果是https只能針對特定的ip禁止訪問,這個工作量大。

抓包數據

抓包數據

分析完了,以下進入正題。

轉發tcp數據

   轉發tcp分爲本機轉發和其它機器轉發,本機轉發就是虛擬機本地轉發數據,其它機器轉發就是充當路由器時的轉發。  

爲其它機器轉發

win7(172.21.9.8)===>ubuntu(172.21.9.222)==>vps(199.xx.xx.xx)==>home(123.112.xx.xx)

  1. winu使用添加到home(123.112.xx.xx)的路由,就是到123.112.xx.xx的線路從172.21.9.222走

route add 123.112.xx.xx 172.21.9.222

  1. ubuntu(172.21.9.222)上執行轉發,並添加iptabes命令redirect:
sudo iptables -t nat -A POSTROUTING -j MASQUERADE
sudo iptables -t nat -I PREROUTING -p tcp -d 123.112.xx.xx -j REDIRECT --to-ports 7777
  1. ubuntu 要運行ss-redir:
sudo ss-redir -v -u -s '199.180.xx.xx' -p '58123' -m 'aes-256-cfb' -k 'xxxxxxx' -b '0.0.0.0' -l '7777'
或者
sudo ss-redir -c /etc/shadowsocks-libev/config.json -v -u
  1. 在windows下執行以下命令,連接已從遠方vps(199.180.xx.xx)轉發:
ssh [email protected]

ubuntu本地聯網

ubuntu(172.21.9.222)==>vps(199.180.xx.xx)==>home(123.112.xx.xx)

使用以下iptables命令執行:

sudo iptables -t nat -I OUTPUT -p tcp -d 123.112.xx.xx -j REDIRECT --to-ports 7777

本地聯網與遠程聯網不同的區別在於:

使用iptables REDIRECT的位置不同,本的位於OUTPUT中,需要轉發的位於PREROUTING中。

轉發udp數據

外部udp訪問(其它機器通過這個機器進行udp訪問,win7(172.21.9.8)===>ubuntu(172.21.9.222)==>vps(199.180.xx.xx)==>home(123.112.xx.xx)

sudo ip rule add fwmark 0x01/0x01 table 100
sudo ip route add local 0.0.0.0/0 dev lo table 100
sudo iptables -t mangle -N SSUDP
sudo iptables -t mangle -A SSUDP -p udp --dport 8000 -j TPROXY --on-port 7777 --tproxy-mark 0x01/0x01
sudo iptables -t mangle -A PREROUTING -j SSUDP

本地udp無法轉發,原因未知:

https://blog.lilydjwg.me/2018/7/16/transparent-proxy-for-tcp-and-udp-with-iptables.213139.html

實際使用效果

  1. 把網關設置爲所在的機器

  2. 在網關所在的機器運行以下命令,對所有數據進行轉發

sudo iptables -t nat -I PREROUTING -p tcp    -j REDIRECT --to-ports 7777

也可以通過wireshark抓包,發現哪個或者哪段的ip被屏蔽,就哪個或段的ip添加進行:

sudo iptables -t nat -I PREROUTING -p tcp -d 123.151.0.0/16 -j REDIRECT --to-ports 7777
sudo iptables -t nat -I PREROUTING -p tcp -d 199.180.xx.xx -j REDIRECT --to-ports 7777

參考:
http://ezlost.tk/2018/02/24/ss-redir/
https://lixingcong.github.io/2018/06/11/ss-redir-ipset/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章