iptables nat 表应用,iptables规则备份和恢复

iptables nat 表应用

  • 作一个试验,准备两台虚拟机 A,B
  • A 有准备两块网卡,一块链接外网,一块链接内网
  • B 只准备一块网卡链接内网
  • 目标是让 B 链接外网
  • 要达到这个目标,首先须要让 A, B两台机器能够通讯
  • 而后让 A 做为路由器,这样 B 就能够经过A 链接外网
  • 如图,这是两台虚拟机
  • 如图,首先在虚拟机01 这里点击 编辑虚拟机设置
  • 如图,点击添加
  • 点击 网络适配器,而后点 完成
  • 如图,选择 网络适配器 2 ,右边选项里面,选择 LAN 区域
  • 选择了 LAN 区域后,须要设置一个内网交换机才行
  • 如图,点击 LAN区段(S)... 按键,出现左边方框
  • 点击添加,而后就出现一个自定义名称的交换机,咱们命名为 交换机,而后点击肯定
  • 配置好第二块网卡,就点击 肯定
  • 如图,选择第二个虚拟机
  • 点击 编辑虚拟机设置
  • 按照上面的方法添加第二块网卡,一样右边选择 LAN 区段
  • 下面选择 交换机,刚才建立的交换机在这里能够直接选择使用
  • 这样 01 跟 02 两台机器就能够经过这个交换机进行通讯了
  • 由于 02 这台电脑按照实验设计应该是不能链接外网的
  • 因此选择 第一块网卡,这块网卡是以前配置好,能够上外网的
  • 如今要让它不链接网络,右边点击 启动时链接,把原来的 √ 去掉
  • 这样系统启动的时候,这块网卡就不会链接网络了,而后点击 肯定
  • 启动虚拟机01,进入系统后,输入 ifconfig 查看网卡信息
  • 如图,多了一块 ens37,这块网卡目前没有被分配ip地址
  • 有两种方法分配 ens37 ip
  • 一种是直接改配置文件,到网卡配置文件的目录 /etc/sysconfig/network-scripts/
  • 到这个目录里面,找到 ens33 的配置文件
  • 如图,而后 cp 复制一份,重命名为 ifcfg-ens37
  • 而后编辑该文件,将 ip 地址修改一下
  • uuid,mac地址 能够删除,让系统从新分配,由于这是 ens33 id和mac,不删除会冲突
  • name,device等信息修改一下
  • 这样就设置了永久的 ip
  • 还有一种方法是设置临时的ip,这种方法系统重启以后ip就会消失
  • 如图, ifconfig + 网卡名称 + ip地址/子网掩码位数
  • 这里子网掩码位数是 24 表示 24位 1
  • 这个表示子网掩码,通常是 255.255.255.255 这么多种组合
  • 换算成二进制就是 1111.... 32个1,也就是有32位数
  • 每一位数能够是0或者1
  • 设置为 24 表示 前面有 24位数 都是 1
  • 后面的 8 位数是 0
  • 这样转换为十进制就是 255.255.255.0
  • 8位二进制数有255种组合,最后8位都是0,转换为十进制数就是 0
  • 8个1转换为十进制数就是 255
  • 因此设置为24,表明24个1剩余都是0,总长度就是 32
  • 32-24=8 ,因此剩余8位就是0
  • 子网掩码就是 255.255.255.0
  • 还有一点,ens37的ip跟ens33的ip 网段不能同样
  • 好比 ens33 ip是 192.168.64.128 ,64就是网段
  • 因此 ens37 的第三段不能跟 ens33 一致
  • 因此这里设置为 192.168.100.1,100跟64不一致

  • 第二台虚拟机,由于不能链接外网
  • 因此不能使用 xshell 远程链接,须要直接在虚拟机上操做
  • 流程跟 01虚拟机同样,先设置网卡 ip
  • 02虚拟机的第二块网卡也是ens37
  • 设置 ip 的方法跟 01虚拟机同样
  • 也是 复制一份配置文件,而后修更名称和内容
  • 或者如图,使用 ifconfig 命令直接改 临时 ip
  • 这里设置为 192.168.100.100/24
  • 如图,这个命令能够查看 网卡是否链接主机
  • 这里显示 ok 就是链接没问题
  • 一样的命令检查 o1虚拟机
  • 如图,在01虚拟机上面使用 ping 192.168.100.100 链接 02虚拟机
  • 下面信息显示 链接成功

  • 咱们的目的是,让01虚拟机做为路由器,02虚拟机经过01虚拟机的路由器功能上网
  • 全部,首先应该打开 01虚拟机 上面的路由转发功能
  • 这样 01虚拟机就会具备路由器功能了
  • 如图, /proc/sys/net/ipv4/ip_forward 这个文件决定路由转发功能是否开启
  • ip_forward 文件里面只有一个值,目前默认值为 0
  • 0 就表示路由转发功能关闭了
  • 要打开路由转发功能,就须要把 0 修改成 1
  • 1 就表示打开
  • 如图, 使用命令 echo "1" > !$ 把原文件的0修改成1
  • 这样就算打开了 01 虚拟机的端口转发功能了
  • 而后还须要添加一条规则才能够实现上网功能
  • iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
  • 使用以上命令,对 nat 表的 POSTROUTING 链添加 MASQUERADE 规则
  • 这条规则使 192.168.100.0 网段能够上网
  • 如图,这是 虚拟机02 ,须要把虚拟机02 的网关设置一下
  • 由于虚拟机02 是经过 虚拟机01 来上网的
  • 因此 虚拟机01 跟 虚拟机02 链接的那块网卡的 ip 地址
  • 应该设置为 虚拟机02 的网关
  • 由于 01 转发的数据从这个ip出来到达 02
  • 02 的访问请求也是从这个ip出去,这个ip做用就至关于网关了
  • route -n 查看本机网关信息,目前没有设置网关
  • 使用 route addd default gw 192.168.100.1 设置默认网关
  • 再检查 route -n ,能够看到,网关信息增长了一行,192.168.100.1
  • 而后再 ping 一下不一样网段的,虚拟机01链接外网的网卡 192.168。64.128
  • 能够 ping 通说明成功了
  • 还有一点,两台虚拟机要使用 iptables -F 关闭防火墙,否则可能不能链接外网

  • 如今若是要远程登陆访问 虚拟机02,仍是作不到的
  • 还须要一些设置,把远程进来的信息,转发给 虚拟机02
  • iptables -t nat -D POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
  • 使用以上命令将以前添加的 nat 表规则删除以避免影响后续操做
  • 须要载添加两条规则,分别是把到达 192.168.64.128 的数据转发到 192.168.100.100
  • 还有就是把 192.168.100.100 发出的数据转发到 192.168.64.128
  • iptables -t nat -A PREROUTING -d 192.168.64.128 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22
  • 上面这条命令就是把 目的地是 192.168.64.128 端口是 1122 的数据包
  • 转发给 192.168.100.100,端口是 22 的地址
  • iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.64.128
  • 上面命令是把 192.168.100.100 发出的数据包 转发到 192.168.64.128
  • 如图,创建一个新的会话,主机输入 虚拟机01 的ip地址,端口设置1122
  • 而后链接,成功的话,会直接跳转到 虚拟机02
  • 这里也须要 iptables -F 否则不能转发数据

iptables规则备份和恢复

  • 如图,使用 service iptables save 能够保存现有的iptables 保存到 iptables 文件
  • 若是想保存到另外的文件里面
  • iptables-save > /tmp/ipt.txt 这样就能够把iptables设置保存到 ipt.txt 文件里面
  • 若是想从 ipt.txt 文件里面把 iptables 设置 加载回来
  • 如图,可使用 iptables-restore < /tmp/ipt.txt
  • 这样就能够把 ipt.txt 里面的设置加载到 iptables 里面
相关文章
相关标签/搜索