计算机网络 day8 动态路由 - NAT - SNAT实验 - VMware的网卡的3种模式

news2025/2/4 11:06:54

目录

动态路由:IGP 和 EGP

参考网课:4.6.1 路由选择协议概述_哔哩哔哩_bilibili

​编辑

IGP(Interior Gateway Protocol)内部网关协议:

EGP(Interior Gateway Protocol)外部网关协议:

BGP 边界网关协议(Border Gateway Protocol)

实验:

NAT:网络地址转换

NAT 有以下几种常见的应用方式:

SNAT

SNAT策略的原理

未使用SNAT策略时的情况

在网关中使用SNAT策略以后

五元组:源IP地址、目的IP地址、源端口、目的端口、传输协议

SNAT实验:

实验环境:

SNAT网络规划拓扑图:

1、给linux网关服务器的2块网卡配置IP地址

2、给局域网内的客户机的网卡也配置IP地址

3、在linux网关服务器上配置SNAT策略的脚本 

4、测试效果,如果能通过client机器上ping通百度的话,说明SNAT实验成功了

VMware的网卡的3种模式

详细请参考:(114条消息) 计算机网络 SNAT/DNAT 部署(三种VMware网卡模式)_snat部署_Claylpf的博客-CSDN博客

桥接模式,仅主机模式,NAT模式

1、桥接模式(bridge)

2、仅主机模式(host-only) 

3、NAT模式

总网络规划图


动态路由:IGP 和 EGP

参考网课:4.6.1 路由选择协议概述_哔哩哔哩_bilibili

IGP(Interior Gateway Protocol)内部网关协议:

它是一种用于在自治系统(AS)内部进行路由选择的协议。

常见的 IGP 包括以下几种:

RIP:一种距离矢量路由选择协议,基于跳数来评估路径的优劣。--》只是适合规模比较小的网络

OSPF:一种链路状态路由选择协议,通过交换链路状态信息(带宽、网速、时延)来计算最短路径。--》适合大型的网络

IS-IS:一种链路状态路由选择协议,类似于 OSPF,但使用不同的路由选择算法。

EIGRP:一种距离矢量和链路状态相结合的路由选择协议,由思科开发。

EGP(Interior Gateway Protocol)外部网关协议:

指的是用于自治系统(AS)之间进行路由选择的协议。(EGP 主要用于互联网中不同自治系统之间的路由交换。)

最早的 EGP 协议是在互联网刚起步时使用的,但现在已经被较先进的 BGP(Border Gateway Protocol,边界网关协议)所取代。BGP 是当前广泛使用的用于自治系统间的路由选择的协议。

BGP 边界网关协议(Border Gateway Protocol)

BGP 通过在不同的自治系统之间交换路由信息,帮助网络管理员决定数据包从源节点到目标节点的最佳路径。它考虑到网络拓扑、自治系统之间的政策和策略,以及其他因素来进行路由选择。BGP 具有高度的可扩展性和灵活性,使得互联网能够连接大量的自治系统并实现全球性的路由。

实验:

NAT:网络地址转换

它主要用于在私有网络和公共网络之间进行 IP 地址的映射转换。

NAT 的主要功能是将私有网络内部使用的私有 IP 地址与公共网络之间的公共 IP 地址相互转换。私有 IP 地址在内部网络中使用,而公共 IP 地址则用于外部网络(例如互联网)之间的通信。

NAT 有以下几种常见的应用方式:

  1. 静态 NAT(SNAT):将私有 IP 地址映射为一个固定的公共 IP 地址,用于单一的一对一映射。
  2. 动态 NAT(DNAT):将私有 IP 地址映射为可用的公共 IP 地址池中的一个地址,根据需要动态选择不同的地址进行转换。
  3. PAT(Port Address Translation):在动态 NAT 的基础上,还利用端口号进行转换,使多个内部主机可以通过单个公共 IP 地址进行访问互联网。

它将什么地址转换为什么地址?

        ip地址:公网、私网

        公网IP  《---》私网IP

解决了什么核心地址?

        公网IP(IPv4)不足的问题

SNAT

它解决了局域网上网的问题

将私有 IP 地址映射为一个固定的公共 IP 地址,用于单一的一对一映射。

SNAT策略的典型应用环境

局域网主机共享单个公网IP地址接入Internet

SNAT策略的原理

源地址转换,Source Network Address Translation

修改数据包的源IP地址

未使用SNAT策略时的情况

在网关中使用SNAT策略以后

linux内核里有一个NAT映射表会自动进行转换,回来的时候

五元组:源IP地址、目的IP地址、源端口、目的端口、传输协议

SNAT实验:

实验环境:

        准备2台集群:一台做局域网里的客户机(1个网卡),一台做做网关服务器(路由器)

        所有的虚拟机的网卡模式选择桥接模式(客户机可以选择仅主机模式)

桥接:  暂时理解为虚拟机和真实机器连接到同一个交换机(在相同vlan)
hostonly 仅主机模式: 你的虚拟机只是和你的真实机器通信,不能跟别人的真实机器或者虚拟机通信,避免ip地址冲突

SNAT网络规划拓扑图:

1、给linux网关服务器的2块网卡配置IP地址

[root@nginx-lb1 ~]# ip add     查看ip地址,获得2块网卡的名字:  ens33和ens36 (我已经配置好了两块网卡的IP地址和网关了)
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:90:56:0d brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.77/24 brd 192.168.2.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe90:560d/64 scope link 
       valid_lft forever preferred_lft forever
3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:90:56:17 brd ff:ff:ff:ff:ff:ff
    inet 192.168.80.100/24 brd 192.168.80.255 scope global noprefixroute ens36
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe90:5617/64 scope link 
       valid_lft forever preferred_lft forever
[root@nginx-lb1 ~]# 

配置IP地址步骤
[root@sc-server ~]# cd  /etc/sysconfig/network-scripts/
[root@sc-server network-scripts]# 
复制原来的ens33的网卡配置文件生成ens36的网卡配置文件

[root@sc-server network-scripts]# cp ifcfg-ens33   ifcfg-ens36    因为前面新添加的网卡的名字是ens36,所以我们使用ens36的名字

[root@sc-server network-scripts]# ls
ifcfg-ens33  ifdown-ippp    ifdown-sit       ifup-bnep  ifup-plusb   ifup-TeamPort
ifcfg-ens36  ifdown-ipv6    ifdown-Team      ifup-eth   ifup-post    ifup-tunnel
ifcfg-lo     ifdown-isdn    ifdown-TeamPort  ifup-ippp  ifup-ppp     ifup-wireless
ifdown       ifdown-post    ifdown-tunnel    ifup-ipv6  ifup-routes  init.ipv6-global
ifdown-bnep  ifdown-ppp     ifup             ifup-isdn  ifup-sit     network-functions
ifdown-eth   ifdown-routes  ifup-aliases     ifup-plip  ifup-Team    network-functions-ipv6
[root@sc-server network-scripts]# 
配置wan口的网卡ens36的ip,注意:WAN口里配置网关和dns,注意网卡类型为桥接模式
[root@sc-server network-scripts]# vim ifcfg-ens33
BOOTPROTO="none"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.2.77
PREFIX=24
GATEWAY=192.168.2.1
DNS1=114.114.114.114
[root@sc-server network-scripts]#
配置LAN口的网卡ens36的ip,注意:LAN口里不配置网关和dns,注意网卡类型为仅主机模式(hostonly)或者桥接模式
[root@sc-server network-scripts]# vim ifcfg-ens36
BOOTPROTO="none"
NAME="ens36"
DEVICE="ens36"
ONBOOT="yes"
IPADDR=192.168.80.100
PREFIX=24
[root@sc-server network-scripts]# service network restart
Restarting network (via systemctl):                        [  确定  ]
[root@nginx-lb1 ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:90:56:0d brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.77/24 brd 192.168.2.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe90:560d/64 scope link 
       valid_lft forever preferred_lft forever
3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:90:56:17 brd ff:ff:ff:ff:ff:ff
    inet 192.168.80.100/24 brd 192.168.80.255 scope global noprefixroute ens36
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe90:5617/64 scope link 
       valid_lft forever preferred_lft forever
[root@nginx-lb1 ~]# 

2、给局域网内的客户机的网卡也配置IP地址

[root@sc-client ~]# cd  /etc/sysconfig/network-scripts/
[root@sc-client network-scripts]# 
[root@sc-client network-scripts]# vim ifcfg-ens33
BOOTPROTO="none"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.80.1
PREFIX=24
GATEWAY=192.168.80.100
DNS1=114.114.114.114

[root@sc-server network-scripts]# service network restart
Restarting network (via systemctl):                        [  确定  ]
[root@sc-server network-scripts]#

[root@claylpf network-scripts]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:ca:33:25 brd ff:ff:ff:ff:ff:ff
    inet 192.168.80.1/24 brd 192.168.80.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:feca:3325/64 scope link 
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:f6:8a:f5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:f6:8a:f5 brd ff:ff:ff:ff:ff:ff
[root@claylpf network-scripts]# 


如果真实机器想和虚拟机(client)ssh远程连接
使用vmnet1网卡配置ip地址为192.168.50.2(网关服务器的ens36网卡配置的是仅主机模式host-only)

3、在linux网关服务器上配置SNAT策略的脚本 

[root@nginx-lb1 nat]# cat snat.sh 
#!/bin/bash

#开启路由功能
echo 1 > /proc/sys/net/ipv4/ip_forward

#清除防火墙规则
iptables -F
iptables -F -t nat

#添加SNAT策略的防火墙规则
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j SNAT --to-source 192.168.2.77

[root@nginx-lb1 nat]# 

 代码解释:

iptables是一个防火墙工具,可以给linux内核传递网络参数,上面的功能是告诉linux内核开启SNAT功能。
-t nat  在nat相关的表里
-A POSTROUTING  在POSTROUTING位置追加一条规则 --》数据从网络离开的位置  append 
-s 192.168.1.0/24  指定源ip地址所在的网段  source
-o eth0 从eth0接口出去 output  
-j SNAT  执行SNAT策略,修改ip包里的源ip地址
--to-source 218.29.30.31 将ip包里的源ip地址修改为218.29.30.31 

查看iptables配置后的效果: 

[root@nginx-lb1 network-scripts]# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       all  --  192.168.80.0/24      anywhere             to:192.168.2.77
[root@nginx-lb1 network-scripts]# 

4、测试效果,如果能通过client机器上ping通百度的话,说明SNAT实验成功了

nat的次数越多,网络的速度就会越慢,时延就会越长

VMware的网卡的3种模式

详细请参考:(114条消息) 计算机网络 SNAT/DNAT 部署(三种VMware网卡模式)_snat部署_Claylpf的博客-CSDN博客

桥接模式,仅主机模式,NAT模式

1、桥接模式(bridge)

vmnet0 对应的桥接模式

1.桥接模式: bridge   直接连接到物理网络,其实就是虚拟机和真实机器在同一个局域网里,利用真实机器的网卡连接到真实的交换机上或者路由器上
                    虚拟机和真实机器在同一个网段,地位是平等的

            物理网络:就是真实的网络

wlan:  代表无线网络   wireless  LAN   

network adapter :网络适配器(网卡)

2、仅主机模式(host-only) 

2.仅主机模式: hostonly
    vmnet1网卡  对应host only模式
    虚拟机只能和真实机器通信,处于一个封闭的网络里 --》vlan里

    dhcp服务器给仅主机模式的虚拟机分配ip地址的时候,没有告诉虚拟机网关的ip,没有配置网关,导致虚拟机不能进行跨网段通信,只能和真实机器通信。

3、NAT模式

3.NAT模式:
    vmnet8网卡  对应nat模式,用来和虚拟机的网卡模式是nat的机器通信,连接在同一个局域网里
    用于共享主机的ip地址,所有的虚拟机使用真实机器的ip地址联网
        SNAT
    不同的vlan --》不同vlan对应不同的网段 --》做了隔离的

    192.168.*.1  -->真实机器的vmnet8网卡使用
    192.168.*.2  -->给vmware 模拟出来的路由器的LAN口使用,作为网关使用

总网络规划图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/761893.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

专精特新如何养成?先搞清楚成长路径和核心能力激活高质量发展!

头雁勤&#xff0c;群雁便能“春风一夜到衡阳”。群雁齐飞&#xff0c;最重要的是头雁引领。 当前加快中小企业数字化转型正当其时&#xff0c;“专精特新”企业势必将肩负起“领头雁”之任&#xff0c;为中小企业转型发展做出表率。 装备制造业 专精特新“主力军” 纵观目前…

SpringBoot Data JPA 集成多租户

背景&#xff1a; ​ iot-kit项目用的是SpringBoot JPA&#xff0c;不是Mybatis&#xff0c;项目中需要引入多租户。 文章中心思想&#xff1a; 通过Hibernate Filters 和AspectJ 切面编程&#xff0c;实现SpringBoot JPA多租户 什么是多租户 ​ 多租户我理解就是一个网站允…

【EXCEL】通过url获取网页表格数据

目录 0.环境 1.背景 2.具体操作 0.环境 windows excel2021 1.背景 之前我用python的flask框架的爬虫爬取过豆瓣网的电影信息&#xff0c;没想到excel可以直接通过url去获取网页表格内的信息&#xff0c;比如下图这是电影信息界面 即将上映电影 (douban.com) 通过excel操作&…

Cache——让CPU更快地执行你的代码

概要 Cache对性能的影响 首先我们要知道&#xff0c;CPU访问内存时&#xff0c;不是直接去访问内存的&#xff0c;而是先访问缓存&#xff08;cache&#xff09;。 当缓存中已经有了我们要的数据时&#xff0c;CPU就会直接从缓存中读数据&#xff0c;而不是从内存中读。 CPU…

Python基础编程案例之编写交互式博客系统

文章目录 1、博客系统的需求描述2、面向用户层面各功能的设计思路与代码编写2.1.定义文章库2.2.文章的发布2.3.删除文章2.4.修改文章的标题以及内容2.5.在评论区添加评论2.6.删除文章中的某条评论2.7.阅读文章2.8.对文章进行点赞2.9.对文章进行收藏2.10.对文章进行打赏2.11.查询…

WorkPlus AI助理:结合ChatGPT对话能力与企业数据,助力企业级AI构建!

WorkPlus AI助理是基于GPT和私有数据构建智能知识库和个性化AI&#xff0c;能够帮助企业生成博客、白皮书、社交媒体帖子、新闻稿等等&#xff0c;这些内容可以用于推广产品、服务&#xff0c;增强品牌形象和知名度。此外&#xff0c;利用WorkPlus AI助理还可以生成电子邮件、利…

基于linux串口实现语音刷抖音

目录 1.开发逻辑图及模块 2.编程实现语音和开发板通信 3.手机接入Linux热拔插相关,打开手机开发者模式允许USB调试 4.用shell指令来操作手机屏幕&#xff0c;模拟手动滑屏幕 5.最终主程序代码 1.开发逻辑图及模块 逻辑图&#xff1a; 模块 &#xff08;1&#xff09;语音…

读kafka生产端源码,窥kafka设计之道(上)

1. kafka 高吞吐之道-------异步提交批量发送 简约的发送接口----后面隐藏着并不简单的设计 kafka发送消息的接口非常简约&#xff0c;在简约的表面上&#xff0c;其背后却并不简单。先看下发送接口 kafkaProducer.send(new ProducerRecord(topic,msg), new Callback() {Ove…

8、链路层以太网协议,ARP协议32

网络层IP协议描述了通信中的起点到终点&#xff0c;但是数据不是飞过去的&#xff0c;是经过了大量的中间节点转发完成的。 一、以太网协议 1、MAC地址 物理硬件地址&#xff0c;是每一块网卡在出厂时设定的地址&#xff0c;固定且不可修改&#xff08;早期&#xff0c;现在可…

当DevOps遇到AI,黑马迎来3.0时代丨IDCF

随着GhatGPT的爆火&#xff0c;人工智能和研发效能&#xff0c;无疑成为了2023的两个最重要的关键词。大规模语言模型LLM和相关应用的快速发展正在对研发团队的工作方式产生深远影响&#xff0c;这几乎象征着新的生产力革命的到来。 那么&#xff0c;作为一名工程师&#xff0…

Chat GPT是什么,初学者怎么使用Chat GPT,需要注意些什么

目录 Chat GPT是什么 初学者怎么使用Chat GPT 使用Chat GPT需要注意什么 一些简单的prompt示例 Chat GPT是什么 Chat GPT是由OpenAI开发的一种大型语言模型&#xff0c;它基于GPT&#xff08;Generative Pre-trained Transformer&#xff09;架构。GPT是一种基于深度学习的…

【Matlab】智能优化算法_遗传算法GA

【Matlab】智能优化算法_遗传算法GA 1.背景介绍2.数学模型3.文件结构4.详细代码及注释4.1 crossover.m4.2 elitism.m4.3 GeneticAlgorithm.m4.4 initialization.m4.5 Main.m4.6 mutation.m4.7 selection.m4.8 Sphere.m 5.运行结果6.参考文献 1.背景介绍 遗传算法&#xff08;Ge…

(学习笔记)TCP 为什么是三次握手?不是两次、四次?

常规回答&#xff1a;“因为三次握手才能保证双方具有接收和发送的能力” 原因一&#xff1a;避免历史连接 三次握手的首要原因是为了防止旧的重复连接初始化造成混乱。 假设&#xff1a;客户端先发送了SYN(seq90)报文&#xff0c;然后客户端宕机了&#xff0c;而且这个SYN报…

一种电动汽车智能充电及收费云平台管理方案

摘要&#xff1a;对于电动汽车来说&#xff0c;主要是借助电力作为能源&#xff0c;有着多方面的优点。但是也存在着一定的问题&#xff0c;尤其在续航能力上相对较差。因此&#xff0c;在实际工作中要正确利用现代科学技术&#xff0c;让电动汽车实现智能充电。在研究中所涉及…

JavaScript中的let、const和var

在 JavaScript 中&#xff0c;let、const 和 var 是用于声明变量的关键字&#xff0c;在使用时有以下区别&#xff1a; 作用域&#xff1a;let 和 const 声明的变量具有块级作用域&#xff0c;只能在声明它的块中访问。而 var 声明的变量则是函数作用域或全局作用域&#xff0…

MS31001低压 5V DC 电机驱动

MS31001 是一款低压 5V 直流电机驱动芯片&#xff0c;为摄像机、 消费类产品、玩具和其他低压或者电池供电的运动控制类应用 提供了集成的电机驱动解决方案。 MS31001 能提供高达 0.8A 的输出电流。可以工作在 2.0~5.5V 的电源电压上。 MS31001 具有 PWM &#xff08…

NSSCTF随机一题

[GXYCTF 2019]Ping Ping Ping 应该是命令注入的题目&#xff0c;直接先ping一下本地&#xff0c;发现url栏有ip传参变化 接着就是利用命令注入符&#xff0c;尝试注入 它好像真的在ping&#xff0c;执行得特别慢&#xff0c;利用ls&#xff0c;查询到了flag文件 发现空格过…

LeetCode·每日一题·415. 字符串相加·模拟

作者&#xff1a;小迅 链接&#xff1a;https://leetcode.cn/problems/add-strings/solutions/2347085/mo-ni-zhu-shi-chao-ji-xiang-xi-by-xun-ge-fges/ 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商…

自适应巡航控制系统研究(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 据统计, 我国交通事故造成的伤亡人数每年超过10万人, 其中驾驶员人为原因 (疲劳、酒驾、误操作等) 所致事故逐渐升高.汽车交通…

Python多线程同步编程Event使用方法

一、Event简介 Event是Python多线程同步编程中的一种同步原语&#xff0c;它可以帮助我们协调多个线程的操作&#xff0c;以达到线程间传递信号、同步操作等目的。 Event主要有两种状态&#xff1a;已设置和未设置。当Event被设置时&#xff0c;所有等待该Event的线程都会被唤…