364 lines
6.7 KiB
Markdown
364 lines
6.7 KiB
Markdown
# wgcf-docker
|
||
|
||
CloudFlare warp 的 docker 版
|
||
|
||
派生自: [https://github.com/Neilpang/wgcf-docker](https://github.com/Neilpang/wgcf-docker)
|
||
|
||
#### 我做了哪些改进:
|
||
|
||
1. 限制使用 3.17 版本的 Alpine,以避免因版本问题导致的错误。
|
||
2. 添加了 socks5 代理服务
|
||
|
||
运行示例:
|
||
|
||
```shell
|
||
docker run --rm -it \
|
||
--name wgcf \
|
||
--sysctl net.ipv6.conf.all.disable_ipv6=0 \
|
||
--privileged --cap-add net_admin \
|
||
-v /lib/modules:/lib/modules \
|
||
-v $(pwd)/wgcf:/wgcf \
|
||
-p 7889:1080 \
|
||
activeliang/wgcf-socks5-proxy -6
|
||
```
|
||
|
||
现在您可以在宿主机上使用 socks 代理:
|
||
|
||
```shell
|
||
curl --socks5 127.0.0.1:7889 -6 ip.p3terx.com
|
||
```
|
||
|
||
## 可配置的 SOCKS5 代理通过环境变量
|
||
|
||
此 SOCKS5 代理支持通过环境变量进行配置。您可以使用以下变量自定义代理设置:USER、PASSWORD、PORT 和 HOST。只有当提供了 USER 和 PASSWORD 变量时,认证(auth)才会被启用。
|
||
|
||
### 使用方法
|
||
|
||
要配置 SOCKS5 代理,请按照以下步骤操作:
|
||
|
||
1. 设置以下环境变量:
|
||
|
||
* USER:认证的用户名(可选)。
|
||
* PASSWORD:认证的密码(可选)。
|
||
* 端口:代理服务器的端口号(默认:1080)
|
||
* 代理服务器的主机地址(默认:0.0.0.0)。
|
||
|
||
注意:只有当 USER 和 PASSWORD 变量都提供时,才会启用身份验证。如果缺少任何一个,身份验证将不会启用。
|
||
|
||
2. 使用您首选的方法启动 SOCKS5 代理,并将环境变量作为参数传递。
|
||
|
||
示例:
|
||
|
||
```bash
|
||
PASSWORD=mypassword PORT=1080 HOST=0.0.0.0 start_proxy.sh
|
||
docker run --rm -it \
|
||
--name wgcf \
|
||
--sysctl net.ipv6.conf.all.disable_ipv6=0 \
|
||
--privileged --cap-add net_admin \
|
||
-v /lib/modules:/lib/modules \
|
||
-v $(pwd)/wgcf:/wgcf \
|
||
-p 7889:1080 \
|
||
-e USER=myuser \
|
||
-e PASSWORD=mypassword \
|
||
-e PORT=1080 \
|
||
-e HOST=0.0.0.0 \
|
||
activeliang/wgcf-socks5-proxy -6
|
||
```
|
||
|
||
此命令将使用指定的配置启动 SOCKS5 代理。
|
||
|
||
3. SOCKS5 代理将在指定的主机和端口上可用。仅当提供了 USER 和 PASSWORD 变量时才会强制执行身份验证。
|
||
|
||
|
||
就这样!你现在可以使用环境变量配置 SOCKS5 代理,并可以通过提供 USER 和 PASSWORD 变量来启用身份验证。
|
||
|
||
## 以下是原始项目的 README
|
||
|
||
1. 运行单个容器:
|
||
|
||
```
|
||
|
||
docker run --rm -it \
|
||
--name wgcf \
|
||
--sysctl net.ipv6.conf.all.disable_ipv6=0 \
|
||
--privileged --cap-add net_admin \
|
||
-v /lib/modules:/lib/modules \
|
||
-v $(pwd)/wgcf:/wgcf \
|
||
neilpang/wgcf-docker
|
||
|
||
|
||
|
||
The above command will enable both ipv4 and ipv6, you can enable ipv4 or ipv6 only like following:
|
||
|
||
|
||
#enable ipv4 only:
|
||
|
||
|
||
|
||
docker run --rm -it \
|
||
--name wgcf \
|
||
--sysctl net.ipv6.conf.all.disable_ipv6=0 \
|
||
--privileged --cap-add net_admin \
|
||
-v /lib/modules:/lib/modules \
|
||
-v $(pwd)/wgcf:/wgcf \
|
||
neilpang/wgcf-docker -4
|
||
|
||
|
||
|
||
#enable ipv6 only:
|
||
|
||
|
||
|
||
docker run --rm -it \
|
||
--name wgcf \
|
||
--sysctl net.ipv6.conf.all.disable_ipv6=0 \
|
||
--privileged --cap-add net_admin \
|
||
-v /lib/modules:/lib/modules \
|
||
-v $(pwd)/wgcf:/wgcf \
|
||
neilpang/wgcf-docker -6
|
||
|
||
|
||
|
||
```
|
||
|
||
或者:
|
||
|
||
```
|
||
docker run --rm -it \
|
||
--name wgcf \
|
||
--sysctl net.ipv6.conf.all.disable_ipv6=0 \
|
||
--privileged --cap-add net_admin \
|
||
-v /lib/modules:/lib/modules \
|
||
-v $(pwd)/wgcf:/wgcf \
|
||
neilpang/wgcf-docker:alpine
|
||
|
||
|
||
|
||
|
||
|
||
The above command will enable both ipv4 and ipv6, you can enable ipv4 or ipv6 only like following:
|
||
|
||
|
||
#enable ipv4 only:
|
||
|
||
|
||
docker run --rm -it \
|
||
--name wgcf \
|
||
--sysctl net.ipv6.conf.all.disable_ipv6=0 \
|
||
--privileged --cap-add net_admin \
|
||
-v /lib/modules:/lib/modules \
|
||
-v $(pwd)/wgcf:/wgcf \
|
||
neilpang/wgcf-docker:alpine -4
|
||
|
||
|
||
|
||
#enable ipv6 only:
|
||
|
||
|
||
docker run --rm -it \
|
||
--name wgcf \
|
||
--sysctl net.ipv6.conf.all.disable_ipv6=0 \
|
||
--privileged --cap-add net_admin \
|
||
-v /lib/modules:/lib/modules \
|
||
-v $(pwd)/wgcf:/wgcf \
|
||
neilpang/wgcf-docker:alpine -6
|
||
|
||
|
||
|
||
|
||
```
|
||
|
||
2. 如果另一个容器需要使用 wgcf 网络,可以这样运行:
|
||
|
||
```
|
||
|
||
docker run --rm -it --network container:wgcf curlimages/curl curl ipinfo.io
|
||
|
||
```
|
||
|
||
3. Docker-compose 示例:
|
||
|
||
```
|
||
Enable both ipv4 and ipv6 by default:
|
||
|
||
|
||
version: "2.4"
|
||
services:
|
||
wgcf:
|
||
image: neilpang/wgcf-docker:latest
|
||
volumes:
|
||
- ./wgcf:/wgcf
|
||
- /lib/modules:/lib/modules
|
||
privileged: true
|
||
sysctls:
|
||
net.ipv6.conf.all.disable_ipv6: 0
|
||
cap_add:
|
||
- NET_ADMIN
|
||
|
||
|
||
test:
|
||
image: curlimages/curl
|
||
network_mode: "service:wgcf"
|
||
depends_on:
|
||
- wgcf
|
||
command: curl ipinfo.io
|
||
|
||
|
||
|
||
|
||
Enable ipv6 only:
|
||
|
||
version: "2.4"
|
||
services:
|
||
wgcf:
|
||
image: neilpang/wgcf-docker:latest
|
||
volumes:
|
||
- ./wgcf:/wgcf
|
||
- /lib/modules:/lib/modules
|
||
privileged: true
|
||
sysctls:
|
||
net.ipv6.conf.all.disable_ipv6: 0
|
||
cap_add:
|
||
- NET_ADMIN
|
||
command: "-6"
|
||
|
||
|
||
test:
|
||
image: curlimages/curl
|
||
network_mode: "service:wgcf"
|
||
depends_on:
|
||
- wgcf
|
||
command: curl ipv6.ip.sb
|
||
|
||
|
||
|
||
|
||
|
||
Enable ipv4 only:
|
||
|
||
|
||
|
||
version: "2.4"
|
||
services:
|
||
wgcf:
|
||
image: neilpang/wgcf-docker:latest
|
||
volumes:
|
||
- ./wgcf:/wgcf
|
||
- /lib/modules:/lib/modules
|
||
privileged: true
|
||
sysctls:
|
||
net.ipv6.conf.all.disable_ipv6: 0
|
||
cap_add:
|
||
- NET_ADMIN
|
||
command: "-4"
|
||
|
||
|
||
test:
|
||
image: curlimages/curl
|
||
network_mode: "service:wgcf"
|
||
depends_on:
|
||
- wgcf
|
||
command: curl ipinfo.io
|
||
|
||
|
||
|
||
```
|
||
|
||
或者:
|
||
|
||
```
|
||
|
||
Enable both ipv4 and ipv6 by default:
|
||
|
||
|
||
|
||
version: "2.4"
|
||
services:
|
||
wgcf:
|
||
image: neilpang/wgcf-docker:alpine
|
||
volumes:
|
||
- ./wgcf:/wgcf
|
||
- /lib/modules:/lib/modules
|
||
privileged: true
|
||
sysctls:
|
||
net.ipv6.conf.all.disable_ipv6: 0
|
||
cap_add:
|
||
- NET_ADMIN
|
||
|
||
|
||
test:
|
||
image: curlimages/curl
|
||
network_mode: "service:wgcf"
|
||
depends_on:
|
||
- wgcf
|
||
command: curl ipinfo.io
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Enable ipv6 only:
|
||
|
||
|
||
|
||
version: "2.4"
|
||
services:
|
||
wgcf:
|
||
image: neilpang/wgcf-docker:alpine
|
||
volumes:
|
||
- ./wgcf:/wgcf
|
||
- /lib/modules:/lib/modules
|
||
privileged: true
|
||
sysctls:
|
||
net.ipv6.conf.all.disable_ipv6: 0
|
||
cap_add:
|
||
- NET_ADMIN
|
||
command: "-6"
|
||
|
||
|
||
test:
|
||
image: curlimages/curl
|
||
network_mode: "service:wgcf"
|
||
depends_on:
|
||
- wgcf
|
||
command: curl ipv6.ip.sb
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Enable ipv4 only:
|
||
|
||
|
||
|
||
version: "2.4"
|
||
services:
|
||
wgcf:
|
||
image: neilpang/wgcf-docker:alpine
|
||
volumes:
|
||
- ./wgcf:/wgcf
|
||
- /lib/modules:/lib/modules
|
||
privileged: true
|
||
sysctls:
|
||
net.ipv6.conf.all.disable_ipv6: 0
|
||
cap_add:
|
||
- NET_ADMIN
|
||
command: "-4"
|
||
|
||
|
||
test:
|
||
image: curlimages/curl
|
||
network_mode: "service:wgcf"
|
||
depends_on:
|
||
- wgcf
|
||
command: curl ipinfo.io
|
||
|
||
|
||
|
||
|
||
|
||
``` |