[WireGuard] 如何使 Wireguard 接入到局域网的设备,亦可以走透明代理

树莓派上面做的网关,跑 ubuntu-jammy

首先,我根据 新 V2Ray 白话文指南 – 透明代理 TPROXY 配置了透明代理,局域网里面的设备配置一下网关就可以科学上网(没有在路由配置默认网关指向树莓派)

需求:外出的时候,Wireguard(wg)接入的设备跟家里局域网一样走透明代理的形式,不要通过 SwitchyOmega 或者系统配代理指向树莓派的方式进行科学上网。

赐教:

  1. 局域网的透明代理跟 wg 不能共存,wg client 握手失败 ,有熟悉朋友讲解一下,是哪里出错了?或者推荐一下 debug 工具。

  2. 应该怎么配置(iptable OR ip route OR 配置 v2fly 的 Routing)才可以实现 wg 的接入设备也能透明代理?

  3. 还是说,换一个透明代理的思路,由(其他)软件层面去管理 wg 和局域网的透明代理。

相关信息

局域网网段:10.12.0.0/24

  • 路由地址: 10.12.0.200
  • 树莓派地址: 10.12.0.100

Wireguard 网段:10.16.0.0/24

tproxy 的 nft

flush ruleset include "/etc/nftables/private-ipv4.nft"
include "/etc/nftables/chnroute.nft" table ip v2ray { chain PREROUTING { type filter hook prerouting priority filter; policy accept; ip daddr $private_ipv4 return ip daddr $chnroute_list return meta l4proto { tcp, udp } ip daddr 10.12.0.0-10.12.0.255 return meta mark 0x000000ff return meta l4proto { tcp, udp } meta mark set 0x00000001 tproxy to 127.0.0.1:12345 accept } chain OUTPUT { type route hook output priority filter; policy accept; ip daddr $private_ipv4 return meta l4proto { tcp, udp } ip daddr 10.12.0.0-10.12.0.255 return meta mark 0x000000ff return meta l4proto { tcp, udp } meta mark set 0x00000001 accept }
} table ip filter { chain DIVERT { type filter hook prerouting priority mangle; policy accept; meta l4proto tcp socket transparent 1 meta mark set 0x00000001 accept }
}

wg 的 nft

nft flush ruleset
nft add table filter
nft add chain filter INPUT { type filter hook input priority 0 \; }
nft add chain filter FORWARD { type filter hook forward priority 0 \; }
nft add chain filter OUTPUT { type filter hook output priority 0 \; } nft add table wg2nat
nft add chain wg2nat PREROUTING { type nat hook prerouting priority -100 \; }
nft add rule wg2nat PREROUTING meta nftrace set 1
nft add chain wg2nat INPUT { type nat hook input priority 100 \; }
nft add chain wg2nat OUTPUT { type nat hook output priority -100 \; }
nft add chain wg2nat POSTROUTING { type nat hook postrouting priority 100 \; }
nft add rule wg2nat POSTROUTING oifname "eth0" ip saddr 10.16.0.0/24 counter masquerade comment "wireguard-nat-rule"

ip route

default via 10.12.0.200 dev eth0 proto dhcp src 10.12.0.100 metric 100 10.12.0.0/24 dev eth0 proto kernel scope link src 10.12.0.100 metric 100 10.12.0.200 dev eth0 proto dhcp scope link src 10.12.0.100 metric 100 10.12.0.100 dev eth0 proto dhcp scope host src 10.12.0.100 metric 100 10.16.0.0/24 dev wg0 proto kernel scope link src 10.16.0.1 223.5.5.5 via 10.12.0.200 dev eth0 proto dhcp src 10.12.0.100 metric 100

发表回复

您的电子邮箱地址不会被公开。