VPS/云主机等
优惠信息分享

云服务器+wireguard,为家宽附加固定公网ip

云服务器+wireguard,为家宽附加固定公网ip插图

之前逛小黄鱼的时候,系统自动推荐了个“给家庭宽带附加固定公网ip”,一个月还要大几百,后面看了下描述,多半是利用各类隧道服务,把公网服务器和内网设备连接到一起,这个类似于内网穿透,但是比内网穿透更加底层。

云服务器+wireguard,为家宽附加固定公网ip插图1

常规的内网穿透是需要配置端口信息,例如frp这种,没有原生管理界面,每次改端口都需要手搓配置文件,而且无法穿透icmp(ping)这种协议,而通过隧道的形式就可以避免以上问题(至于什么是隧道,各位自行了解),配置好隧道后直接在路由器端口映射需要的端口就可以了。这里我就用云服务器+wierguard,把云服务器上的ip附加到内网设备上,实现访问云服务器就可以打开内网服务,用起来就和本地宽带有个公网ip没区别,还能把云服务器作为流量出口。

一、特别说明

云服务器+wireguard,为家宽附加固定公网ip插图2

二、所需设备

1.一个带有公网ip的云服务器作为服务端,一般云服务器都是固定公网ip,当然,如果是非固定公网的服务器也可以,只要是带公网能被访问到就行。这里我就以华为云的云服务器作为例子(为什么是它,因为是我白嫖的,拿来做教程刚刚好),云服务器系统是Debian11,不用12是因为这个服务器它不支持.......

2.一个内网设备作为客户端,支持linux系统就行,这里我用的是openwrt,因为有个图形化的界面,不用手搓客户端配置信息,配置端口映射也方便,如果使用爱快等系统都一样,反正能用wierguard就行,或者就干脆发行版的linux系统。

三、服务端&客户端安装

先放行云服务器的安全组,一般云服务器厂商都是带有防火墙,即系统内部防火墙和控制台防火墙,需要先把控制台防火墙放行。先到云服务器控制台,把全部端口都放行,这里放行入站流量,出站流量默认都是放行的不用管。

云服务器+wireguard,为家宽附加固定公网ip插图3

然后登录服务器的ssh,依次输入以下命令:

sudo apt update
#更新软件源

sudo apt install wireguard
#安装wireguard

umask 0777 && wg genkey | tee server_private_key | wg pubkey > server_public_key && wg genpsk > server_preshared_key
#生成服务端公钥、私钥以及共享密钥文件,我在根目录下执行的就会保存在root目录里云服务器+wireguard,为家宽附加固定公网ip插图4

这时候就已经安装好wireguard(以下简称wg,不想打那么多字)服务端。

然后登录内网设备,这里我用openwrt(immortalwrt)就可以一键安装wg,在软件里面搜索wireguard,把框里面的三个安装上都安装上。

云服务器+wireguard,为家宽附加固定公网ip插图5

安装完成后一定要重启,一定要重启,不然新建不了接口。重启openwrt后客户端也安装完成。

四、配置服务端&客户端

先进入内网openwrt,新建一个接口,协议选wg。

云服务器+wireguard,为家宽附加固定公网ip插图6

然后在详细设置哪里,点击生成新的密钥对miyaodui,就会生成客户端的私钥和公钥,监听端口就填写想要的wg端口,ip地址可以填写任意内网地址,注意要和等下服务端的地址地址对应上。注意这里ip地址是指wg内部的ip地址,子网掩码是/24。

云服务器+wireguard,为家宽附加固定公网ip插图7

然后先不保存,回到云服务器上,输入以下命令新建wg配置文件:

sudo touch /etc/wireguard/wg0.conf

然后通过winscp等等软件打开这个wg0.conf配置文件,做修改,(为什么不在终端里面直接编写,因为不方便)。参照以下配置文件自行修改:

[Interface]
PrivateKey = <服务端私钥>
#最初生成的server_private_key这个文件里面就是私钥
Address = 10.0.0.1/24
#服务端wg ip,需要和客户端在同一ip段
ListenPort = 6666
#wg端口,需要和客户端的一致

[Peer]
PublicKey = <客户端公钥>
#刚刚在客户端生成的公钥,复制到这
AllowedIPs = 10.0.0.2/32
#客户端wg ip,需要与客户端一致,这里子网掩码需要是/32而非/24
PresharedKey = <共享密钥>
#最初生成的server_preshared_key这个文件里面就是

保存上面的配置文件,然后运行以下命令启动wg,并让其开机自动启动:

sudo wg-quick up wg0
#启动wg

sudo systemctl enable wg-quick@wg0
#添加到开机自启云服务器+wireguard,为家宽附加固定公网ip插图8

之后再回到客户端,继续配置客户端。先分配防火墙,这里我图省事,直接用了wan口的防火墙,也可以自己新建一个防火墙。

云服务器+wireguard,为家宽附加固定公网ip插图9

然后添加一个对端,这里公钥就填最初生成的公钥,就是生成的<server_public_key>文件;共享密钥就是和服务端那个共享密钥一样;允许的ip我这里也偷懒了,直接0.0.0.0/0,意思是全部ip,建议只允许内网ip以及wg的ip;端点主机就是云服务器的ip,端点端口就是wg的端口,其他的默认就行,然后保存。

云服务器+wireguard,为家宽附加固定公网ip插图10

此时就完成了服务端和客户端的配置。

五、配置服务端转发&防火墙

配置完wg后还不能直接使用,还需要配置服务端的系统。回到服务端ssh,输入以下命令并编辑文本开启ip转发:

sudo nano /etc/sysctl.conf
#编辑内核配置,如果不熟悉nano语法,自行百度

net.ipv4.ip_forward = 1
#把这个加到/etc/sysctl.conf文本最后一行

sudo sysctl -p
#重启内核云服务器+wireguard,为家宽附加固定公网ip插图11

之后查询网卡名称:

ip a

例如我这里网卡名称是eth0,这里ip是内网ip很正常,国内云服务器厂商都是这样,网卡绑定的不是公网ip而是内网ip。

云服务器+wireguard,为家宽附加固定公网ip插图12

然后输入以下命令配置防火墙:

sudo iptables -A FORWARD -i wg0 -j ACCEPT
#允许wg0网卡流量通过,这里wg0不用修改,启用wg后就是这个网卡

sudo iptables -A INPUT -j ACCEPT
#允许所有的入站流量

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#经过eth0网卡的流量进行nat,注意把eth0替换成实际网卡型号

sudo iptables -t nat -A PREROUTING -i eth0 -p udp --dport 6666 -j RETURN
#不转发udp 6666端口,这里6666端口是即将配置的wg端口,自行修改

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j RETURN
#不转发tcp 22端口,22端口用作ssh,转发了就连不上ssh

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp -j DNAT --to-destination 10.0.0.2
#转发全部tcp端口到10.0.0.2,这个ip就是wg客户端的ip,自行修改

sudo iptables -t nat -A PREROUTING -i eth0 -p udp -j DNAT --to-destination 10.0.0.2
#和上一条一样,只是这个是转发udp

注意系统需要启用iptables,一般系统都是带有此防火墙,如果不知道是否启用,自行百度系统名称+iptables搜索相关文章,需要注意的是,有些系统已经不使用iptables,这个建议换回iptables,无他,其他防火墙我没用过,不知道会发生啥。

iptables重启后规则会自动清除,还需要固定规则,输入以下命令安装iptables-persistent,在弹出的界面会提示是否保存现有规则,选择确定即可:

sudo apt install iptables-persistent云服务器+wireguard,为家宽附加固定公网ip插图13

之后重启云服务器系统,等待客户端重连,或者手动重连下就可以。然后在客户端尝试ping下wg服务端的ip(10.0.0.1),如果可以ping通,说明wg链接现在是正常的。

云服务器+wireguard,为家宽附加固定公网ip插图14

六、配置端口映射

这个没啥好说的,和常规端口映射一样,就在openwrt-防火墙-端口转发里面添加配置就行,不懂的就看图。

云服务器+wireguard,为家宽附加固定公网ip插图15

然后访问云服务器公网ip+端口,例如我图上设置了映射884端口,直接访问云服务器公网ip:8848,就可以打开内网服务,就和平常家宽做端口映射一致。如果想要80/443端口也可以自行设置,如果打不开可能是openwrt防火墙配置问题,参考我的配置。

云服务器+wireguard,为家宽附加固定公网ip插图16

七、其他问题

1.这种隧道受限于云服务器带宽,不过常规内网穿透也一样会,只是这个用起来更简单点,只需要在对应系统/路由上配置端口映射就行。国内云服务器带宽小,用海外的也可以。

2.把域名解析到云服务器公网ip上就可以实现用域名访问,但是注意国内用域名访问80/443端口需要备案。

3.还可以把云服务器作为流量出口,大家都知道这是干啥的不?反正我不知道,啥都不知道。

4.需要注意,这里22和<6666>端口不能做端口映射,因为这两个端口一个是云服务器ssh,一个是wg端口,不会做转发,剩下的端口只要云服务器厂商不限制都可以用。

赞(0)
未经允许不得转载:遗弃你|YIQINI.COM » 云服务器+wireguard,为家宽附加固定公网ip

评论 抢沙发

评论前必须登录!

 

登录

找回密码

注册