wireguard+VPS实现内网穿透

IT小技能 atrandys 12个月前 (10-28) 7869次浏览 18个评论

这篇教程我们会使用wireguard进行内网穿透,需要搭配一台拥有外网固定IP地址的VPS使用,因为wireguard天然支持对等方的ip变动,用来做内网穿透非常合适。另外这里也介绍wireguard很酷的操作,比如和好基友直接内网互联,查看对方电脑的共享文件。

搭建wireguard

这个就不讲了,本站有相关的centos7一键脚本,其中也介绍了windows客户端的配置方法,传送门

环境介绍

内网电脑

1、它是一台安装wireguard客户端的windows电脑,没有外网ip。

2、我们在这台电脑上配置了web服务,监听8080端口。

3、在wireguard中,配置的ip地址为10.0.0.2。

一台VPS

1、它安装wireguard服务端,拥有一个固定的外网ip地址。

2、在wireguard中,配置的ip地址为10.0.0.1

实现目标

将内网电脑中搭建的web服务转发出去,当我们访问VPS的ip:8080端口时,跳转到我们内网电脑8080端口。

实现过程

1、我已经搭建好了wireguard服务端和客户端

2、我在本机内网电脑上安装了web服务,监听8080端口。

这里我使用了phpstudy,快速搭建web环境,现在我设置web监听的端口为8080,修改nginx的监听端口,如下图

wireguard+VPS实现内网穿透

我访问localhost:8080,可以看到服务启动正常了。

wireguard+VPS实现内网穿透

3、在VPS服务端开启iptables转发

这里我把vps设置监听8080端口,转发到10.0.0.2的8080端口。

为什么转发到10.0.0.2呢,因为wireguard连接后,客户端和服务端会各自分配一个内网ip地址,前面已经介绍了,客户端(本地电脑)配置的ip为10.0.0.2,服务端(VPS)配置的ip为10.0.0.1

使用下面命令开启iptables转发8080端口

iptables -A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8080 -j DNAT --to-destination 10.0.0.2:8080

然后保存iptables,这样VPS重启后iptables的规则也生效。

service iptables save

4、测试,访问vps的ip:8080端口,可以看到已经把内网服务转发出去。

wireguard+VPS实现内网穿透

5、如需转发其他服务,可按照前面步骤,设置对应的端口转发即可。

下面介绍wireguard做点比较酷的事情,也是内网穿透的范畴,比如你和你的好基友都在各自家中的内网之中,都没有一个公网IP,我们可以借助wireguard实现好基友间的内网互联,这里无需配置iptables,只需要wireguard客户端之间的allowedips是允许你的基友的ip即可,或直接设置为全部允许(0.0.0.0/0)。

wireguard内网互联

1、你有一台VPS安装了wireguard服务端。

2、你和你的基友都安装了wireguard客户端,且分别和wireguard服务端连接成功。

3、这里我模仿一下,因为我本地有一个联通网络和一个歌华网络(垃圾网络),一台台式电脑使用联通网络(wireguard ip为10.0.0.2),一台笔记本使用歌华网络(wireguard ip为10.0.0.3)。

4、我在台式机上开启了共享文件夹,如下图,开启了共享文件夹dianying,里面有些电视剧。

wireguard+VPS实现内网穿透wireguard+VPS实现内网穿透

5、我使用笔记本电脑,访问\\10.0.0.2,可以看到台式机上共享的文件夹,如下图所示:

wireguard+VPS实现内网穿透

wireguard+VPS实现内网穿透6、注意内网互联的流量都是从VPS中转的,注意流量别超标了。

好了这篇教程就到这了,多了解wireguard开拓更多的玩法吧。

设想一下,有很多个VPS,vps之间互通互联,vps又有多个客户端互通互联,是不是可以一起组建个大内网呢,嘿嘿。


文章标题:wireguard+VPS实现内网穿透
固定链接:https://www.atrandys.com/2018/1018.html
原创文章,未经允许,禁止转载。
喜欢 (2)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(18)个小伙伴在吐槽
  1. 你好大佬,我想用wg启动的时候启动一个socks5代理,运行在局域网任意一个主机上,局域网内的设备通过这个主机的socks来连接上网。目前方案用了wg原版连接后自动创建的虚拟网卡10.0.0.2,然后将虚拟网卡用 dante-server 创建端口为1080的socks5代理给局域网中的所有设备使用,但是实际使用下来虽然可以联网了,但是这个socks代理极慢。。。打开网页只有100kb,如果是本地运行wg的主机上上网浏览,速度妥妥的跑满。wg能不能像v2ray一样,开启自动在本地创建socks,或http代理?
    划线君下2019-07-24 05:07 回复
    • wg应该没有,换ss搭socks5试试
      atrandys2019-07-24 10:49 回复
  2. iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE 我加了这一条后才成功
    bibi2019-04-18 13:43 回复
  3. 80端口貌似无法转发?转发打不开,其他端口都正常的。
    帅哥2019-02-24 11:15 回复
  4. 签到成功!签到时间:2019-01-29 03:18:44,每日打卡,生活更精彩哦~
    BrunuhVille2019-01-29 03:19 回复
  5. 评论一下又不会怀孕
    BrunuhVille2019-01-29 03:18 回复
  6. 请问有没有使得一个子网内的电脑都可以上网的简易办法?我家里的电脑通过路由器上网,我发现要是两电脑用同一个公钥连接远程VPS,其中一个会经常重试,基本不通。在服务器运行wg发现只能通过路由器IP建立一个端口号的连接。两台电脑用不同的公钥才能用两个端口号建立两个连接从而都可以上网。我用的WindowsTunSafe客户端。
    N/A2019-01-20 14:58 回复
    • wireguard同一配置文件同一时间只能连接一个客户端。没有简单方法,除非在路由器上使用wireguard。
      atrandys2019-01-20 17:50 回复
  7. wireguard现在好像GG了,请问楼主这个代理软件能否使用代理服务器进行连接呢?我想让它使用一个前置的V2代理进行连接服务器。 另外请教下楼主,用它能否给BT或者电驴这种p2p软件做内网穿透?希望楼主能出个教程。
    wutongskype2019-01-11 19:08 回复
  8. 请问能用于远程桌面3389连接不?访问内网里的远程桌面
    pie2018-11-23 00:43 回复
    • 理论上可以,可以尝试一下。
      atrandys2018-11-23 05:12 回复
  9. 今天试了还是不可以 是不是要加路由 还是怎么? 我自己电脑在公司内网,我设置了个和服务器 wg0 同网段的 10 ip ping不通, 而我把配置文件改为 192.168段的之后 又提示 [quote] [[email protected] wireguard]# wg-quick up wg0 Warning: `/etc/wireguard/wg0.conf' is world accessible [#] ip link add wg0 type wireguard [#] wg setconf wg0 /dev/fd/63 [#] ip address add 192.168.30.1/16 dev wg0 [#] ip link set mtu 1420 dev wg0 [#] ip link set wg0 up [#] mount `192.168.0.2' /etc/resolv.conf [#] ip route add 192.168.0.0/16 dev wg0 RTNETLINK answers: File exists [#] umount /etc/resolv.conf [#] ip link delete dev wg0 [/quote]
    qie2018-11-06 10:27 回复
    • wg的服务端客户端必须在一个网段,我测试的两台机器都没有防火墙限制。
      atrandys2018-11-06 11:37 回复
      • 子网掩码 /16 就等于 所有 192.168.x.x的ip都在同一个网段了啊。
        qie2018-11-06 15:21 回复
  10. 您好,我想问下,我企业里有 网络为192.168.1.x/16 我可否把 中间结点的 双网卡 *内网192.168.7.x/16“ ”外网 public ip“ 做wireguard服务器, 另外外部网络的wireguard client 访问 192.168.1.x/16 的服务呢; 我的意思是 服务器 和 客户端的 虚拟网卡地址 都设置为 192.168.x.x/16
    你好2018-11-05 20:51 回复
    • 理论上可以,我的服务器A安装wg,内网地址10.170.0.2/16,同网段有一台B,内网地址10.170.0.3/16,我的客户端(wg ip10.0.0.2)连接A(wg ip 10.0.0.1),可以ping通10.170.0.3的B。
      atrandys2018-11-06 01:20 回复
  11. 校园网可以把通过实验室能上网的电脑来实现宿舍里的电脑上网么。。
    ZCM2018-10-30 12:46 回复