MikroTik proxy

MikroTik 上的代理设置

系统要求

要在 MikroTik 路由器上使用代理,请考虑以下硬件要求:

1) RouterOS版本7或更高版本,因为需要容器化支持

2) 128 MB 以上 RAM\ 的路由器型号
3) 路由器必须具有 arm64、arm 或 x86 CPU 架构,因为仅在这些架构上支持虚拟化。通过链接了解更多信息:

https://help.mikrotik.com/docs/spaces/ROS/pages/84901929/Container

目前市场上可用的合适路由器示例: hAP ax2、hAP ax3、Chateau PRO ax、RB5009、L009UiGS

警告:

您需要物理访问 RouterOS 设备才能启用对容器功能的支持,默认情况下禁用;

  • 一旦启用容器功能,就可以远程添加/配置/启动/停止/删除容器!
  • 如果您的 RouterOS 设备遭到入侵,容器可用于轻松地在您的 RouterOS 设备中并通过网络安装恶意软件;
  • 您的 RouterOS 设备与您在容器中运行的任何设备一样安全;
  • 如果你运行容器,则没有任何类型的安全保证;
  • 在 RouterOS 设备上运行第 3 方容器映像可能会打开安全漏洞/攻击向量/攻击面;
  • 懂得如何构建漏洞的专家将能够越狱/提升到 root 权限;

https://help.mikrotik.com/docs/spaces/ROS/pages/84901929/Container#Container-Disclaimer

准备路由器

  1. 安装所需的包

打开控制台并输入以下命令来设置更新通道。

/system package update set channel=stable

然后打印包裹清单。

/system package update check-for-updates

启用“容器”包并重新启动路由器。

/system/package enable container


或者从 MikroTik 网站下载 ROS 版本和 架构 的“额外包”后,通过 Winbox 手动安装“容器”包([https://mikrotik.com/download](https://mikrotik.com/download))。

打开下载的存档,将包复制到文件列表,然后重新启动设备。

重新启动后,“Container”包应该出现。

  1. 启用容器化支持

要在路由器上激活容器化,请在终端中输入以下命令:

/system/device-mode/update container=yes

然后在5分钟内重新启动路由器。重启后,容器创建即可使用

您还可以通过控制台检查:

/system/device-mode/print

“容器”应该是“是”

安装和配置容器

创建VETH接口

为未来的容器创建虚拟接口:

/interface veth add address=10.0.201.2/24 dhcp=no gateway=10.0.201.1 gateway6="" mac-address=6D:F3:B2:85:44:45 name=veth1

在哪里:
地址 - 您要分配给容器的地址
gateway - 您的网桥的地址(主网络网关)

Viewing the bridge address

为了清楚起见,我们将在内部网络内执行所有操作,而不将容器网络与家庭网络分开。

  1. 将接口添加到活动网桥

将创建的接口添加到网桥中。

/interface bridge port
 add bridge=bridge1 interface=veth1
  1. 配置虚拟化并添加容器

在此示例中,我们将使用来自 wiktorbgu 的基于 hev-socks5-tunnel 的 Docker 映像。

链接 到 Docker 镜像

为容器创建变量

对于容器,您需要创建包含代理连接参数的变量。为此,请在 MikroTik 控制台中添加以下变量:

/container envs 
add key=SOCKS5_ADDR list=proxy1 value=ip/domain_proxy 
add key=SOCKS5_INTERFACE list=proxy1 value=xray_eth 
add key=SOCKS5_PASSWORD list=proxy1 value=password_proxy 
add key=SOCKS5_PORT list=proxy1 value=port_proxy 
add key=SOCKS5_UDP_MODE list=proxy1 value=udp 
add key=SOCKS5_USERNAME list=proxy1 value=username_proxy

必须根据购买订单中的数据填写这些字段。

您可以在 设置指南 中查看代理设置示例。

请注意,测试连接是通过 SOCKS5 进行的!要查找 SOCKS 连接端口,请单击订单内的_显示袜子5_。

添加容器

添加registry-url 和用于下载图像的临时文件夹。

/container config
set registry-url=https://registry-1.docker.io tmpdir=/tmp

然后创建容器,指定“工作目录”、“接口”和其他参数。

/container
add check-certificate=no envlists=proxy1 interface=veth1 name=hev-socks5-tunnel-mikrotikS1 remote-image=wiktorbgu/hev-socks5-tunnel-mikrotik root-dir=hev-datas1 workdir=/ start-on-boot=yes

启动容器。

/container/start hev-socks5-tunnel-mikrotikS1

在此阶段,还值得检查与容器的连接性。

ping 10.0.201.2

自定义路由设置

  1. 添加路线

要为各个网络设备或特定资源的流量配置精确路由,您需要创建单独的 FIB。

/routing/table/add name=proxy_s1 fib

将默认路由添加到容器以供将来的规则使用。

/ip route
add disabled=no dst-address=0.0.0.0/0 gateway=10.0.201.2 routing-table=
proxy_s1 suppress-hw-offload=yes
  1. 添加规则以将流量重定向到特定资源

要通过代理将流量重定向到所需资源,请在“ip/firewall/address list”中创建静态地址列表。

假设我们想通过代理打开 example.com。创建具有任意名称的列表并指定资源 IP 地址或域。

/ip firewall address-list
add address=example.com list=proxy

接下来,创建一个 Mangle 规则,将所有流量标记到指定资源,并在“操作”中指定上一步中创建的新路由路径。

/ip firewall mangle
add action=mark-routing chain=prerouting dst-address-list=proxy new-routing-mark=proxy_s1 passthrough=no

使用相同的逻辑,您可以添加其他资源,例如 YouTube:

请注意,并非所有资源都可以通过域完全解析所有地址,如 example.com 示例中所示。因此,您需要指定静态 IPv4 地址的完整列表,如 YouTube 示例中所示。否则,部分网站/资源流量将无法通过代理或可能无法正常工作。对于其他资源,您可以在线搜索静态地址列表。

  1. 添加规则以重定向来自设备或网络的所有流量

要重定向特定设备或整个网络,请创建明确指定源的 Mangle 规则。

假设网络中有一个地址为10.0.201.244的设备,我们希望它的流量通过代理。创建以下规则:

/ip firewall mangle
add action=mark-routing chain=prerouting src-address=10.0.201.244 new-routing-mark=proxy_s1 passthrough=no

作为 src-address,您可以指定整个子网或单个主机,例如 src-address=192.168.0.0/24。这样,来自指定地址/网络的所有流量将仅通过代理。

完毕!您现在可以在路由器上使用代理,同时灵活管理来自网络上设备的流量。

最后更新

本页内容