Http-Proxy

如何設置 RouterOS 在另一台機器上使用 Web 代理?

  • November 26, 2016

RouterOS 文件展示瞭如何通過 RouterOS 內置的 HTTP 代理透明地代理所有 Web 流量:

/ip firewall nat 
add in-interface=ether1 dst-port=80 protocol=tcp action=redirect to-ports=8080 chain=dstnat 
/ip proxy
set enabled=yes port=8080

我想在另一台機器上執行一個代理,這樣我就可以利用 Squid 等中可用的更複雜的過濾規則。但是,如果我使用 NAT 將流量重定向到另一台執行 Squid 的機器,它將無法工作,因為 HTTP 請求需要重寫才能成為代理 HTTP 請求;只是重定向流量會導致來自 Squid 的錯誤請求錯誤。

可以通過以下parent-proxy設置完成:

/ip proxy
set parent-proxy=<IP of Squid machine> parent-proxy-port=3128

RouterOS 中無需設置代理。您可以通過 NAT 將所有傳出 HTTP 流量直接路由到伺服器:

ip firewall nat add in-interface=eth1 src-address=!<IP of Squid machine> dst-port=80 protocol=tcp action=dst-nat to-addresses=<IP of Squid machine> to-ports=8080 

最後一個參數“src-address=!…”是必要的,以防 squid 機器通過與其他機器相同的介面進行通信。否則它會像這樣:

  1. 電腦發送 HTTP 請求
  2. RouterOS 將此數據包指定給 squid
  3. Squid 向網路伺服器發送 HTTP 請求
  4. RouterOS 再次將 squid 請求指定給 squid -> 循環

引用自:https://serverfault.com/questions/181703