如何零成本搭建一个远程随时可用的服务器
make-your-computer-accessible-to-internet
让你的电脑能够随时通过互联网访问,包括DDNS服务,路由器设置,公网IP查询技术和IP域名动态绑定
最近组装了一台2手电脑,放在家里,有时希望能在外面通过ssh 连进家里的服务器
家庭办理的是电信宽带,100M光纤入户,打了10000号申请静态公网IP,反馈说不行,静态公网IP需要申请企业专线套餐,目前网络状态是动态公网IP(隔一段时间,IP就会进行变更)
所以思路是,在服务器上,写一段定时脚本,定时上报自己的IP地址到DNS服务商,DNS服务商更新DNS中的ip,然后通过域名进行访问。
不过首先要解决的是,如何从通过路由器定位到机器
第一步:路由器端口转发
需求只是通过ssh 访问家里的服务器。家庭网络,光纤连接到路由器,分配的动态IP是属于路由器的,所以需要将相应的请求,通过端口转发到内网的服务器上。
ssh 是通过 22端口进行,所以需要将来自22端口的请求全部转发到服务器上.
同样也可以配置其他端口,比如80(后面发现电信对80端口/8080等端口进行了屏蔽)
在服务器上执行 ip addr 或者 ifconfig 查看本机IP
以dlink 路由器为例,在高级 -> 端口转发 菜单下,添加规则,填好名称(随意)、起始端口(路由器接收端口),结束端口(转发到服务器的端口),私有IP(内网服务器IP地址),点击添加,再保存设定
原理是在路由器中添加端口转发规则,路由器将按照规则,将22端口网络请求转发到配置的服务器上
第二步:保持服务器在内网的IP地址不变更
有两种方式,一个是在服务器上设置网卡配置信息,二个是在路由器添加DHCP保留地址
当然是选择第二种更靠谱的方式:
DHCP保留设置允许路由器给特定设备分配指定的IP。每当特定设备开机时,将自动获得指定的IP地址,并且其他设备不能获取该IP地址。如果需要设备总是获取相同的IP地址,请为每个设备添加DHCP保留地址。
通过在路由器添加DHCP保留地址,将主机的MAC地址和IP进行绑定,避免IP地址被家里其他设备占用
在服务器上执行 ip addr 或者 ifconfig 查看本机IP
以Dlink为例,在设置 -> 网络设置 中,找到 添加DHCP保留地址 :
设置好后,点击保存设置,即可生效,这样服务器重启后,还是能拿到设置好的内网IP,避免端口转发配置失效
第三步:解决 动态公网IP 过一段时间就发生变化的问题:
上网的IP分公网IP和内网IP,如何区分自己网络是不是公网IP,可以google 搜索下方法。如果是内网IP 下面就不用看了
公网IP分静态公网IP,一般是专线,给企业商用,还有一种是动态公网IP,大部分家庭就是这种,通过PPPOE上网,每次联上互联网都会被分配1个公网IP,每次不一样,所以没办法商用。为了避免用户把动态IP静态化,ISP接入商一般会采取单位时间强制掉线并引导路由器再拨号的方式,使用户的公网IP不断动态变化(这个过程很短,用户不易发现)
其他描述见:
http://bbs.tianya.cn/post-45-1759962-2.shtml
解决方案:
原理: 注册一个DDNS 域名服务,将IP 和 域名进行绑定,我们使用时通过域名使用,而不去管域名解析后的IP。但是IP 是隔一段时间就会发生变化,那么我们也通过一个定时服务到域名服务商处更新这个IP。具体搜索【DDNS 域名】
- 通过注册花生壳 的DDNS 域名服务,通过花生壳,进行域名解析,将域名映射到 公网IP
- 通过服务器启动 定时上报服务,定时更新花生壳域名IP(这个路由器也有这个功能,不过我的路由器有年头了,提供的DDNS服务居然已经用不了了,只好通过配置文件方式了)
步骤一,在oray.com 注册花生壳账号,注册成功后,会分配一个免费的域名
步骤二,在服务器下新建 /data/ddns/oray_ddns.sh 文件
1 | vim /data/ddns/oray_ddns.sh |
然后给该文件添加可执行权限
1 | chmod +x /data/ddns/oray_ddns.sh |
然后将其添加到定时任务crontab中
1 | crontab -e |
开机执行:
vim /etc/rc.d/rc.local
添加
1 | + sh /data/ddns/oray_ddns.sh |
centos7 默认是不会生效的,要对 /etc/rc.d/rc.local
执行
1 | chmod +x /etc/rc.d/rc.local |
这样就可以随时通过 免费赠送的域名访问服务器了