Sign inSign up

gitdebiand/wireguard-microsocks

By gitdebiand

Updated almost 2 years ago

一个wireguard的peer(当客户机)+microsocks(socks5代理局域网)实现访问peer局域网。

Image
Networking
0

184

gitdebiand/wireguard-microsocks repository overview

用途:

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

本仓库项目致力于学习网络技术,打通两个异地办公需求为目标,用于学习跟方便办公使用,如使用本项目变相/变种/修改等方式后使用与违法行为,概不负责,后果自负,请遵守当地法律法规!

Tag summary

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