Linux入门真经-044-将linux主机接入TCP/IP网络

2024-03-04 17:48

本文主要是介绍Linux入门真经-044-将linux主机接入TCP/IP网络,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

对TCP/IP网络有了一个大概的、整体的认识之后,让我们来将linux主机接入到网络中。

我将我的网络环境与接入过程介绍给大家,并按需介绍一些我们还没有讲到的知识。

 

1、理清你的网络拓扑

 

将各个终端、各个网络设备之间的连接关系画出来,我们就可以得到一张网络拓扑。我们先来理解一下我们家里的电脑是如何接入公网的,以下面这个拓扑为例:

这是一个非常小的网络,相信你家中的拓扑和它并没有什么两样。家里有一个无线路由器,家里的电子设备上网时通过有线或者无线网络与无线路由器连接,他们分配到的都是一个私网地址(同在192.168.0.0/24网段)。无线路由器通过拨号上网,获取到一个公网IP,家里所有的设备虽然都是私有地址,但是通过modem上网时,都会被转换成一个公网地址,这样数据便能在公网中传输。

 

有人可能会有疑问,那么我们之前介绍的什么交换机、路由器都没用到吗?当然不是。家用网络中需要上网的设备极少,同时为了方便运行商计费,大都采用上面这种拓扑。其实家庭网络都处于网络的边缘节点,在这个拓扑中,从modem再向上无非就是一些路由交换的数据通信设备,当然,还有防火墙、负载均衡器、认证计费等设备在网络中工作。

 

事实上,家庭网络之外的网络比我们想象得要复杂得多得多。拓扑中网络设备与连线像蜘蛛网一样盘根复杂,下图是一张高度浓缩概括的企业网,如果将它展开到把每一台和设备每一根连线都画出来,也许我需要一个篮球场。

 

好在我们无需掌握网络的全貌。网络的新建与改造大多是由网络工程师或者网络管理员来做的。更多时候我们只是要把自己的客户端或者服务器接入现有的网络,使得我们自己能够访问网络资源或者能够被它人访问。比如,我们现在要让笔记本中的linux虚拟机上网,应该怎么做?回头看看第一个拓扑,我们能做的大概就是给linux分配一个192.168.0.0/24的地址,然后将其和无线路由器连接起来,让无线路由器转发linux主机发出或者接收到的数据包。可是虚拟机程序只是一个运行在宿主机上的软件进程,如何与现实设备连接?具体我们该怎么做呢?

 

2、虚拟机的网络连接模式

 

不要简单的认为这是个在自己电脑上实验才需要了解的过家家般的知识。事实上,在生产环境中,虚拟机的数量经常都比物理机多,甚至很多时候物理机只是变成了一个为虚拟机提供计算资源的黑盒子,真正对外服务的只有虚拟机。而软件化的虚拟机接入物理网络的方式基本也就是这么几种。

我们先将虚拟机关机,然后编辑虚拟机的设置

如上图,我们可以看到网络连接面板上,列出了几种模式。我们主要关注:虚拟机网络类型:Bridged(桥接)、NATHost-only(仅主机)这三种网络。

安装完vmware workstation之后,电脑上会多出两张网卡:vmnet8和vmnet1

在 NAT 模 式 下, 虚 拟 机 的 网 卡 连 接 到 宿 主 机 的 VMnet8 网卡上。 此 时宿主机的 VMware NAT Service 服务就充当了路由器,负责将虚拟机发送到VMnet8 的包进行地址转换之后发送到实际的网络上,再将实际网络上返回的包进行地址转换后通过VMnet8 发送给虚拟机。VMware DHCP Service 负责为虚拟机分配IP 地址。在nat模式下,虚拟机通过宿主机上网,可以访问外部网络,但是无法被外部网络访问,因为在nat模式下,虚拟机对于外界是不可见的,虚拟机发出的数据包在外界看来都是宿主机发出的数据包,只有宿主机能区分哪些是自己的,哪些是虚拟机的,进而进一步地转发给虚拟机。

在 Bridged 模式下,计算机设备创建的虚拟机就像一台真正的计算机一样,它会直

接连接到实际的网络上,逻辑上上网与宿主机(计算机设备)没有联系。

在 Host-only 模式下,虚拟机的网卡会连接到宿主的 VMnet1 上,但宿主系统并不

为虚拟机提供任何路由服务,因此虚拟机只能与宿主机进行通信,不能连接到实际网络

上,即无法上网。

此处我们选择桥接模式,便于我们远程访问虚拟机,也不影响虚拟机上网。

另外,我们需要指定好桥接到宿主机的哪个物理网卡,我这边桥接到无线网卡

3、虚拟机的网卡配置

 

上网终端获取IP的方式通常由两种:dhcp和静态指定。

 

很多时候,我们不能要求非专业人员也懂网络知识。使用电子设备的人很多时候是IT小白,他们希望插上网线就能上网。这个时候如果你还要求他们懂得手动配置IP地址就显得有点不切实际了,而且在有大量人需要上网的场景下,每个终端或者手机都去手动配置显然是不太可能的。这时候就可以借助DHCP协议,网络设备可以充当dhcp服务器,接入网络的设备只要设置自动获取IP地址(这通常是所有设备默认的模式),就能够从dhcp服务器那里拿到一个可用的IP。

如何搭建DHCP服务器我们会在第二阶段为大家介绍。此处了解即可。

 

然而,对于一些需要对外提供服务的主机,使用dhcp显然是不科学的。因为每次通过dhcp获取到的地址未必是一样的,而且dhcp服务器配置有误,可能也会影响服务器的网络可用性。因此,服务器的IP往往都是静态指定的。

 

配置地址的方式有很多种,常见的有:

1、  ifconfig命令

2、  ip命令

3、  GUI工具(桌面环境)

4、  TUI工具(文字图像界面)

5、  编辑配置文件

 

一般来说,我们要永久地更改IP,会使用GUI/TUI/编辑配置文件的方式。通过命令更改IP只生效于内存,进程或系统重启之后便时效了,但是这一特性恰好方便了我们做一些测试操作,因此有时也会用到。本节介绍通过TUI工具修改IP。ifconfig命令家族与ip命令家族会在以后详述。

 

TUI修改网卡IP

 

其实很简单,若是centos7系统,则使用nmtui命令,centos6使用setup命令,和图形化界面没什么两样。

 

[root@localhost ~]# nmtui

ens33是网卡的名字

通过上下左右、回车空格来选定、填写相关信息即可

要注意勾选Automatically connect,否则改网卡默认不开启

OK之后会程序会自动修改配置文件

退出

重启网络服务即可,如下图,可以看到ens33网卡有了IP地址:192.168.0.110

如果是centos6使用service network restart,centos6和centos7使用了不同的服务管理机制,不过centos7兼容centos6,这些以后在讲服务和进程的时候会详说。

 

更多的人习惯通过更改配置文件去永久修改IP。

linux中一切皆文件。每一个网络接口都有一个对应的配置文件,网卡文件位于/etc/sysconfig/network-scripts/目录下,以ifcfg-开头

 

[root@localhost ~]# cd /etc/sysconfig/network-scripts/

[root@localhost network-scripts]# ls

ifcfg-ens33 ifdown-isdn     ifdown-tunnel  ifup-isdn    ifup-Team

ifcfg-lo    ifdown-post      ifup           ifup-plip    ifup-TeamPort

ifdown      ifdown-ppp       ifup-aliases   ifup-plusb  ifup-tunnel

ifdown-bnep ifdown-routes    ifup-bnep      ifup-post    ifup-wireless

ifdown-eth  ifdown-sit       ifup-eth       ifup-ppp     init.ipv6-global

ifdown-ippp ifdown-Team      ifup-ippp      ifup-routes  network-functions

ifdown-ipv6 ifdown-TeamPort  ifup-ipv6      ifup-sit     network-functions-ipv6

[root@localhost network-scripts]#

 

ifcfg-ensxxxxx这类名称的就是网卡文件,如此处的ifcfg-ens33。在centos6中,他们可能是ifcfg-eth0之类的样子,不过这不妨碍你认出他们。

你可以查看一下文件的内容,里面参数很多,可能会让你眼花缭乱,有些是不必要的,有些是很关键的。比较重要的参数有:

 

 

TYPE=Ethernet  指明设备类型为以太网

BOOTPROTO=none启动此设备时候的配置协议,可以是static(静态)、none(手动)、dhcp等

IPV6INIT=no是否初始化IPV6协议,这个按需选择,如果没有配置IPV6地址就写no

NAME=ens33 网卡名称,应该和文件后缀的名称相同

UUID=c0a6c4fd-309a-4c9f-8cae-0e5cbdaef313  设备的UUID

DEVICE=ens33  改配置所关联到的设备

ONBOOT=yes  开机是否自动启动

IPADDR=192.168.0.110  IPV4地址

PREFIX=24            掩码

GATEWAY=192.168.0.1  网关

DNS1=114.114.114.114  DNS地址,可以有多个,比如在下面再写一行DNS2=…

 

选项多的时候看起来反而很乱,里面有些选项我们可以删掉甚至不必关心。我用vi编辑器把配置精简一下如下:

 

TYPE=Ethernet

IPV6INIT=no

NAME=ens33

BOOTPROTO=none

DEVICE=ens33

ONBOOT=yes

IPADDR=192.168.0.110

PREFIX=24

GATEWAY=192.168.0.1

DNS1=114.114.114.114

 

然后重启网络服务

centos7使用:

 

[root@localhost network-scripts]# systemctl restart network.service

 

centos6使用:

 

service network restart

 

这里注意一点,对于网络服务的重启请慎重:一方面,重启网络服务必然会导致网络中断,另一方面,你要考虑重启网络服务之后还能否连接到linux主机。因为日常工作中大多数时候是使用远程连接协议去连接服务器的。

 

4、使用工具远程连接linux主机

 

现在,我们终于可以摆脱笨拙的linux终端,使用远程连接工具连接虚拟机了。

你可以尝试使用secureCRT或者xshell去登录系统。

使用这些工具可以更方便我们进行远程连接、复制黏贴命令行文本、传输数据,修改终端外观、审计日志等等。

这两款软件工具的使用相当简单,可以选一样自行摸索。

centos7默认会开启ssh服务。我们只需要在终端中输入IP地址和用户名密码即可连接。

如果连接不成功,就要考虑是哪里出了问题。

首先查看虚拟机是否可以和宿主机通信,我们可以使用ping命令来测试主机之间的连通性。ping后面的参数是宿主机的ip,如下图就表示通信正常,若无法通信,则不会有输出,按ctl+c终止ping动作。检查网卡桥接设置是否有问题。

若虚拟机可以ping通宿主机,宿主机不能ping通虚拟机,考虑是linux防火墙在作祟,我们此处可以暂时把防火墙关掉,系统管理部分会详细介绍iptables防火墙。

 

请关闭linux的网络防火墙。

 

在centos7中

 

[root@localhost ~]# systemctl stop firewalld.service

[root@localhost ~]# systemctl disable firewalld.service

 

在centos6中

 

service iptables stop

chkconfig iptables off

 

不论centos6或者7都可以用iptables -F来临时清除防火墙规则(只做测试用,重启防火墙进程后规则会恢复)

 

此时宿主机如果能ping通虚拟机,可以进一步尝试ssh连接。

如果ssh连接仍然无法进行,查看linux虚拟机中ssh进程是否正常运行:

 

[root@localhost ~]# systemctl status sshd

 

若不是running状态,则手动启用ssh服务。

 

[root@localhost ~]# systemctl start sshd

 

-----------------------------分割线----------------------

今天的文章有点长了,没办法,截不开。要是一个小知识点讲一节那就太琐碎了,请大家担待。

国庆大家过的好吗?给祖国母亲庆生完要以饱满地热情投入到建设祖国母亲的事业中去丫!

​要加油鸭~

 

关注本公众号获取最新更新

每周一、三、五稳定更新

这篇关于Linux入门真经-044-将linux主机接入TCP/IP网络的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/773965

相关文章

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

Linux挂载linux/Windows共享目录实现方式

《Linux挂载linux/Windows共享目录实现方式》:本文主要介绍Linux挂载linux/Windows共享目录实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录文件共享协议linux环境作为服务端(NFS)在服务器端安装 NFS创建要共享的目录修改 NFS 配

linux系统中java的cacerts的优先级详解

《linux系统中java的cacerts的优先级详解》文章讲解了Java信任库(cacerts)的优先级与管理方式,指出JDK自带的cacerts默认优先级更高,系统级cacerts需手动同步或显式... 目录Java 默认使用哪个?如何检查当前使用的信任库?简要了解Java的信任库总结了解 Java 信

Linux命令rm如何删除名字以“-”开头的文件

《Linux命令rm如何删除名字以“-”开头的文件》Linux中,命令的解析机制非常灵活,它会根据命令的开头字符来判断是否需要执行命令选项,对于文件操作命令(如rm、ls等),系统默认会将命令开头的某... 目录先搞懂:为啥“-”开头的文件删不掉?两种超简单的删除方法(小白也能学会)方法1:用“--”分隔命

Ubuntu向多台主机批量传输文件的流程步骤

《Ubuntu向多台主机批量传输文件的流程步骤》:本文主要介绍在Ubuntu中批量传输文件到多台主机的方法,需确保主机互通、用户名密码统一及端口开放,通过安装sshpass工具,准备包含目标主机信... 目录Ubuntu 向多台主机批量传输文件1.安装 sshpass2.准备主机列表文件3.创建一个批处理脚