AWS EC2上MikroTik的IPSec隧道已建立但私有子网间无法通信
AWS EC2上MikroTik的IPSec隧道已建立但私有子网间无法通信
我来帮你一步步排查这个问题!先理清楚你的当前环境:
- 两台部署在AWS EC2上的MikroTik设备:
- R1:公网IP 3.75.170.246,私有子网 172.168.0.0/24
- R2:公网IP 18.199.145.214,私有子网 10.0.0.0/24
- AWS侧配置:安全组已放行所有协议和端口,EC2实例的源/目标检查已关闭
- 现状:IPSec隧道状态显示「已建立」,公网IP之间可正常ping通,但私有IP/子网之间完全无法ping通
结合这些信息,大概率是MikroTik本地的配置细节没到位,给你几个排查方向:
1. 确认IPSec策略的子网匹配是否正确
隧道建立只说明两端协商成功,但如果策略里没正确包含两边的私有子网,流量根本不会走隧道。你要分别检查两台MikroTik的IPSec策略:
- R1上的策略要明确允许172.168.0.0/24(本地子网)和10.0.0.0/24(对方子网)之间的所有流量,动作设为encrypt
- R2上的策略则对应允许10.0.0.0/24和172.168.0.0/24的流量,动作同样设为encrypt
一定要仔细检查子网段有没有写错,比如掩码是不是/24,有没有把本地和远程子网搞反。
2. 检查MikroTik的IP转发是否开启
这是很多人容易忽略的点!MikroTik默认可能没开启IP转发功能,导致它不会转发不同子网之间的流量。你可以进入IP > Settings菜单,看看「IP forwarding」选项有没有勾选,如果没勾,赶紧打开试试。
3. 确认路由表配置是否正确
要确保两台MikroTik都有指向对方私有子网的路由,而且这条路由是关联到IPSec隧道的:
- 在R1上,需要添加一条路由:目标网络为10.0.0.0/24,网关选择IPSec隧道的接口(如果是基于策略的IPSec,要确保策略优先级高于普通路由)
- 在R2上,添加目标网络为172.168.0.0/24的路由,同样指向IPSec隧道
另外也可以确认下AWS VPC的路由表,有没有把对方私有子网的流量指向MikroTik实例?不过你已经关了源/目标检查,这一步大概率没问题,但多确认下没坏处。
4. 排查MikroTik本地防火墙规则
有可能是MikroTik自身的防火墙拦截了私有子网的流量。你可以先临时调整forward链的规则,比如添加一条允许所有流量通过forward链的规则,然后测试能不能ping通。如果能通,再慢慢细化防火墙规则,只放行需要的协议和子网流量,避免过度开放。
5. 用抓包工具定位流量走向
如果上面的步骤都没解决问题,你可以用MikroTik的抓包工具来排查:
- 在R1上抓取来自172.168.0.0/24、发往10.0.0.0/24的ICMP包,看看这些包有没有到达MikroTik,有没有被加密后发送出去
- 同时在R2上抓包,看有没有收到加密后的ICMP包,有没有解密后转发到本地子网,或者有没有回复包发回R1
通过抓包能直观看到流量在哪一步丢失了,定位问题会更准确。
备注:内容来源于stack exchange,提问作者PawelC
相关产品推荐
相关产品推荐

