В документации RouterOS показано, как прозрачно проксировать весь веб-трафик через прокси-сервер HTTP, встроенный в RouterOS:
/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.
Нет необходимости настраивать прокси в RouterOS. Вы можете направить весь исходящий HTTP-трафик на сервер напрямую через NAT:
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 взаимодействует через тот же интерфейс, что и другие машины. В противном случае это было бы так:
Это можно сделать с помощью parent-proxy
настройка:
/ip proxy
set parent-proxy=<IP of Squid machine> parent-proxy-port=3128
/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