服务器主机挑选
联想workstation P500
支持志强 e5 v3 CPU。
虚拟化方案使用 esxi 来进行。
如果esxi 盘还在,但是换机器了,如何再次挂载上去:
https://blog.sailark.com/index.php/archives/72/
内网穿透方案
传统来说就直接FRP 可以搞定了,但是觉得这个方案配置的时候还是比较繁琐。
端到端的转发。
所以干脆我们就直接把内网给接到服务器上来。再加上几条路由,来构建自己的混合云
Server 端来进行 Wireguard 的安装。
sudo yum install elrepo-release epel-release
sudo yum install kmod-wireguard wireguard-tools
wireguard 控制面板,直接docker-compose 跑起来没什么问题
附上配置
version: '3.6'
services:
wg-gen-web-demo:
image: vx3r/wg-gen-web:latest
container_name: wg-gen-web-demo
restart: unless-stopped
ports:
- "8080:8080"
environment:
- WG_CONF_DIR=/data
- WG_INTERFACE_NAME=wg0.conf
- SMTP_HOST=smtp.gmail.com
- SMTP_PORT=587
- [email protected]
- SMTP_PASSWORD=******************
- SMTP_FROM=Wg Gen Web <[email protected]>
#- OAUTH2_PROVIDER_NAME=fake
- OAUTH2_PROVIDER_NAME=github
- OAUTH2_PROVIDER=https://github.com
- OAUTH2_CLIENT_ID=xxx
- OAUTH2_CLIENT_SECRET=xxx
- OAUTH2_REDIRECT_URL=xxx
- WG_STATS_API=http://172.17.0.1:8182
volumes:
- /etc/wireguard:/data
wg-json-api:
image: james/wg-api:latest
container_name: wg-json-api
restart: unless-stopped
cap_add:
- NET_ADMIN
network_mode: "host"
command: wg-api --device wg0 --listen 172.17.0.1:8182
depends_on:
- wg-gen-web-demo
https://github.com/vx3r/wg-gen-web
重要 主机到内网的LAN to LAN
前面的思想是 使用 wg 把 云主机 和 本地的路由来放在同一个子网下。
在云服务器上可以访问任何的的内网IP,这样的话在大局域网下的服务暴露和转发就会非常的方便了。
在实践的过程中还是遇到不少麻烦的 ,在这里记录一下
wg 到子网的路由问题。
在服务端的wg0中需要配置 allip 为 你需要访问的子网段。这样他会自动的加上路由
但是注意,在配置客户端的时候,不能加上内网重叠部分,否则会导致内网被路由到了云主机,导致无法访问
AllowedIPs = 10.77.0.2/32, 192.168.3.0/24, 192.168.0.0/24
内网转发1
这样流量就通过了内网的路由上,在路由器上,需要进行IP规则的转发,这里使用的是openwrt,在防火墙中配置。
这样流量就到了我们的路由器的子网。
内网转发2
因为源IP 是wg 的,所以在内网会遇到一些IP限制,所以这里用上 SNAT,把wg 的远程IP 重写为路由器的IP这样就可以在内网畅通无阻了
问题
这里记录一个很奇怪的问题
在wg建连之后,会自动的加上 远端服务器公网IP到路由内网LAN ip 的一个路由,导致直接无法访问,从而导致wg 建连失败。
所以这里手动的加上了云服务器的公网IP到公网网关的 一个路由,这样的话了顶掉他的规则。