«

RouterOS7 WireGuard(site-to-site)配置

myluzh 发布于 阅读:52 RouterOS


0x01 前言

本文章实现 Home2(家庭端,无公网IP) 与 Cloud(云端,有公网IP) 之间的互联。由于家庭端位于 NAT 之后,需要配置 Persistent Keepalive 保持连接活跃。

云端 (Cloud-ROS):
公网 IP: 36.133.163.133
WireGuard 端口: 13231 (UDP)
WireGuard 接口 IP: 100.100.100.18/24
内网网段: 172.18.0.0/16

家庭端 (Home2-ROS):
公网 IP: 无 (NAT)
WireGuard 接口 IP: 100.100.100.17/24
内网网段: 172.17.0.0/16

其他小tips:
1、云平台关闭源/目的检查:务必在云平台控制台关闭网卡的“源/目的地址检查”功能,否则网卡会因安全策略直接丢弃(非本机 IP)的转发流量。
2、云平台配置VPC路由:需在云平台 VPC 路由表中添加一条目标网段为家庭内网 (172.17.0.0/16)、下一跳指向 Cloud-ROS 网卡的静态路由,确保云端其他服务器能正确回包。

0x02 配置

1、创建wireguard接口

cloud-ros配置 创建wg接口:

[admin@CloudROS] /interface/wireguard> add listen-port=13231 name=wireguard1 comment="to-home1"
# 获取公钥
[admin@CloudROS] /interface/wireguard> /interface wireguard print
Flags: X - disabled; R - running 
 0  R ;;; to home1
      name="wireguard1" mtu=1420 listen-port=13231 private-key="kDA8AfmL+5QGx/xM8XR0uP8py/PvWrQzyY0/0gJ072U=" 
      public-key="ZmU6mtYZs+ZuZfHUVYV6xeIkZAzVjHyDH+H6mO0rLHg=" 
# 配置wg接口ip
[admin@CloudROS] /ip/address> add address=100.100.100.18/24 interface=wireguard1 network=100.100.100.0

home2-ros配置 创建wg接口:

[admin@HomeROS_2] /interface/wireguard> add name=wireguard1 comment="to-cloudros"
# 获取公钥
[admin@HomeROS_2] /interface/wireguard> /interface wireguard print
Flags: X - disabled; R - running 
 0  R ;;; to-cloudros
      name="wireguard1" mtu=1420 listen-port=3247 private-key="qNt4h5SwhhfOHzHyCies9Qsa7mKekBeRDYkL+wqwDlk=" 
      public-key="k2dGUJhSNU/fvvE4II6L8HzjS8q9In41nb/b73Kk2Qo=" 
# 配置wg接口ip
[admin@HomeROS_2] /ip/address> add address=100.100.100.17/24 interface=wireguard1 network=100.100.100.0

2、配置peer

cloud-ros 配置peer:

[admin@CloudROS] /interface/wireguard/peers> add allowed-address=100.100.100.17/32,172.17.0.0/16 interface=wireguard1 public-key="k2dGUJhSNU/fvvE4II6L8HzjS8q9In41nb/b73Kk2Qo=" comment="home2-node"

#public-key:需要填写对端的公钥
#allowed-address: 必须包含 Home2 的 WG接口IP (100.100.100.17/32) 和 Home2 的 内网网段 (172.17.0.0/16),否则无法通信。
#注意: 云端不需要填 endpoint-address,因为它等待家庭端主动连接。

home2-ros 配置 peer:

[admin@HomeROS_2] /interface/wireguard/peers> add allowed-address=100.100.100.18/32,172.18.0.0/16 \
endpoint-address=36.133.163.133 \
endpoint-port=13231 \
interface=wireguard1 \
persistent-keepalive=25s \
public-key="ZmU6mtYZs+ZuZfHUVYV6xeIkZAzVjHyDH+H6mO0rLHg=" \
 comment="Cloud-Server"

#endpoint-address/port: 填入 Cloud 的公网 IP 和端口。
#allowed-address: 填入 Cloud 的 WG 接口 IP 和 Cloud 的内网网段。
#persistent-keepalive: 关键参数。设置为 25s,强制每 25 秒发送心跳包,防止家庭宽带 NAT 会话超时导致连接中断。

3、配置路由

cloud-ros 路由配置:

[admin@CloudROS] /ip/route> add dst-address=172.17.0.0/16 gateway=wireguard1

home2-ros 路由配置:

[admin@HomeROS_2] /ip/route> add dst-address=172.18.0.0/16 gateway=wireguard1

4、防火墙放行wg端口

cloud-ros 配置:

[admin@CloudROS] /ip/firewall/filter> add action=accept  chain=input  comment="allow wireguard" dst-port=13231 protocol=udp   

5、测试

如果 Ping 通,说明 VPN 隧道已建立成功。接下来可以测试内网 IP 互访,确保路由配置正确。

[admin@CloudROS] > ping 100.100.100.17
  SEQ HOST                                     SIZE TTL TIME       STATUS
    0 100.100.100.17                             56  64 18ms262us 
[admin@HomeROS_2] > ping 100.100.100.18
  SEQ HOST                                     SIZE TTL TIME       STATUS
    0 100.100.100.18                             56  64 18ms614us 

0x03 其他补充(非必须)

1、优化建议:防火墙 Forward 链
防火墙只配置了 input 链放行 UDP 13231 端口。这只能保证隧道建立成功(即 RouterOS 之间能握手)。
但在默认的 RouterOS 配置中(尤其是 defconf),防火墙通常会 drop 掉非 LAN 接口的转发流量。如果不配置 forward 链,可能会出现:Ping 隧道 IP (100.x) 能通,但 Ping 内网设备 (172.x) 不通的情况。

# 在 Cloud 和 Home 端都添加允许 WireGuard 接口转发流量的规则。
# Cloud-ROS /Home2-ROS 均需添加。或者更简单的做法是把 wireguard1 接口加入到 LAN 接口列表中(/interface/list/member),但这取决于具体的防火墙策略。
/ip/firewall/filter 
add action=accept chain=forward comment="allow wireguard traffic" in-interface=wireguard1
add action=accept chain=forward comment="allow wireguard traffic" out-interface=wireguard1

2、优化建议:MSS Clamping (防止大包丢包)
WireGuard 会产生额外的头部开销(Overhead),导致 MTU 变小(你设置了 1420)。如果内网传输大文件或访问某些网页,可能会因为 TCP 包过大被分片或丢弃,导致“Ping 得通但网页打不开”或“SSH 卡顿”。

# 在 Mangle 表中自动调整 TCP MSS。
# Cloud-ROS / Home2-ROS 均建议添加。
/ip/firewall/mangle
add action=change-mss chain=forward new-mss=clamp-to-pmtu passthrough=yes protocol=tcp tcp-flags=syn

ros routeros7 ros7 wireguard


正文到此结束
版权声明:若无特殊注明,本文皆为 Myluzh Blog 原创,转载请保留文章出处。
文章内容:https://itho.cn/ros/552.html
文章标题:《RouterOS7 WireGuard(site-to-site)配置