Nat表应用

A机器两块网卡ens33(192.168.111.136),ens37(192.168.1.1),ens33可以上外网,ens37仅仅是内部网络,B机器只有ens37(192.168.1.100),和A机器的ens37可以通信互联。 需求一:可以让B机器连接外网 A机器上添加一块新网卡,并加入LAN区段1 B机器上也添加一块新网卡,也加入LAN1区段,并且把原先的网卡设置为 启动时不连接 A机器上ifconfig 命令查看多出了一个新的网卡ens37 A机器上 ifconfig ens37 192.168.1.1/24 给新网卡设置IP B机器上用ifconfig 命令查看也多了一块网卡ens37 B机器上给新网卡设置IP 并且和A机器的新网卡同一个网段 Ifconfig ens37 192.168.1.100/24 注意用命令ifdown ens33 关闭原先网卡ens33,不然可能会导致后面实验ping不同A机器的ens33 A机器上打开路由转发功能 echo 1 > /proc/sys/net/ipv4/ip_forward

[root@jinkai ~]# echo 1 > /proc/sys/net/ipv4/ip_forward [root@jinkai ~]# cat !$ cat /proc/sys/net/ipv4/ip_forward 1 [root@jinkai ~]#

A机器上添加一条路由规则 MASQUERADE :地址伪装

[root@jinkai ~]# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ens33 -j MASQUERADE

B机器:把A机器的ens37:192.168.1.1 设置为B机器的网关 route add default gw 192.168.1.1

需求二:C机器只能和A机器通信,让C机器可以直接连通B机器的22端口 这里C机器实验用xshell 替代连接B机器 这里先清除上一个实验的添加的防火墙规则,iptables -t nat -F,如果用iptables -F 是无法清空nat表的规则 A机器打开路由转发(上一个实验已经打开,这一步可以省略) cat /proc/sys/net/ipv4/ip_forward A机器重新添加两条规则 NAT:网络地址转换 DNAT:目标网络地址转换(公网访问私网,路由把数据包中目标地址192.168.1.100转换成公网可以识别到的地址192.168.111.136,进入内网经过PREROUTING链) SNAT:源网络地址转换(私网访问公网,路由把数据包中源私网地址192.168.1.100转换成路由端口的可以访问公网的地址192.168.111.136,出去经过POSTROUTING链)

[root@jinkai ~]# iptables -t nat -A PREROUTING -d 192.168.111.136 -p tcp --dport 1122 -j DNAT --to 192.168.1.100:22 [root@jinkai ~]# iptables -t nat -A POSTROUTING -s 192.168.1.100 -j SNAT --to 192.168.111.136

B机器上设置A机器ens37:192.168.1.1 为B机器的网关(这一步上一个实验也已经设置可以省略) C机器:Xshell上添加一个新的会话,主机名写A机器的ens33:192.168.111.136,端口号:1122(规则上映射到B机器22号端口) 连接成功,主机名为jinkai02 ,ens37地址为192.168.1.100,

保存与备份规则

保存:

service iptables save 将规则保存到/etc/sysconfig/iptables

备份:

iptables-save > my.ipt 将iptables的规则备份到my.ipt文件中

恢复备份规则

iptables-restore < my.ipt 将文件中的规则恢复到iptables中