一个wireguard的peer(当客户机)+microsocks(socks5代理局域网)实现访问peer局域网。
184
用途:
A:属于wireguard服务端隧道IP段=10.1.1.0/24,隧道IP=10.1.1.1,局域网/内网/私网段=192.168.1.0/24。
B:属于wireguard的peer隧道IP段=10.1.1.0/24,隧道IP=10.1.1.2,局域网/内网/私网段=192.168.1.0/24。
通常配置下的wireguard属于点对点连接,即通过隧道IP段进行连接,例如10.1.1.1 -> 10.1.1.2 或 10.1.1.2 -> 10.1.1.1
此时,使用github开源项目wg-easy实现wireguard服务端,出现了这个情况:A 点对点连接 B , B 点对点连接 A 这是正常隧道连接,没问题,神奇的是 B 还可以连接 A 的局域网/私网/内网 但是 A 不可以连接 B 的 局域网/私网/内网。
这个情况下,对于wireguard不太熟悉的人(比如我)很难配置一个双局域网互通的模式(网对网)双方都可以访问对方的局域网/内网/私网其他设备,实验了几次失败后,决定配合microsocks实现。
实现原理:通过此peer,在一个peer环境内安装一个microsocks(通过他建立一个socks5局域网代理),之后,任何peer连接到wireguard服务器之后,再使用这个peer的IP(开一个端口给microsocks作为socks5代理),IP+端口 = socker5代理 ,给局域网的socks5客户端连接后,相当于直接连接到了这个peer机器的内网里,连接后开源使用peer的局域网/内网/私网的其他设备(其他设备没有特别单独去设计防火墙拒绝的情况下。)
使用办法:
1,配置网络:
查看网卡获取接口名称:
ip addr
开启网卡混杂模式:
sudo ifconfig [接口名称] promisc && sudo ip link set [接口名称] promisc on
建立macvlan网络,以下网段要跟局域网段一样,最后的myvlan是建立后的名称,但是后期创建容器的时候要对应上:
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=[接口名称] myvlan
2,创建映射wg-conf文件的目录,并存放与配置wg-peer连接配置文件。
sudo mkdir -p /opt/wireguard-socks5/ && sudo vi /opt/wireguard-socks5/wg0.conf
示例配置文件如下,请补全后再保存:
#启动配置时删除注释内容,避免错误。
[Interface]
PrivateKey = #填写私钥
Address = 10.1.1.2/24 #服务端分配给本机的IP。
ListenPort = 12345 #监听端口
[Peer]
PublicKey = #公钥
PresharedKey = #预共享密钥
AllowedIPs = 0.0.0.0/0 #放行的网段
PersistentKeepalive = 5 #间隔的握手时间,为0不握手,一般为5-15,代表5-15秒握手。
Endpoint = 168.888.88.8:12345 #公网udp通讯地址,可为ddns域名。
3,创建docker-compose文件,启动docker容器。
sudo mkdir -p /opt/wireguard-socks5/docker-compose.yml/ && sudo vi /opt/wireguard-socks5/docker-compose.yml
docker-compose文件内容参考如下:
version: '3.8' # 确保使用支持您所需功能的最高版本
services:
frp-wg:
image: gitdebiand/wireguard-microsocks:0.0.0.1
container_name: wg-sk5
restart: unless-stopped
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
privileged: true # 添加特权模式
networks:
myvlan:
ipv4_address: 192.168.1.2
volumes:
- /opt/wireguard-socks5/:/opt/wg-conf/
networks:
myvlan:
external: true
name: myvlan # 这实际上是可选的,因为 Docker Compose 会从服务配置中推断出网络名称
4,启动docker容器:
sudo cd /opt/wireguard-socks5/ && sudo docker-compose up -d
5,服务端(我使用的是开源项目wg-easy,如果你是直接宿主运行的,可以直接使用wg命令查看)查看此peer,此时此peer应该上线才是正确配置。
6,其他wireguard的peer客户端连接到wireguard的服务端(我的是wg-easy项目)后,使用socks5的客户端工具,市面上有很多,不做推荐,通过连接到此次部署的peer+socks5的这个IP+端口(此容器默认socks端口是1080),示例:10.1.1.2:1080之后,即可使用此peer的局域网,连接到此局域网的其他设备,
ps:丢两个某代理软件的连接socks5配置文件参考,此项目仅供用于打通家庭到公司远程办公需求/学习网络技术使用,请勿用于其他违法行为的构建,否则后果自负!
简单版:
mode: Global
log-level: info
proxies:
- { name: 'socks5', type: socks5, server: #<此peer的IP>, port: 1080, tcp: true, udp: true }
花哨版:
mode: Global
log-level: info
proxies:
- { name: 'socks5', type: socks5, server: #<此peer的IP>, port: 1080, tcp: true, udp: true }
proxy-groups:
- name: Proxy
type: select
proxies:
- ⚖️ 花里胡哨-分组
- ⚖️ 花里胡哨-摆设
- socks5
- name: ⚖️ 花里胡哨-分组
type: load-balance
url: http://www.baidu.com/generate_204
interval: 300
strategy: consistent-hashing
proxies:
- socks5
- name: ⚖️ 花里胡哨-摆设
type: load-balance
url: http://www.baidu.com
interval: 300
strategy: round-robin
proxies:
- socks5
rules:
# 带有baidu的域名走代理
- DOMAIN-SUFFIX,baidu.com,Proxy
# 带有baidu的关键词走代理
- DOMAIN-KEYWORD,baidu,Proxy
# 域名为baidu的关键词走代理
- DOMAIN,baidu.com,Proxy
# 带有baidu的后缀的就走代理
- DOMAIN-SUFFIX,baidu.com,REJECT
# 不走代理的IP
- IP-CIDR,127.0.0.0/8,DIRECT
# 如果为CN地区,直连,需要有规则配合识别。
- GEOIP,CN,DIRECT
# 如果前面规则有匹配,符合规则,走代理。
- MATCH,Proxy
本仓库项目致力于学习网络技术,打通两个异地办公需求为目标,用于学习跟方便办公使用,如使用本项目变相/变种/修改等方式后使用与违法行为,概不负责,后果自负,请遵守当地法律法规!
Content type
Image
Digest
sha256:b06f7ee61…
Size
86.5 MB
Last updated
almost 2 years ago
docker pull gitdebiand/wireguard-microsocks:0.0.0.1