须要在外网访问内网的机器及服务.html
做为大天朝的互联网用户, 向运营商申请公网的ip地址是不容易的,由于资源有限啊.并且就算是拿到公网ip,也是只有一个ip, 不能知足内网中多个设备同时暴露. 因此这就须要端口映射来暴露端口,达到访问内网服务的目的.linux
端口转发是基于公网IP实现的, 端口转发功能是在路由器级实现的, 如今通常的家用路由器都会自带端口映射功能, 当用户访问外网IP的这个端口时,服务器自动将请求映射到对应局域网内部的机器上.
反正我没有能从运营商的客服口中要到公网ip, 要是哪位大佬看到这篇博客,正好有要到公网ip的门路,能够留言沟通一下.git
frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。须要一个具备公网ip的跳板机, 访问跳板机的端口, 对应就是访问反向代理主机上的服务了,可是有一点就是受限于跳板机的带宽.github
ipv6的可用资源就要比ipv4多得多,更是万物互联的有力支撑. 经过少许调研了解到, 三大运营商对大部分地区都会分配的ipv6地址,可是,坑爹的北京电信在咱们小区并无分配ipv6,不然,这一篇将会变成"如何使用阿里云的DNS服务实现ipv6的DDNS".
首先ipv6的长度为128位,正常运营商会给分配64为的前缀,这就意味着家里只要有支持ipv6的路由器,就能够分配与路由器前缀相同的ipv6地址,而且这个ipv6就能够直接当作公网的可变ip使用, 既然可变ip,就可使用ddns的方式. 每台终端机器上运行本身的ddns服务用来监控ipv6地址的变化,.而在公网中的用户就可使用域名:端口的方式直接访问了.
这里ipv6的ddns本人作过尝试,阿里云对本身的域名解析提供了完整API,稍有开发能力的同窗均可一经过阅读文档,开发出本身的小的ddns服务.web
阿里云域名解析API:https://help.aliyun.com/document_detail/29776.htmlshell
FRP 全名:Fast Reverse Proxy。FRP 是一个使用 Go 语言开发的高性能的反向代理应用,能够帮助您轻松地进行内网穿透,对外网提供服务。FRP 支持 TCP、UDP、HTTP、HTTPS等协议类型,而且支持 Web 服务根据域名进行路由转发。服务器
FRP 采用 Go 语言开发, 支持 Windows、Linux、MacOS、ARM等多平台部署. FRP 安装很是容易, 只需下载对应系统平台的软件包, 并解压就可用.为了方便管理, 解压后重命名为frp.ssh
以Debian为例:tcp
wget https://github.com/fatedier/frp/releases/download/v0.30.0/frp_0.30.0_linux_amd64.tar.gz tar -xzvf frp_0.30.0_linux_amd64.tar.gz mv frp_0.30.0_linux_amd64 frp
将 frps 及 frps.ini 放到具备公网 IP 的机器上。svg
将 frpc 及 frpc.ini 放处处于内网环境的机器上。
经过 ssh 访问公司内网机器
修改 frps.ini 文件,这里使用了最简化的配置:
frps.ini
[common] bind_port = 7000 启动 frps: ./frps -c ./frps.ini
修改 frpc.ini 文件,假设 frps 所在服务器的公网 IP 为 x.x.x.x;
frpc.ini
[common] server_addr = x.x.x.x server_port = 7000 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6000
启动 frpc:
./frpc -c ./frpc.ini
经过 ssh 访问内网机器,假设用户名为 test:
ssh -oPort=6000 test@x.x.x.x
详细请见大佬文章: https://www.jianshu.com/p/00c79df1aaf0
以及查看官方文档:https://github.com/fatedier/frp/blob/master/README_zh.md
Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是经过fork/exec的方式把这些被管理的进程看成supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去便可。也实现当子进程挂掉的时候,父进程能够准确获取子进程挂掉的信息的,能够选择是否本身启动和报警。supervisor还提供了一个功能,能够为supervisord或者每一个子进程,设置一个非root的user,这个user就能够管理它对应的进程
Supervisor官方文档: http://supervisord.org/
sudo apt-get install supervisor
root@iZuf: cat /etc/supervisor/supervisord.conf
经过conf文件而已看出, supervisor的监控的任务是依据是**/etc/supervisor/conf.d/*下的.conf文件, 这就简单了, 来了建立一个 setfrps.conf文件,做为frp服务的启动脚本.
/etc/supervisor/conf.d/setfrps.conf
[program:frps] user=root command=/root/Document/frp/frps -c /root/Document/frp/frps.ini # 要确认该目录已经存在 directory=/etc/supervisor # 程序中止以后是否须要从新将其启动 autorestart=true # 从新启动时等待的时间 startsecs=10 # 重启程序的次数 startretries=100
具体的其余没有没有涉及,只作初级配置
> supervisorctl #读取配置文件 reread #启动程序 start frps 命令说明 > status # 查看程序状态 > stop usercenter # 关闭 usercenter 程序 > start usercenter # 启动 usercenter 程序 > restart usercenter # 重启 usercenter 程序 > reread # 读取有更新(增长)的配置文件,不会启动新添加的程序 > update # 重启配置文件修改过的程序
也能够不进入交互环境:
$ supervisorctl status $ supervisorctl stop usercenter $ supervisorctl start usercenter $ supervisorctl restart usercenter $ supervisorctl reread $ supervisorctl update
因为某些软件并无增长开启启动的服务,不少时候须要手工添加,通常咱们都是推荐添加命令到 /etc/rc.local 文件,可是 Debian 9 默认不带 /etc/rc.local 文件,而 rc.local 服务却仍是自带的.
root@iZuf6:/etc/supervisor: cat /lib/systemd/system/rc.local.service
而且默认状况下这个服务仍是关闭的状态:
root@iZuf6:# systemctl status rc-local ● rc-local.service - /etc/rc.local Compatibility Loaded: loaded (/lib/systemd/system/rc-local.service; static; vendor preset: enabled) Drop-In: /lib/systemd/system/rc-local.service.d └─debian.conf Active: inactive (dead)
为了解决这个问题,须要手工添加一个 /etc/rc.local 文件:
/etc/rc.local
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. # 如下为须要开机运行的脚本命令 /usr/bin/supervisord exit 0 EOF
须要开机启动的命令添加到 /etc/rc.local 文件,丢在 exit 0 前面便可.
chmod +x /etc/rc.local
接着启动 rc-local 服务
systemctl start rc-local
再次查看状态:
尝试重启之后试试是否生效.
https://www.jianshu.com/p/00c79df1aaf0
https://www.cnblogs.com/sundahua/p/9149692.html
https://www.cnblogs.com/flymeng/p/7901062.html