用iptables实现端口映射
按照项目对云主机的规划,只有一台主机具有外网IP(下文称A主机),其他主机都只有内网IP(下文称B主机)。换句话说,只有A主机可以访问外网,B主机不行。虽然这是出于安全性和成本等方面的考虑(数据库、后端接口等不宜暴露),但是这样一来,管理B主机都很成问题了,如何解决呢?
索性所有云主机将会位于同一个机房,内网是互通的,因此可以在A主机上,用Linux系统的神器iptables配置端口转发,从而实现从外网对B主机的访问。下面的配置都在A主机上完成。
已知A机器内网IP:192.168.1.68,外网IP:10.0.0.9,B机器内网IP:192.168.1.64,要实现设置当外网访问A机器22681端口时转发至B机器22端口,也即可以使用命令直接从外网登录B主机1ssh -p 22681 username(B)@hostname(A)
首先要启用IPv4转发,打开/etc/sysctl.conf文件,将这一行前的注释符号去掉1net.ipv4.ip_forward=0
保存后不放心的话可以用这个命令检查一下(p=print)1sysctl -p
然后是配置转发,步骤如下:
|
|
最后是保存配置1iptables-save
当然,Linux系统中iptables其实是个很复杂的东西,要不然怎么可以称之为“神器”嘛,前面配置的时候一大堆PREROUTING、POSTROUTING、DNAT、SNAT的本文也没有多做解释,有想要详细了解的,我觉着这篇文章分析的还算详细。