如何将Mikrotik Wireguard客户端设置为Linux笔记本的默认网关,以通过B国IP访问互联网
我来一步步帮你实现这个需求,分为Mikrotik路由器配置和Linux笔记本配置两部分,确保每一步都清晰易懂:
一、Mikrotik端配置(关键是开启转发和设置NAT)
你的Mikrotik本身用B国公网IP上网,要让它成为笔记本的网关,必须先开启流量转发,再做源地址转换让流量能正常从B国ISP出去:
首先开启IP转发功能(这是网关的核心要求):
登录Mikrotik的CLI或者Winbox,执行命令:/ip settings set ip-forward=yes(如果用Winbox,直接到
IP > Settings界面,勾选IP Forwarding选项即可)添加NAT伪装规则,让从Wireguard过来的笔记本流量,通过Mikrotik的公网接口出去时换成B国的公网IP:
把命令里的<公网接口名称>换成Mikrotik连接B国互联网的实际接口(比如ether1、pppoe-out1),10.10.7.0/24是你的Wireguard子网(如果子网不是这个,替换成实际的):/ip firewall nat add chain=srcnat action=masquerade src-address=10.10.7.0/24 out-interface=<公网接口名称>确认Wireguard peer配置正常:
检查你的Mikrotik Wireguard peer设置,确保已经允许10.10.7.9/32(你的笔记本VPN IP)的流量接入——你之前能访问Mikrotik,这一步应该已经配置好了,不用额外修改。
二、Linux笔记本端配置(修改路由,避免Wireguard断连)
直接改默认路由会导致Wireguard连接断开(因为笔记本找不到A国的Wireguard服务器了),所以要先保留服务器的路由,再切换默认网关:
先获取两个关键信息:
- A国Wireguard服务器的公网IP(记为
A_SERVER_IP) - 笔记本本地网卡的默认网关IP(比如家里路由器的IP,记为
LOCAL_GW)和网卡名称(比如wlan0、eth0)
- A国Wireguard服务器的公网IP(记为
添加静态路由,让到A国服务器的流量走本地网卡,避免Wireguard断连:
ip route add A_SERVER_IP via LOCAL_GW dev <本地网卡名称>举个例子:如果服务器IP是
1.2.3.4,本地网关是192.168.1.1,网卡是wlan0,命令就是:ip route add 1.2.3.4 via 192.168.1.1 dev wlan0修改默认路由,让所有流量通过Wireguard发到Mikrotik的VPN IP(
10.10.7.155):
先删除原来的默认路由,再添加新的默认路由(<Wireguard接口名称>比如wg0):ip route del default ip route add default via 10.10.7.155 dev <Wireguard接口名称>测试验证:
打开浏览器查询你的公网IP,应该显示B国的地址了。如果不行,用ip route show查看路由表是否正确,或者检查Mikrotik的NAT规则和IP转发是否生效。持久化配置(可选,重启后自动生效):
编辑你的Wireguard配置文件(比如/etc/wireguard/wg0.conf),在[Interface]段添加以下内容,替换掉里面的占位符:PostUp = ip route add A_SERVER_IP via LOCAL_GW dev <本地网卡名称>; ip route del default; ip route add default via 10.10.7.155 dev <Wireguard接口名称> PostDown = ip route del A_SERVER_IP via LOCAL_GW dev <本地网卡名称>; ip route del default; ip route add default via LOCAL_GW dev <本地网卡名称>这样每次启动Wireguard时会自动设置路由,关闭时恢复原来的默认路由。
备注:内容来源于stack exchange,提问作者Matthai




