iptables nat 表应用

1、iptables nat 表应用

iptables nat 表应用

上图的操作,说白了就是要做一个路由器,路由器可以上网,电脑就可以上网。
先操作一下前期准备,打开虚拟机,将两个Linux窗口打开,然后分别拍一张快照,命名为“iptables 小实验前”。此举是方便实验过程出现不可挽回的错误,可以通过快照恢复,然后重新做实验。lyslinux-02 是之前克隆的虚拟机。
iptables nat 表应用
右击上图红色框框 “编辑虚拟机设置” 的位置 ,跳出弹框,选择“添加”,网络适配器,下一步,见下图,
iptables nat 表应用
保持默认,点击“完成”,见下图,
iptables nat 表应用
接着按下图箭头指示操作,见下图,
iptables nat 表应用
这边选择“LAN 区段”,相当于给这个网卡连到了一个内网的交换机上,Windows机器和这个交换机是连不上的。这样的话,这台机器和另一台的机器连上同一个内网的交换机,它们两者之间就可以通信了。
接着在“LAN 区段”上选择刚刚设置的区段,见下图,
iptables nat 表应用
这个机器的网卡就添加好了。
接着操作另一台机器的网卡,右击上图红色框框 lyslinux-02 的位置 ,选择“设置”,跳出弹框,选择“添加”,网络适配器,下一步,见下图,
iptables nat 表应用
操作完毕,点击“完成”,见下图,
iptables nat 表应用
然后往下操作,选择“网络适配器2”,在“LAN 区段”这边选择刚刚设置的 LYS ,再点击“确定”,见下图,
iptables nat 表应用
以上操作就是为了让这两台机器,选择同一个交换机。
准备工作做好了,下面就是启动这两台机器。启动完成之后,使用 PuTTY 远程登录lyslinux-01,输入命令 ifconfig ,回车,见下图,
iptables nat 表应用
上图红色框框的内容,就是刚刚增加的网卡,现在要给 ens37 这个网卡配置一个 IP。我们可以通过命令行给 ens37 添加 IP ,也可以设置配置文件,设置配置文件和设置虚拟网卡的步骤是一样的。将 ens33 的网卡配置文件复制一份到 ens37 里面,然后进入配置文件修改 IP、NETMASK 就可以,不用设置 DNS 和网关这些。更改配置文件的方式比较复杂,这边演示比较简单的方法,输入命令 ifconfig ens37 192.168.100.1/24 ,回车,见下图,
iptables nat 表应用
可以看到,成功的给网卡 ens37 配置了 IP 。当然这个 IP 一重启就会失效,要想 IP 永久生效,就需要编辑配置文件。
对于另一台机器,因为刚刚把网络连接关闭了,无法远程登录,所以要回到虚拟机上操作,见下图,
iptables nat 表应用
使用 ifconfig 命令还可以看到 ens33 这个网卡的 IP,它虽然在,但还是不能连接网络的,为了保险起见,使用命令 ifdown ens33 来关闭掉,见下图,
iptables nat 表应用
这样就看不到 ens33 的 IP 了。同样的方法,现在给这台机器的 ens37 网卡设置 IP,见下图,
iptables nat 表应用
IP 设置成功。现在来测试一下,连接一下lyslinux-01 这台机器的网络,输入命令 ping 192.168.100.1 ,回车,见下图,
iptables nat 表应用
上图显示网络没有连接成功,应该是 lyslinux-01 这台机器的网络有点问题,回到 PuTTY 上查看一下,见下图,
iptables nat 表应用
发现 ens37 的IP地址又不见了,这时候要重新给它配置 IP ,见下图,
iptables nat 表应用
然后再回到虚拟机上去连接网络,见下图,
iptables nat 表应用
可以看到网络连接成功了。
接着去 lyslinux-01 这台机器上连接 lyslinux-02的网络,输入命令 ping 192.168.100.100 ,回车,见下图,
iptables nat 表应用
也可以连接网络了。
现在总结一下,这个nat表应用的准备工作:
01机器两块网卡 ens33(192.168.218.128)、ens37(192.168.100.1),ens33 可以上外网,ens37仅仅是内部网络,02机器只有ens37(192.168.100.100),和01机器ens37可以通信互联。
现在来检查一下,Windows 的 cmd 能不能连接这两个 IP,见下图,
iptables nat 表应用
可以看到,都是不能连接的。现在来看一下 lyslinux-02 机器不能连接 192.168.218.128,也不能连接 192.168.218.1 ,也不能上外网,见下图,
iptables nat 表应用
可以看到也都是不行的。
为了实现需求1:可以让02机器连接外网。
在01机器上操作,这个文件 /proc/sys/net/ipv4/ip_forward 里面的内容,默认是 0,表示它没有开启内核转发,需要改成 1 。打开路由转发,输入命令 echo "1">/proc/sys/net/ipv4/ip_forward ,回车,即可将文件更改为 1 。见下图,
iptables nat 表应用
以上操作叫做打开端口转发。
接着在01机器上增加一条规则,执行命令 iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE ,回车,见下图,
iptables nat 表应用
有了这条规则,才可以实现 192.168.100.0 这个网段上网。
接下来在02机器上设置网关为 192.168.100.1 ,输入命令 route add default gw 192.168.100.1,回车,见下图,
iptables nat 表应用
设置完成后,也可以实现连接 192.168.218.1 这个网卡。这意味02机器可以跟外网相通了。

接着设置一下 DNS,看看能不能联网,输入命令 vi /etc/resolv.conf ,回车,见下图,
iptables nat 表应用
输入上图红色框框的内容,保存后退出。119.29.29.29 是公共的 DNS,然后来看一下能不能连接,见下图,
iptables nat 表应用
发现是可以连接的,也可以连接外网。
到这边,我们的目的就达到了,让02机器也可以连接外网。现在在Windows上面使用cmd来查看一下,见下图,
iptables nat 表应用
发现Windows还是不能连接 192.168.100.100 。这边可以将01机器理解为路由器,02机器是手机、电脑等可以联网的机器。

需求2:03机器只能和01机器通信,让03机器可以直接连通02机器的22端口。这步操作叫 端口映射。
目前为止,02机器还只能在虚拟机上操作,不能远程登录。现在来实现02机器的远程登录,01机器上打开路由转发,同样的, echo "1">/proc/sys/net/ipv4/ip_forward 这个命令上面已经操纵过,所以这一步省略。接着往下操作,我们需要把之前的规则删除掉,以免影响到后面的操作,输入命令 iptables -t nat -D POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE ,回车,见下图,
iptables nat 表应用
接着在01机器上增加两条规则,执行命令 iptables -t nat -A PREROUTING -d 192.168.218.128 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22,回车。这个命令做一个端口转发,将目标IP 192.168.218.128 和端口 1122,转到IP 192.168.100.100 和端口 22,这边操作的是进去的包。还有一个回来的包,执行命令 iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.218.128 ,回车。这个命令将原IP 192.168.100.100 改成目标IP 192.168.218.128 。见下图,
iptables nat 表应用
以上操作完成之后,还需要在02机器上设置网关为 192.168.100.1,这一步前面也操作过了,这边也可以省略。
以上操作完成之后,就可以通信了。现在来验证一下,新建一个PuTTY回话窗口,具体操作见下图,
iptables nat 表应用
作为测试的窗口,其他地方就不做设置了。接着打开新的PuTTY窗口 test100,见下图,
iptables nat 表应用
这边选择“是(Y)”,接着登录上去,查看IP,见下图,
iptables nat 表应用
可以看到ens37的IP是 192.168.100.100 ,接着看看能不能连接外网,见下图,
iptables nat 表应用
此时的Windows还是不能连接 192.168.100.100 ,见下图,
iptables nat 表应用

2、iptables 规则备份和恢复

iptables nat 表应用

正常情况下,使用命令 service iptables save ,会把规则保存到 iptables 的配置文件中 /etc/sysconfig/iptables 。如果不想保存在配置文件中,可以使用重定向命令,将规则重定向到一个文件中,文件名可以随意命名。见下图,输入命令 iptables-save > /tmp/ipt.txt ,回车,
iptables nat 表应用
上面保存成功之后,可以看到nat表里面才有规则,filter表里面是空的。
先将规则清除掉,输入命令 iptables -t nat -F,回车,见下图,
iptables nat 表应用
恢复刚才的备份,使用命令 iptables-restore < /tmp/ipt.txt ,restore 和 save 正好是相反的。
要想重启系统之后,就能马上加载规则,最好还是把规则保存在配置文件 /etc/sysconfig/iptables 中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章