如何零成本搭建一个远程随时可用的服务器

如何零成本搭建一个远程随时可用的服务器

最近组装了一台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 域名】

  1. 通过注册花生壳 的DDNS 域名服务,通过花生壳,进行域名解析,将域名映射到 公网IP
  2. 通过服务器启动 定时上报服务,定时更新花生壳域名IP(这个路由器也有这个功能,不过我的路由器有年头了,提供的DDNS服务居然已经用不了了,只好通过配置文件方式了)

步骤一,在oray.com 注册花生壳账号,注册成功后,会分配一个免费的域名

步骤二,在服务器下新建 /data/ddns/oray_ddns.sh 文件

1
2
3
4
5
vim /data/ddns/oray_ddns.sh
添加以下内容
#! /bin/bash
# 更新花生壳的DDNS的IP地址
wget -q -O - "http://{换成你注册的用户名}:{换成你的密码}@ddns.oray.com/ph/update?hostname={换成分配的免费域名}" >> /var/log/oray_ddns.log

然后给该文件添加可执行权限

1
chmod +x /data/ddns/oray_ddns.sh

然后将其添加到定时任务crontab中

1
2
3
crontab -e
添加一行,表示每30分钟,定时向ddns.oray.com 播报你的IP地址
*/30 * * * * /data/ddns/oray_ddns.sh

开机执行:

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

这样就可以随时通过 免费赠送的域名访问服务器了

坚持原创技术分享,您的支持将鼓励我继续创作!
分享