欢迎来到 星空Online - 织梦者,我的原创世界。

配置SNAT转发实现无公网IP机器上网

SNAT全称为Source Network Address Translation,其实就是源地址转换,通过iptables配置转发规则,使内网转发到网关的请求IP地址可以变更为指定的地址。大家自家家里的路由器往往就可以看做是一个NAT网关,路由器通过拨号从ISP那里获得一个外网IP地址(如 45.67.8.90),由路由器通过DHCP协议为子网内的机器分配内网地址(如 192.168.0.123 等),同时路由器也会为自己分配一个同一网段的地址(如192.168.0.1),如果子网内的机器想要访问外部网络,比如想要打开本站(www.luckystarry.com),那么在浏览器发出请求后,DNS会先将域名转化为IP地址121.196.193.53,其网络流量会先发送到网关——即路由器192.168.0.1,由路由器将请求来源地址192.168.0.123修改为45.67.8.90后,再将其转发到真实的外部地址,在服务器返回响应时,也是先返回至路由器,由路由器将数据包的目的IP修改为内网机器的IP后192.168.0.123,内网机器便可收到此次请求的响应。

通过SNAT,我们仅需有一台具备外网IP的机器,便可让同一子网的所有机器都能与外部通信,如果是建立在阿里云的VPC条件时,就意味着我们不需要为每台机器都绑定一个外网网卡,也能让所有机器对外发送请求。虽然阿里云提供了成熟的NAT网关服务,但其高昂的售价(306元一个月)对于流量较小的站长来说,既不必要也不实惠。

本文以阿里云VPC环境为例,测试需要VPC中有至少一台自带公网带宽的ECS,或绑定了EIP的ECS

阅读 评论

使用 Jenkins 借助 Docker 实现自动化部署

使用Docker部署站点已经很方便了,但是手敲命令还是会存在一定的风险——有可能因为写错命令导致生产环境挂掉、不方便多人操作等,因此我们可以选择一些常见的CI/CD工具帮我们完成这个工作。

这里向大家推荐的是Jenkins的解决方案。我们可以将Jenkins通过Docker部署,并使用Jenkins管理其他应用的编译与部署,由于Jenkins官方已经提供了Docker镜像,所以我们只需简单的命令就能让其跑起来。(命令中/var/jenkins为宿主机用于存放Jenkins运行所需的文件,请根据自身实际情况替换

Docker部署Jenkins

阅读 评论

代码为谁而写

最近工作都比较忙,回家通常较晚,而今天又是一个加班的好日子,我正百无聊赖的写着中秋值班的监控预警。忽然间收到一张截图,是远在北京的产品经理朋友在微信朋友圈发了个状态,对我一直在负责的一个系统表示了认可,令我非常感动。

一般来说,对他人工作成果表示公开的认可往往只是职场上的一种交际辞令,但这位朋友已经有很长一阵子不与我们的工作产生交集,更为特别的是,他甚至根本没有加我微信好友,所以在收到这样的一张截图时,真是让我十分感慨也十分感动。

这同时让我也在思考一个问题——作为程序员,我的代码究竟是为谁而写的?

阅读 评论