sshuttle全域性代理的實現簡析
最近使用sshuttle實現全域性代理,順便研究了一下實現的具體原理。
直接進入主題,先看一下啟動的輸出資訊:
先繫結到本地的12300埠,將資料通過遠端的ssh伺服器進行路由轉發。sshuttle和ssh的tunnle不同不是基於TCP-over-TCP的,而是叫data over tcp的,省去了一次包裹。然後建立埠對映,輸出資訊如下:
很明顯是通過iptables的代理轉發來實現的,具體步驟:
- 新建nat表的處理鏈sshuttle-12300
- 清空處理鏈
- 將OUTPUT資料路由給sshuttle-12300處理
- 新增sshuttle-12300的處理過程,目標是本機則返回,目標是遠端主機的tcp轉發REDIRECT到12300埠,目標是dns伺服器的udp資料通過12300埠來轉發
當然代理結束時就會將對映資訊從iptables中刪除:
sshuttle是使用python實現的,安裝很方便幾乎是直接portable的。當然如果條件限制可以先使用ssh tunnle然後通過iptables的轉發來實現代理。其實不光是sshuttle,android的gae代理也是基於這個iptables來實現的。
相關推薦
sshuttle全域性代理的實現簡析
最近使用sshuttle實現全域性代理,順便研究了一下實現的具體原理。 直接進入主題,先看一下啟動的輸出資訊: 先繫結到本地的12300埠,將資料通過遠端的ssh伺服器進行路由轉發。sshuttle和ssh的tunnle不同不是基於TCP-over-TCP的,而是叫dat
Vue源碼之 virtual-dom 實現簡析
IT 好的 .com vue dom 發現 TP issues rtu 發現兩篇寫得特別好的博文,仔細通讀,發現豁然開朗。 淺析Vue 中的patch和diff Vue 2.0 的 virtual-dom 實現簡析Vue源碼之 virtual-dom 實現簡析
recyclerview簡析,點選事件實現簡析
RecyclerView簡介 RecyclerView是Android5.0提出的UI控制元件,通常用來代替傳統的ListView。 其官方給出的定義如下: A flexible view for providing a limited window
搜尋二叉樹程式碼實現簡析
> 樹和節點 typedef struct tree_node_t { struct tree_node_t* left; st
Entitas實現簡析
Entitas實現簡析 這裡主要講Entitas的執行原理,不講Entitas的程式碼生成方面。 ECS簡介 ECS(實體-元件-系統)是一種常用於遊戲開發的架構模式。 實體: 實體只是一個ID或一個容器,用來標記或儲存一系列元件。 元件: 沒有任何邏輯,單純用來儲存資料。 系統: 迴圈處
JavaScript深拷貝實現原理簡析
不出 附加 als 實現 code == 除了 目標 ring Why: 引用類型拷貝為了不出現數據共享問題,需要使用深拷貝。 So: 1.內部原理: 1 function inCopy(obj1,obj2) { 2 var obj1 = obj1
Java 8 HashMap 實現機制簡析
最近看《java核心思想》看到了容器部分,本書著重描述了HashMap 的實現機制,對於Map,我們的固有印象便是存取很快,特別是HashMap,我們知道底層是雜湊表結構。但HashMap具體怎麼維護這個資料結構,這是我們今天要記錄的問題。 HashMap的基本組成 要知道Has
SpringBoot Session Redis 實現與簡析
一、Spring Session Redis 1、配置spring session redis相關maven依賴 <!-- redis --> <dependency> <groupId>org.springframework.boot&l
Vue的資料依賴實現原理簡析
先讓我們從最簡單的一個例項Vue入手: const app = new Vue({ // options 傳入一個選項obj.這個obj即對於這個vue例項的初始化 }) 通過查閱文件,我們可以知道這個options可以接受: 選項/資料
Filter + 動態代理實現全域性編碼
html: <form action="/WEB24/EnCoding" method="get"> <input type="text" name="username"> <input type="submit" value="提交">
主題模型︱幾款新主題模型——SentenceLDA、CopulaLDA、TWE簡析與實現
百度最近開源了一個新的關於主題模型的專案。文件主題推斷工具、語義匹配計算工具以及基於工業級語料訓練的三種主題模型:Latent Dirichlet Allocation(LDA)、SentenceLDA 和Topical Word Embedding
[日常折騰](四)SS+Proxifier實現全域性代理/校園網免流
一、 前言 使用SS+瀏覽器代理配置可以在訪問網頁時實現代理,同理可以完成校園網免流。而為了實現真正意義上的免流,需要對系統設定全域性代理。使用Proxifier進行簡單的配置即可達到這一目的。本文簡要記錄在下的配置過程。 二、 配置步驟 0. 安裝並
簡析java執行緒池 實現原理
什麼是執行緒池 執行緒池是一種多執行緒處理的形式,通過把處理的任務新增到佇列中,然後在建立執行緒後自動執行這些任務。執行緒池可以同時執行多個任務,如果任務佇列已經滿了,則新來的任務就會排隊等待,執行緒池執行緒的數量永遠不會大於既定最大值。 Exector
簡析CAS機制與實現原理
在學習CAS的過程中,我百思不得其解的一個問題就是在多cpu併發的環境下,CAS如何保證執行緒的安全性呢?關於這個問題下面的兩篇部落格寫的比較不錯,基本把其中的原理解釋清楚了,這裡我只作一個簡單的闡
OkHttp3使用解析:實現下載進度的監聽及其原理簡析
前言 本篇文章主要介紹如何利用OkHttp3實現下載進度的監聽。其實下載進度的監聽,在OkHttp3的官方原始碼中已經有了相應的實現(傳送門),我們可以參考它們的實現方法,並談談它們的實現原理,以便我們更好地理解。 引入依賴 筆者在寫下這篇文章的時候,
Android 單例模式幾種實現方式及簡析
一.定義: 確保某一個類只有一個例項,而且自行例項並向整個系統提供這個例項 二.使用場景: 避免產生過多的物件消耗過多的資源,或者某種型別的物件只應該有且只有一個。例如,建立一個物件需要消耗的資源過多,如訪問資料庫或者IO 資源。 三.實現單例模式的關鍵
番外 01:Spring IoC 實現原理簡析,Java的反射機制,通過類名建立物件
轉載請註明來源 賴賴的部落格 前景概要 在 01 走進Spring,Context、Bean和IoC 中,我們看到了強大的Spring通過ApplicationContext實現了bean工廠(也就是物件工廠),那究竟是怎麼實現的呢,本次給大家寫一個小D
python中全域性變數、區域性變數、類變數、例項變數簡析
因為python為動態語言,處理變數的方式與一些靜態語言(比如C++)不大一樣,在這裡對這些變數進行小小的總結 python中全域性變數與C語言中類似,也就是在的那個單頁面所有函式外頭定義
簡析一種SOA動態實現框架
當今 IT 環境的特點是:異構而複雜的應用程式、進度緊張、受預算約束,以及一個不斷變化的業務需求前景。幾乎沒有企業能夠以一種高效率的方式,靈活而有效地增強其現有的基礎架構,來迎接和克服這些挑戰。即便如此,為了快速而經濟高效的處理源源不斷的高度複雜而動態的業務需求,企
Spring Ioc實現機制——簡析
public class ClassPathXmlApplicationContext implements BeanFactory { private Map<String, Object> beans = new HashMap<String, Object>(); //IoC