使用 Iptables 进行伪装进行网络地址转换(NAT)
网络地址转换 (NAT) 是一种允许多个设备共享单个公共 IP 地址的技术。 NAT 通常用于家庭和办公网络,允许专用网络上的设备通过单个公共 IP 地址访问互联网。
另一方面,顾名思义,伪装是将您的身份隐藏在面具或其他假定身份后面。就像这样,在计算机网络领域,一种类型的网络地址转换称为伪装,它通过将设备的 IP 地址替换为路由器或网关设备的 IP 地址来隐藏专用网络上设备的身份。
当专用网络上的设备想要与互联网上的设备通信时,它会向专用网络上的网关设备发送数据包,然后网关设备将数据包转发到互联网。但是,数据包的源 IP 地址是设备的私有 IP 地址,在互联网上无效。为了解决这个问题,网关设备将数据包的源IP地址替换为自己的公共IP地址,以便互联网上的设备将数据包视为来自网关设备,而不是来自私有设备。
修改内核参数,支持ipv4转发
使用 Iptables 实施伪装
此命令向 NAT 表的 POSTROUTING 链添加一条规则,该规则匹配所有通过 eth0 接口的传出数据包,并将其源 IP 地址替换为 eth0 接口的 IP 地址。
-
-t 选项用于指定我们要使用的表,在本例中为 NAT 表。
-
-A 选项用于向链添加新规则。
-
-s 后跟接口的 IP 地址来指定要伪装的特定接口。
-
-o 选项用于指定数据包所经过的出接口。
-
-j 选项用于指定规则的目标,在本例中为 MASQUERADE,这意味着数据包的源 IP 地址应该被伪装。
添加此规则后,任何通过 eth0 接口的传出数据包的源 IP 地址都会伪装成 eth0 接口的 IP 地址。
保存
利用iptables-save命令可以将iptable规则保存到一个持久化存储的目录中,不同的系统保存的目录也有所不同:
Debian/Ubuntu: iptables-save > /etc/iptables/rules.v4
RHEL/CentOS: iptables-save > /etc/sysconfig/iptables
保存之后,可以通过iptables-restore命令载入:
Debian/Ubuntu: iptables-restore < /etc/iptables/rules.v4
RHEL/CentOS: iptables-restore < /etc/sysconfig/iptables
注意: 这种方式只是保存规则和恢复的一种方式,并不是说保存规则后下次启动就会自动加载。一定要记住这点,如果要想系统启动后自动加载请看下面的方式。
iptables-persistent (Debian/Ubuntu)
从 Ubuntu 10.04 LTS (Lucid) 和 Debian 6.0 (Squeeze) 版本开始,可以通过安装一个名为 “iptables-persistent” 的包,安装后它以守护进程的方式来运行,系统重启后可以自动将保存的内容加载到iptables中。当然前提也是需要先保存规则。
RHEL 和 CentOS 保存规则
RHEL/CentOS 提供了简单的方式来持久化存储iptables规则,可以直接通过iptables服务的命令来完成。必须执行service iptables save 命令才会保存,保存后系统重启后会自动加载。