什么叫“内网穿透”?

假如我在局域网中有一台电脑,并且部署了一些web服务希望所有人都能访问它。但这台电脑只有局域网ip,并没有公网ip,那么只有同一局域网内的设备才能找到这台电脑,而其他设备最多只能找到路由器,但却进不了你的局域网。

那么就需要完成内网穿透了。

参考:

https://www.zhihu.com/question/63098230

前置的要求:

1、一台VPS服务器(Linux CentOS 7)

2、XShell(ssh工具)

VPS的配置推荐:1个CPU核心(2.3-3.6GHz v3) 1G运行内存,带宽越大越好

 

 

打开XShell,在小黑窗里输入:ssh 你的服务器ip ,ssh的端口默认22,没改过端口的不用填写

样例:

ssh 123.123.123.123
 

出现这个页面输入登录名称,默认是root :

 

 

 

出现这个页面的时候输入密码,一般在买好的服务器的管理页面里:

 

 

 

完成的效果: 

 

 

 

2、在服务器端安装Frps
1.下载frp:

wget https://github.com/fatedier/frp/releases/download/v0.37.0/frp_0.37.0_linux_amd64.tar.gz
*一般服务器默认带有wget,没有wget使用:“apt -y install wget” 安装wget

2.解压压缩包:

tar -zxvf frp_0.37.0_linux_amd64.tar.gz
3.将解压好的文件移动

mv frp_0.37.0_linux_amd64 /usr/local/frp
4.进入刚才移动的文件所在的文件夹

cd /usr/local/frp/
5.修改Frps的配置文件

vim frps.ini
打开后的界面: 

 

 

*没有上面的配置看下面

*按下i才能开启编辑,Ctrl+ins 才能粘贴(Xshell)

配置:

 

[common]
#Frp服务的端口:
bind_port = 7000
#Frp服务的验证方式(不用改,默认token就行)
authentication_method = token
#你的Token(密码)
token = abcd1234
#监听的ip(不用改)
dashboard_addr = 0.0.0.0
#管理面板端口(默认7500不用改)
dashboard_port = 7500
#管理面板用户名
dashboard_user = admin
#管理面板密码
dashboard_pwd = admin
#HTTP网页穿透的端口
vhost_http_port = 80
#HTTPS网页穿透的端口
vhost_https_port = 443

根据自己的情况改

改好了直接按下ESC,直接按下Shift+;、w、q 这三个键,退出编辑模式

6.启动Frps

nohup ./frps -c frps.ini & > /dev/null 2> /dev/null &
附:关闭Frps

ps -ef | grep frp
运行效果:

 

 

 

第二个数值就是PID:

 

 

 

关闭Frps:

kill -9 【PID】

 示例:

kill -9 6305

3、在客户端(本地)配置Frpc

1.从Github下载Frpc,下载后解压到文件夹里

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

 

 

2.配置Frpc.ini

*避免选错,建议把所有frps的文件和exe都删除

 

 

 

可以根据Frpc_full.ini查看更多的配置

案例:

[common]
#服务器的IP
server_addr = 123.123.123

#服务器配置的端口
server_port = 7000

#服务器配置的Token(密码)
token = abcd1233

#这个案例是http网页的
[web]

#映射类型,详见frpc_full.ini
type = http

#需要映射的本地服务ip
local_ip = 192.168.1.6

#需要映射的本地服务端口
local_port = 80

#映射绑定的域名,没有域名可以直接写你的服务器IP
custom_domains = 123.123.123

3.在文件夹里打开cmd窗口启动frpc.exe

 

 

 

 

 

 

 

4、完成
http(s)连接访问:

http(s)://你的服务器的IP:你设置的vhost_http_port(默认80)或者vhost_https_port(默认443)

能够访问到内网界面,就已经全部完成了,上述内容有不对的欢迎在评论区指出哦~

 

==========附加功能================

server端配置nginx

.2 nginx反向代理配置

(关于如何安装nginx就不过多赘述,详细安装教程请参考 Nginx Linux详细安装部署教程)

修改 nginx.conf 文件

    # frp的接收http请求的反向代理
    server {
        listen 80;
        server_name *.dev.msh.com  dev.msh.com;

        location / {
            # 7071端口即为frp监听的http端口
            proxy_pass http://127.0.0.1:7071; 
            proxy_set_header Host $host:80;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";

            proxy_connect_timeout 7d;
            proxy_send_timeout 7d;
            proxy_read_timeout 7d;

            }
        # 防止爬虫抓取
        if ($http_user_agent ~* "360Spider|JikeSpider|Spider|spider|bot|Bot|2345Explorer|curl|wget|webZIP|qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot|NSPlayer|bingbot")
            {
                return 403;
            }
    }

让nginx重新加载配置文件

/usr/local/nginx/sbin/nginx   -s reload

 

————————————————
版权声明:本文为CSDN博主「Pythonwill」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Pythonwill/article/details/125834832