接上文

本文適用於:路由器無法刷第三方ROM,但區域網中存在任意一台*nix設備時的使用方法

原理

原理是更改所需的目標地址的默認網關,改為在*nix設備上進行轉發,從而在任意的普通設備(主要指Windows系統設備及其它無法運行iptables的設備)上達到最簡化配置甚至零配置的效果。

先看下物理層拓撲:

436919cbgw1etpme9da2vj20ah05yt8t

這是網路層拓撲(IP):

436919cbgw1etpmirhs77j20ah05y3yq

簡要地來說,主要是兩處操作(以請求74.125.224.55:443為例):

  1. 想辦法更改普通設備(即圖中任意設備)的路由表,使請求74.125.224.55:443的數據包發往區域網中的*nix設備
  2. *nix設備進行目標地址轉換,將數據包發往66.66.66.66:44300;並在拿到響應後進行源地址轉換,返回給目標設備

步驟

  1. 在普通設備上寫入前文使用的hosts
  2. 由於希望實現接入區域網的普通設備的零配置,在路由器上設置靜態路由。假設路由器的地址為1.1.1.1,*nix設備的地址為1.1.1.10;以TP-LINK的經典配置界面為例,在路由功能靜態路由表中添加一項:
    436919cbgw1etpmtiqqkuj20ji06cwft
  3. 在*nix設備上執行:

備註

由於普通設備的默認網關為路由器(1.1.1.1),在路由器上設置了靜態路由後,普通設備在請求目標74.125.224.55時,會先收到路由器的一個ICMP redirect (redirect for host)包,普通設備上的操作系統因此更新路由表,將請求發往新的網關(1.1.1.50)。但是由於收到ICMP包在嘗試建立連接之後,而上一次建立連接是通過默認網關(1.1.1.1)進行的,被牆,因此普通設備會經歷一次連接超時(或者reset)。

如果需要減少這種錯誤,可以在普通設備上設置路由表,以Windows為例,在管理員許可權下執行:

metric可以為任意值,但應盡量小,這樣操作系統才會得到這是一條最優路由的結果而去使用它