如何设置 RouterOS 以在另一台机器上使用 Web 代理?

如何设置 RouterOS 以在另一台机器上使用 Web 代理?

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 出现错误请求。

答案1

无需在 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 

如果 squid 机器通过与其他机器相同的接口进行通信,则需要最后一个参数“src-address=!...”。否则它会像这样:

  1. 计算机发送 HTTP 请求
  2. RouterOS 将此数据包发送到 squid
  3. Squid 向 Web 服务器发送 HTTP 请求
  4. RouterOS 再次将 squid 请求转发给 squid -> 循环

答案2

可以通过以下parent-proxy设置完成:

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

答案3

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

/ip firewall nat
chain=dstnat src-address=!<IP of Squid machine> protocol=tcp dst-port=80  src-address-list=<IP of Local machine> action=redirect to-ports=8080

相关内容