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

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

浅谈主机加固,六种有效的主机加固方法

在数字化时代,数据的价值不言而喻,但随之而来的安全威胁也日益严峻。从勒索病毒到内部泄露,企业的数据安全面临着前所未有的挑战。为了应对这些挑战,一种全新的主机加固解决方案应运而生。 MCK主机加固解决方案,采用先进的安全容器中间件技术,构建起一套内核级的纵深立体防护体系。这一体系突破了传统安全防护的局限,即使在管理员权限被恶意利用的情况下,也能确保服务器的安全稳定运行。 普适主机加固措施:

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联