Linux三种网络方式

前言

发现运维啥都得会,这周就遇到了网络问题自己无法解决,因此痛定思痛学一下。

参考文献

你管这破玩意叫网络?

桥接模式、NAT模式、仅主机模式,原来是这样工作的

交换机

构成局域网,实现所有设备之间的通信。

因此通信就非常方便了,只需要写明目标物理地址,通过交换机进行转发,就可以达到想要通信的电脑。

路由器

作为一台独立的拥有Mac地址的设备,并且可以把数据包进行一次转发,路由器的每个端口都有独立的Mac地址。

此时192.168.0.10要和192.168.1.30通信,怎么知道是需要通过路由器进行转发呢?

  • 如果源IP目的IP在同一个子网,直接将包通过交换机发出去。
  • 如果源IP目的IP不在同一个子网,就交给路由器去处理。

192.168.0.x比如192.168.0.2就和192.168.0.10在同一个子网。

实际上是通过子网掩码进行与运算的结果对比是否在同一个子网。

还有一个问题就是如何知道哪个设备是路由器呢?

需要在192.168.0.10上面配置默认网关 ,一旦发现在不同子网,就将数据发给默认网关 的设备。

NAT技术

NAT技术,可以帮助局域网设备通过私有IP地址访问局域网。

  1. 私有IP地址:在一个局域网中,通常使用私有IP来为设备分配网络标识。这些地址范围是在互联网上不是唯一的,因此不能直接通过互联网访问。
  2. 公共IP地址:公共IP地址是全球范围内唯一的。
  3. NAT转换:当局域网设备通过路由器的WAN口访问互联网时,NAT技术将私有IP地址转为公共IP地址。

​外网进WAN,内网接LAN

  1. 路由表:NAT(比如路由器)会维护一个NAT转换的路由表记录每个局域网设备的私有IP地址和对应的公共IP地址、端口号。这样,当互联网上的响应数据包返回时,路由器可以根据路由表中的信息将数据包正确转发到对应的局域网设备。
  2. 端口转发:NAT技术还支持端口转发(PortForwarding ,允许外部网络访问局域网中特定设备的特定端口。通过在路由器上配置端口映射规则,路由器可以将外部网络的请求转发到局域网设备的私有IP地址和端口上

普通设备(电脑/手机)​一般只有私网IP,除非特殊网络环境(如直连光猫、双网卡)。

通过ipconfig查看

路由器/网关设备:通常同时拥有公网IP(对外)和私网IP(对内)。
路由表

端口转发

桥接模式

linux 如何查看网卡配置是桥接还是nat还是其他

请参考桥接模式的图

桥接模式下,虚拟机会直接"插"在你的物理网线上,就像你家里新买了一台电脑,直接用网线连到路由器上一样------它和物理机是完全平等的"邻居",共用同一个物理网络。

为什么需要同一网段、相同网关/DNS

  • 同一网段 :就像你家的所有设备(手机、电脑)必须连到同一个路由器(比如 192.168.1.x)。
  • 相同网关 :网关就是路由器的IP(比如 192.168.1.1),所有设备都要通过它上网。
  • 相同DNSDNS是"地址簿",虚拟机要和物理机用同一个地址簿(比如 8.8.8.8)才能找到网站。

关于DNS在这里可以多说一点关于我自己的理解:

一个域名,可以访问到成百上千台服务器。那么我们怎么知道到底要访问哪一台呢?

负载均衡,轮询的方式,一台一台的访问。

为什么没有 VMnet0 虚拟网卡?

桥接模式直接使用物理网卡,不需要虚拟网卡做中间人。

  • 对比NAT模式 :NAT模式相当于虚拟机"躲在"物理机后面,通过物理机的虚拟网卡(如 VMnet8)上网,所以需要虚拟网卡。
  • 桥接模式:虚拟机自己"光明正大"用物理网卡,直接和路由器对话。

实操一下


vi /etc/sysconfig/network-scripts/ifcfg-ens33

bash 复制代码
BOOTPROTO=static       # 更改为静态,为什么要调成静态呢?因为DHCP分配IP,比如这个时候你是9过一会又变成10,连接就会变得很麻烦
ONBOOT=yes             # 设置开机⾃动启⽤⽹络连接
IPADDR=192.168.1.200    # 虚拟机的静态ip,一定要按 主机的实际网络情况进行配置,不和已有的冲突即可
NETMASK=255.255.255.0  # 和 主机 的子网掩码一致
GATEWAY=192.168.1.1   # 和 主机 的网关IP一致
DNS1=192.168.1.1      # 和 主机 的网关IP一致

重启一下网络service network restart

虚拟机

主机

那么为什么虚拟机ping不同主机呢?

我又有一个想法虚拟机是不是可以也可添加防火墙,额之前防火墙忘记开启了。现在开启了再试一下。

bash 复制代码
systemctl start firewalld
systemctl status firewalld

那么专门隔绝一下主机IP访问再看看。

bash 复制代码
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.165" reject'
sudo firewall-cmd --reload
sudo firewall-cmd --list-all


bash 复制代码
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.165" reject'
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

说实话我现在不太会,等学会了补上。

NAT网络

linux 如何查看网卡配置是桥接还是nat还是其他

请参考NAT网络模式的图

NAT模式中,主机网卡直接与虚拟NAT设备相连,然后虚拟NAT设备与虚拟DHCP服务器一起连接在虚拟交换机VMnet8上,这样就实现了虚拟机联网。

相比桥接模式,多了虚拟NAT设备虚拟DHCP服务器虚拟网卡

虚拟交换机目的是为了搭建一个局域网,会把所有虚拟机和VMware Network Adapter VMnet8搭建在一个局域网内,虚拟机和VMware Network Adapter VMnet8可以互联互通的,主机可以通过虚拟网卡VMware Network Adapter VMnet8访问到虚拟机,但是虚拟机不能直接通过虚拟网卡VMware Network Adapter VMnet8访问到主机网卡的,因为不通也不在同一个网段,虚拟机想要访问主机网卡需要通过NAT设备。

所以主机和虚拟机是互通的,但是走的链路不同。

实操一下


bash 复制代码
BOOTPROTO=static       # 更改为静态
ONBOOT=yes             # 设置开机⾃动启⽤⽹络连接
IPADDR=192.168.111.15    # 虚拟机的静态ip,一定要按 VMnet8 的实际网络情况进行配置,不和已有的冲突即可
NETMASK=255.255.255.0  # 和 VMnet8 的子网掩码一致
GATEWAY=192.168.111.2   # 和 VMnet8 的网关IP一致
DNS1=192.168.111.2      # 和 VMnet8 的网关IP一致

service network restart

经过测试,虚拟机和主机相互都能通信,并且都可以访问外网。


端口转发

此路不通,可以走另一条路。

可以把外部的请求转发到局域网内,主机的网卡 ,相当于虚拟机的集群来说就是一个外部的设备,VMware Network Adapter VMnet8禁用以后不能通过虚拟网卡访问虚拟机。

如果想通过主机的网卡访问到虚拟机,需要在NAT设备配置端口转发

这个操作就是把主机的80端口,转发到虚拟机的192.168.111.15的22端口

路线就是这样的通过主机网卡->NAT设备(端口转发)->虚拟机。注意此时被VMware Network Adapter VMnet8禁用了

仅主机模式

仅主机模式 可有看成是NAT模式去除了虚拟NAT设备,然后使用VMware Network Adapter VMnet1虚拟网卡连接VMnet1虚拟交换机来与虚拟机通信的,Host-Only模式将虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只与主机相互通讯。

虚线代表着不能通信。

虚拟机不能访问主机的网卡,主机可以通过VMware Network Adapter VMnet1虚拟网卡访问到虚拟机,


vi /etc/sysconfig/network-scripts/ifcfg-ens33

bash 复制代码
BOOTPROTO=static       # 更改为静态
ONBOOT=yes             # 设置开机⾃动启⽤⽹络连接
IPADDR=192.168.222.15    # 虚拟机的静态ip,一定要按 VMnet1 的实际网络情况进行配置,不和已有的冲突即可
NETMASK=255.255.255.0  # 和 VMnet1 的子网掩码一致

service network restart

当然关闭了VMware Network Adapter VMnet1虚拟网卡主机也不能访问虚拟机。

总结

所有结论都需要反复测试!如果有错误欢迎指正!一起努力!

如果喜欢的话,请点个赞吧就算鼓励我一下。

相关推荐
网络安全-老纪9 分钟前
网络安全有必要学编程吗?
网络·安全·web安全
想拿高薪的韭菜23 分钟前
计算机网络-实验3拓扑结构
网络·计算机网络
jklinux27 分钟前
OpenHarmony4.1-轻量与小型系统ubuntu开发环境
linux·ubuntu·harmonyos·openharmony
明天不吃。43 分钟前
【网络原理】详解 HTTPS 协议
网络·https
头发尚存的猿小二1 小时前
Linux--基本指令2
linux·运维·服务器
云水木石1 小时前
deepin Linux 系统上交叉编译 ARM 架构浏览器
linux·运维·服务器·arm开发
BanLul1 小时前
网络编程——UDP
网络·udp·php
A星空1231 小时前
Linux mkdir 命令
linux·运维·服务器
心随_风动1 小时前
CentOS与Ubuntu操作系统的基本对比介绍
linux·ubuntu·centos
暴躁的小胡!!!1 小时前
Windows权限维持之不死马(一)
运维·服务器·网络·windows·安全