浅谈虚拟机下部分内网穿透功能实现方法

22c8349ad527a56a813c8754a541bd92.gif

新钛云服已累计为您分享789篇技术干货

050cffb46fe5eed1e116f1287bb6d717.gif

最近个人搭建服务器的情况有所增长,简单介绍一下一些可以使得服务器能被公网ip访问的方法。内网穿透一般用于将位于内部私有网络(如家庭网络)的服务暴露到公共网络(如互联网)上,使外部用户可以访问这些服务。内网穿透通常用于以下情况:

远程访问:允许用户从外部访问内部网络中的设备或服务。

本地测试与开发:开发人员可以通过内网穿透将本地开发环境暴露到公共网络上,方便与他人共享或进行测试。

 IoT设备访问:让用户可以通过互联网访问家庭或企业中的物联网设备。

内网穿透通常涉及一个内网穿透工具或服务,它可以通过各种技术来实现内外网络之间的连接。常见的内网穿透工具包括Ngrok、FRP、花生壳等。一般而言,内网穿透目前仅适合用于家庭,私人设备的远程访问,不建议用于生产环境或其他非私人环境使用。下面稍微讲解一些内网穿透的方式。

01

FRP

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。它是一个免费且开源的项目。目前一种较为实用的方式是依靠一个带有公网ip的跳板服务器来访问内网服务器。

下载地址:

https://github.com/fatedier/frp/releases

本节列举部分frp可以进行的操作:

一、ssh 访问内网机器

1、在具有公网 IP 的机器上部署 frps部署 frps 并编辑 frps.toml 文件。以下是简化的配置,其中设置了 frp 服务器用于接收客户端连接的端口:

bindPort = 7000

2、在需要被访问的内网机器上部署 frpc

部署 frpc 并编辑 frpc.toml 文件,假设 frps 所在服务器的公网 IP 地址为 x.x.x.x。以下是示例配置:

serverAddr = "x.x.x.x"
serverPort = 7000


[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
  • localIP 和 localPort 配置为需要从公网访问的内网服务的地址和端口。

  • remotePort 表示在 frp 服务端监听的端口,访问此端口的流量将被转发到本地服务的相应端口。

3、启动 frps 和 frpc

4、通过 SSH 访问内网机器

使用以下命令通过 SSH 访问内网机器,假设用户名为 test:

ssh -o Port=6000 test@x.x.x.x

frp 会将请求发送到 x.x.x.x:6000 的流量转发到内网机器的 22 端口。

367f33fc41031dd1f2839ae82f208a83.png

95d2b7e09804def44a3d1618129ec7b5.png

二、对外提供简单的文件访问服务

通过使用 static_file 插件,您可以轻松地提供一个基于 HTTP 的文件访问服务,让其他人可以访问您指定的文件。

1、配置 frps.toml

在 frps.toml 文件中添加以下内容:

bindPort = 7000

2、配置 frpc.toml

在 frpc.toml 文件中添加以下内容,确保设置合适的文件路径、用户名和密码:

serverAddr = "x.x.x.x" #服务器公网ip
serverPort = 7000


[[proxies]]
name = "test_static_file"
type = "tcp"
remotePort = 6000
[proxies.plugin]
type = "static_file"
# 本地文件目录,对外提供访问
localPath = "/tmp/file"
# URL 中的前缀,将被去除,保留的内容即为要访问的文件路径
stripPrefix = "static"
httpUser = "abc"
httpPassword = "abc"

根据实际情况修改 localPath、stripPrefix、httpUser 和 httpPassword。

3、启动 frps 和 frpc

4、通过浏览器访问文件

使用浏览器访问http://x.x.x.x:6000/static/,

以查看位于 /tmp/file 目录下的文件。系统会要求输入设置的用户名和密码。

60fa8d2125732133a1fe069a9df59e3c.png

frp较为容易使用,但是需要有公网ip的服务器作为跳板机,毕竟它是将公网 IP 服务器的一个端口接收到的所有数据,转发到内网 IP 的主机上从而实现远程控制。目前阿里云等云服务商的服务器带宽等方面费用较高,如果仅个人需求远程操控可以使用其他方法。

02

Tailscale

Tailscale属于一种虚拟组网工具,基于WireGuard。简单来说它可以把所有安装Tailscale服务的机器,都放到同一个局域网从而实行内网穿透。

下载地址:

https://github.com/tailscale/tailscale

它的主要特点可以用下面一张图解释:

42a28b549de5e7c87c82bda5413032ce.png

相比与frp,tailscale安装方式更加方便,以centos8为例 可以使用一下命令安装

curl -fsSL https://tailscale.com/install.sh | sh

或者使用下面命令安装

sudo dnf config-manager --add-repo https://pkgs.tailscale.com/stable/centos/8/tailscale.repo
sudo dnf install tailscale
sudo systemctl enable --now tailscaled
sudo tailscale up

完成后会输出一条链接大致如下

66316faa11756de09d743570b392cf7d.png

等待第二台服务器安装完成,加入后会得到以下提示 Tailscale 网络中的每台设备都有一个私有 100.x.y.z IP 地址, 每个协议都有效 - SSH、RDP、HTTP、Minecraft - 在 Tailscale 运行时使用您想要的任何协议。

接下来使用tailscale set --ssh 使得ssh功能可以添加到tailscale服务器,从而可以在任意端上远程登陆,以手机端为例,操作效果如下

2a420e858db7de9c1f780d459bd6577c.png

同时,由其他段ssh连接会在结束后自动删除会话,保证了一定的安全性。

f52aac60cee6933a61b5fe904e958eb3.png

总体而言,Frp和Tailscale都可以用于实现内网穿透功能,他们也各有优缺点。Frp开源免费、灵活性高,但配置较复杂;Tailscale简单易用、安全性强,但是需要通过第三方验证身份,同时是商业软件,免费版本有一定限制。其他的内网穿透方式还有cloudflare tunnel ,zerotier等,但由于笔者并不熟悉,本篇暂且不写。同时,内网穿透也有相应风险,仅建议个人远程连接自用设备使用,非必要不建议在公司生产环境等情况下使用。

如有相关问题,请在文章后面给小编留言,小编安排作者第一时间和您联系,为您答疑解惑。

    推荐阅读   

a3695555d50283eb0c3d1d91eb4f7880.png

1c18f028c19140f7de75656089ce2be1.png

    推荐视频    

  • 21
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值