10.16/10.17/10.18 iptables nat表应用
时间:2022-04-27
本文章向大家介绍10.16/10.17/10.18 iptables nat表应用,主要内容包括nat表应用、实现:、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
nat表应用
- A机器两块网卡ens33(192.168.202.130)、ens37(192.168.100.1),ens33可以上外网,ens37仅仅是内部网络,B机器只有ens37(192.168.100.100),和A机器ens37可以通信互联。
需求1:可以让B机器连接外网
- A机器上打开路由转发 echo "1">/proc/sys/net/ipv4/ip_forward
- A上执行 iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
- B上设置网关为192.168.100.1
实现:
- 首先准备两台机器(若是怕实验失败,可先快照下)
- 在虚拟机hf上在添加一块网卡(已添加过一块虚拟网卡)
- 然后默认的是NAT模式,然后点击完成
- 在选择添加的网卡,并在右侧,选择LAN区段
- 选择LAN区段,就相当于我们给网卡连接到了内网的一个交换机上,这个交换机,用windows机器是无法连接的,这样这台机器和那台机器连上同一个内网的交换机,它们两者之间通信即可。
- 然后选择LAN区段中,刚设置的名称为“内网”
- 最后点击确定
- 选择克隆的虚拟机hf-02,并添加网卡——>在这台虚拟机上本身有一块网卡,因为已经编辑过IP,所以我们可以直接禁掉这个网卡
- 然后hf-02添加一块网卡,和hf添加网卡步骤一样相同,并选择LAN区段,中的“内网”,并确认
- 重启两台虚拟机
- hf-02虚拟机中没有了windows所能连接的IP,所以就无法远程连接hf-02
- 打开hf虚拟机,输入ifconfig命令,会看到添加了一个网卡eno33554984
- 这里会看到eno33554984网卡,并没有IP,并设置IP(新建那个当私网IP,你可以跟跟视频中的一样,也可以自己设置)
- 设定IP有两种方法:
- 1.可以命令行添加IP
- 命令行ifconfig ens36 192.168.100.1/24
- 2.也可以设置配置文件,设置配置文件和设置虚拟网卡一样的步骤
- 将eno16777736网卡配置文件复制成eno33554984,并修改里面的IP和NETMASK即可其他都不需要管
- 1.可以命令行添加IP
- 执行命令行ifconfig ens36 192.168.100.1/24,然后运行ifconfig命令,会看到eno33554984网卡有了IP
- 手动命令行ifconfig ens36 192.168.100.1/24,设置IP ![输入图片说明](https://static.oschina.net/uploads/img/201712/01120906_md73.png "新增网卡eno3355498")
- 但是eno33554984网卡的IP,在虚拟机一重启,那么IP就会没了——>若想永久生效,就去编辑配置文件,但默认配置文件是不存在的,需要拷贝eno16777736网卡的配置文件,然后更改其中的内容
- 因为hf-02虚拟机无法远程,所以只能在虚拟机上操作
- 用ifconfig命令查看hf-02虚拟机的网卡,会发现也没有IP地址
- 这里若想完全禁掉eno16777736网卡,可执行ifdown eno16777736命令(这一步可省略,若一直失败的话,只要在设置好IP,两个私网IP互通即可)
- 给eno33554984网卡设置IP地址,命令行ifconfig ens36 192.168.100.100/24
- 然后用ifconfig命令,查看新建的网卡IP地址
- 这里会看到hf-02虚拟机中的eno16777736网卡,但是是无法ping通的——>若为了保险这里可以执行命令ifdown eno16777736
- 然后给ens36网卡设置IP地址,命令行ifconfig ens36 192.168.100.100/24
- 这时候,两台虚拟机中新建网卡的IP互相尝试互相ping通
- 这时hf机器上需要打开路由转发 ——>想使用nat表,使用网络的转发,必须修改内核参数
- 默认/proc/sys/net/ipv4/ip_forward这个文件为0——>这个文件为0,表示这个文件没有开启内核转发
[root@hanfeng ~]# cat /proc/sys/net/ipv4/ip_forward
0
[root@hanfeng ~]#
- 将文件/proc/sys/net/ipv4/ip_forward默认改为1,打开端口转发
- 要想实现nat应用,必须打开端口转发
[root@hanfeng ~]# echo "1" > !$
echo "1" > /proc/sys/net/ipv4/ip_forward
[root@hanfeng ~]# !cat
cat /proc/sys/net/ipv4/ip_forward
1
[root@hanfeng ~]#
- 在hf虚拟机上增加一条规则iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
[root@hanfeng ~]# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
[root@hanfeng ~]#
- 实现100.0网段可以上网,做一个欺骗
- 给hf-02设置网关(数据包过去,从hf到hf-02,从hf-02到hf,设置好默认网关)
- 然后hf-02尝试是否能ping通192.168.202.130,这就意味着可以和外网通信了
- 设置DNS,在/etc/resolv.conf中设置,添加nameserver 119.29.29.29
- 这时候就可以ping通外网了——>但物理机还是无法ping通hf-02的虚拟机IP地址
- 需求2:C机器只能和A通信,让C机器可以直接连通B机器的22端口
- A上打开路由转发echo "1">/ proc/sys/net/ipv4/ip_forward
- A上执行iptables -t nat -A PREROUTING -d 192.168.133.130 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22
- A上执行iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.133.130
- B上设置网关为192.168.100.1
- 《SpringMVC从入门到放肆》五、SpringMVC配置式开发(处理器适配器)
- 《SpringMVC从入门到放肆》四、SpringMVC配置式开发(处理器映射器)
- 什么是Spring Boot?
- 《SpringMVC从入门到放肆》三、DispatcherServlet的url-pattern配置详解
- 《SpringMVC从入门到放肆》二、SpringMVC的执行流程及默认配置
- 《SpringMVC从入门到放肆》一、概述
- Spring import配置文件使用占位符
- 阿里Druid连接池的坑。。
- Go实现海量日志收集系统(二)
- Spring MVC表单防重复提交
- Go基础之锁的初识
- 3种常见的Class级别的错误
- 通过Beego将之前实现的短url项目实现
- struts2标签示例
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Unet实现文档图像去噪、去水印
- 「influxDB 原理与实践(一)」安装部署,实现基础的添加删除查询功能
- 「influxDB 原理与实践(二)」详解influxDB的写入与查询
- Nginx系列:https配置
- 笛卡尔积、等值连接、自然连接、外连接一文看懂
- nginx系列:常用利用shell统计日志
- Nginx系列:图片过滤处理
- Nginx系列:几款负载均衡第三方插件的安装与使用
- 「高并发通信框架Netty4 源码解读(三)」NIO缓冲区Buffer详解
- UML类图符号:各种关系说明以及举例
- 「高并发通信框架Netty4 源码解读(四)」NIO缓冲区之字节缓冲区ByteBuffer详解
- 「influxDB 原理与实践(三)」连续查询
- 为什么使用OPA而不是原生的Pod安全策略?
- 浅入浅出 Java ConcurrentHashMap
- 「高并发通信框架Netty4 源码解读(五)」NIO通道Channel详解