linux实现内网穿透

linux实现内网穿透

本文参考 https://segmentfault.com/a/1190000020293986

准备两台机器
内网机: 192.168.0.154 (公司电脑)
外网机: 1.1.1.1 (阿里服务器,出于安全性考虑这里展示的是虚拟地址,换成自己的外网地址就行)

需求: 使用ssh通过公网ip直接登录内网机

这里因为外网机无法主动访问连接到内网机上,所以这里我们使用ssh让内网机能够连接上外网机

内网机上执行 ssh -o ServerAliveInterval=60 -f -N -R 9090:192.168.0.154:22 root@1.1.1.1


 - 这句代码的意思是让公网机的9090端口能够监听到内网机的22端口,这样我们就能通过访问公网机的9090端口直接登录内网机器。
   ServerAliveInterval=60  防止连接不稳定,这里设置每60秒发送一次数据包
   这样我们就能连接通过外网机登录内网机器了

公网机上输入 curl http://127.0.0.1:9090, 看到下面这串回复说明ssh已经通了

SSH-2.0-OpenSSH_7.4
Protocol mismatch.

公网机上输入: ssh root@127.0.0.1 -p9090 在键入密码就可以登录到内网机

但是这里还有个问题就是ssh只能连接到外网机的本机回路地址127.0.0.1上,我们还无法通过外网ip 1.1.1.1来连接内网机。所以这里还要做如下配置:

外网机输入iptables -t nat -A PREROUTING -p tcp --dport 9090 -j DNAT --to-destination 127.0.0.1:9090

这句代码的意思是访问9090端口的请求都转发到回路地址`127.0.0.1:9090`这个地址上。

Linux系统出于安全考虑,是不允许将请求转发至127.0.0.1这个回环地址上的,所以我们还需要修改内核参数。

sysctl -w net.ipv4.conf.eth0.route_localnet=1

到此我们所有配置完成

输入: curl http://1.1.1.1:9090

SSH-2.0-OpenSSH_7.4
Protocol mismatch.

看到以下回复说明我们外网9090端口和内网22端口已经连通,这里我们在做最终的测试

任意选择一台机器(ssh 正常使用)

命令行输入: ssh root@1.1.1.1 -p9090

root@1.1.1.1's password:

注意这里输入登录密码不是外网机登录密码,是内网机密码,不要整错了

Last login: Wed Apr  1 17:38:58 2020 from 192.168.0.154
[root@localhost ~]#

看到以下信息说明登录成功,至此我们就可以在任意网络连通的机器上访问内网机了

frp是一款开源的高性能的反向代理软件,可以实现内网穿透。下面是在Linux上使用frp实现内网穿透的步骤: 1. 下载frp 可以从frp官网下载对应的版本。比如,下载linux_amd64版本的frp: ``` wget https://github.com/fatedier/frp/releases/download/v0.37.1/frp_0.37.1_linux_amd64.tar.gz ``` 2. 解压缩frp 使用以下命令解压缩frp文件: ``` tar -zxvf frp_0.37.1_linux_amd64.tar.gz ``` 3. 配置frp 在解压后的文件夹中,可以看到frp的配置文件夹`frp_0.37.1_linux_amd64/frp_0.37.1_linux_amd64`。进入该文件夹,可以看到两个配置文件:`frpc.ini`和`frps.ini`。 - `frpc.ini`是客户端配置文件,用于将内网服务器映射到公网上。 - `frps.ini`是服务端配置文件,用于接收来自客户端的请求,并将其转发到内网服务器上。 我们需要修改`frpc.ini`配置文件,将其中的以下几个参数设置为正确的值: ``` [common] server_addr = x.x.x.x # 公网服务器IP地址 server_port = 7000 # 公网服务器端口 token = 12345678 # 用于认证的token [web] type = http local_port = 80 # 内网服务器的端口 custom_domains = example.com # 绑定的域名 ``` 其中,`x.x.x.x`是公网服务器的IP地址,`12345678`是用于认证的token,`80`是内网服务器的端口,`example.com`是绑定的域名。 4. 启动frp 在配置好`frpc.ini`文件后,使用以下命令启动frp客户端: ``` ./frpc -c ./frpc.ini ``` 如果一切正常,可以看到类似以下的输出信息: ``` 2021/05/06 15:05:40 [I] [proxy_manager.go:144] [3c4f8980] proxy added: [web] 2021/05/06 15:05:40 [I] [control.go:200] [3c4f8980] [web] login to server success, get run id [3c4f8980] 2021/05/06 15:05:40 [I] [control.go:256] [3c4f8980] [web] start proxy success ``` 5. 测试frp 在浏览器中输入绑定的域名,如果能够访问到内网服务器上的页面,说明内网穿透已经成功。 以上就是在Linux上使用frp实现内网穿透的步骤,希望对你有所帮助。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玛卡巴卡啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值