You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Mikrotik侧对StrongSwan IKEv2隧道的IPsec流量配置源NAT

如何在Mikrotik侧对StrongSwan IKEv2隧道的IPsec流量配置源NAT

我之前也碰到过一模一样的问题——Mikrotik上IPsec自动生成的notrack规则会直接跳过连接跟踪,导致普通的NAT规则根本不生效。别着急,给你两个可行的解决方案,一步步来就能搞定:

核心问题分析

先搞清楚为啥常规NAT规则没用:Mikrotik在建立IPsec隧道时,会自动在/ip firewall raw表里添加notrack规则,匹配IPsec策略的流量,让这些流量绕过连接跟踪模块,而NAT是依赖连接跟踪的,所以你的规则会被直接忽略。你可以用这条命令查看自动生成的规则:

/ip firewall raw print

会看到类似这样的系统自动规则:

0  D chain=prerouting action=notrack src-address=100.64.10.0/24 dst-address=192.168.10.0/24 ipsec-policy=in,ipsec
1  D chain=prerouting action=notrack src-address=192.168.10.0/24 dst-address=100.64.10.0/24 ipsec-policy=out,ipsec

解决方案一:针对性让目标流量进入连接跟踪(推荐)

这个方法不会影响其他IPsec流量,只针对你需要NAT的隧道流量生效:

  1. 在RAW表添加优先规则,取消目标流量的notrack
    把这条规则放在自动notrack规则前面,让来自隧道(源100.64.10.1)、目标是内网192.168.10.X子网的流量进入连接跟踪:

    /ip firewall raw add chain=prerouting src-address=100.64.10.1 dst-address=192.168.10.0/24 action=accept place-before=0
    

    如果隧道过来的是整个子网(比如100.64.10.0/24),把src-address改成对应的子网即可。

  2. 配置源NAT规则
    现在流量能被连接跟踪处理了,添加SNAT规则把源地址改成内网允许的IP:

    /ip firewall nat add chain=srcnat src-address=100.64.10.1 dst-address=192.168.10.0/24 action=src-nat to-addresses=192.168.10.XX
    

    注意把192.168.10.XX换成你内网里空闲的、符合防火墙要求的IP地址。

解决方案二:全局关闭IPsec自动notrack规则

如果你的所有IPsec流量都需要经过NAT处理,可以直接关闭Mikrotik自动生成notrack规则的功能:

/ip ipsec settings set auto-add-raw=no

之后再添加你需要的SNAT规则即可。不过这个方法会影响所有IPsec隧道,所以如果只有当前这条隧道需要NAT,优先用方案一。

测试验证

配置完成后,在内网目标主机上用netstat -an或者类似工具查看 incoming 连接的源地址,应该已经变成你设置的192.168.10.XX了。如果还是不行,检查一下:

  • RAW表的规则顺序,确保自定义规则在自动规则前面
  • NAT规则的src-address和dst-address是否匹配正确
  • 内网主机的防火墙是否允许这个新的源IP访问

备注:内容来源于stack exchange,提问作者Serge S.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 12:43:07