WireGuard服务器配置咨询:仅局域网访问及多连接类型设置
WireGuard服务器配置咨询:仅局域网访问及多连接类型设置
嘿,我来帮你捋清楚这两个WireGuard的配置问题,都是很常见的需求,不难搞定的!
一、实现Peer访问家庭局域网但使用自身互联网连接
这个核心是控制路由规则,让只有局域网流量走WireGuard,其他流量走Peer自己的默认网络:
1. 服务器端调整
- 不要推送默认路由:你的WireGuard服务器配置里,不管是
[Interface]段还是[Peer]段,都别加指向0.0.0.0/0或者::/0的路由推送,只专注于家庭局域网网段。 - 配置Peer的AllowedIPs:在对应Peer的
[Peer]段里,只包含该Peer的VPN IP+家庭局域网网段,比如:
(这里[Peer] PublicKey = 你的Peer公钥 AllowedIPs = 10.0.0.2/32, 192.168.1.0/24 PersistentKeepalive = 2510.0.0.2是该Peer的VPN内网IP,192.168.1.0/24是你家局域网网段,根据实际情况替换) - 开启IP转发:执行
sysctl -w net.ipv4.ip_forward=1临时生效,然后把net.ipv4.ip_forward=1和net.ipv6.conf.all.forwarding=1加到/etc/sysctl.conf里永久生效,记得执行sysctl -p重载配置。 - 设置iptables转发规则:允许WireGuard接口和家庭局域网接口之间的流量互通:
(# 允许VPN流量转发到局域网 iptables -A FORWARD -i wg0 -o eth0 -s 10.0.0.0/24 -d 192.168.1.0/24 -j ACCEPT # 允许局域网流量转发到VPN iptables -A FORWARD -i eth0 -o wg0 -s 192.168.1.0/24 -d 10.0.0.0/24 -j ACCEPTeth0是服务器连接家庭局域网的物理接口,wg0是WireGuard接口,根据实际替换)
2. Peer端调整
Peer的配置里,AllowedIPs只设置为家庭局域网网段+WireGuard服务器的VPN IP,比如:
AllowedIPs = 192.168.1.0/24, 10.0.0.1/32
这样一来,Peer只有访问你家局域网的流量会走WireGuard通道,其他所有上网流量都会走自己本地的互联网连接,完全符合你的需求。
二、同一WireGuard服务器实现两种连接类型(LAN Only & LAN+Internet)
完全不需要搞多个WireGuard接口(wg0、wg1),同一接口下给不同Peer配置不同的规则就可以,更简洁高效:
1. LAN Only类型的Peer配置
和上面第一个需求的配置完全一致,服务器端的[Peer]段只包含VPN IP+局域网网段,不涉及默认路由,Peer端的AllowedIPs也只设置局域网和服务器VPN IP。
2. LAN+Internet类型的Peer配置
- 服务器端配置:在这个Peer的
[Peer]段里,加上默认路由的AllowedIPs,同时指定Pi-hole作为DNS:[Peer] PublicKey = 该Peer的公钥 AllowedIPs = 10.0.0.3/32, 0.0.0.0/0, ::/0 PersistentKeepalive = 25 DNS = 192.168.1.5 # 替换成你的Pi-hole局域网IP - 添加Masquerade规则:让这个Peer的互联网流量能通过服务器转发出去(做SNAT):
如果需要支持IPv6,再对应添加IPv6的规则:iptables -t nat -A POSTROUTING -o eth0 -s 10.0.0.0/24 -j MASQUERADE
(ip6tables -t nat -A POSTROUTING -o eth0 -s fd42:42:42::/64 -j MASQUERADEfd42:42:42::/64是你的WireGuard IPv6网段,按需替换)
Proxmox LXC容器的额外注意事项
如果你是用LXC容器跑WireGuard,得确保容器有足够的权限:
- 编辑容器的配置文件(比如
/etc/pve/lxc/100.conf,100是容器ID),添加以下内容:lxc.cap.drop = lxc.cgroup2.devices.allow = c 10:200 rwm lxc.net.0.type = veth lxc.net.0.link = vmbr0 lxc.net.0.flags = up lxc.net.0.ipv4 = 192.168.1.10/24 # 容器的局域网IP lxc.net.0.ipv4.gateway = 192.168.1.1 - 然后在容器内部开启IP转发,和之前服务器端的操作一样设置sysctl即可。
备注:内容来源于stack exchange,提问作者Boosted1g
相关产品推荐
相关产品推荐

