对TCP/IP网络有了一个大概的、整体的认识之后,让我们来将linux主机接入到网络中。
我将我的网络环境与接入过程介绍给大家,并按需介绍一些我们还没有讲到的知识。
1、理清你的网络拓扑
将各个终端、各个网络设备之间的连接关系画出来,我们就可以得到一张网络拓扑。我们先来理解一下我们家里的电脑是如何接入公网的,以下面这个拓扑为例:
这是一个非常小的网络,相信你家中的拓扑和它并没有什么两样。家里有一个无线路由器,家里的电子设备上网时通过有线或者无线网络与无线路由器连接,他们分配到的都是一个私网地址(同在192.168.0.0/24网段)。无线路由器通过拨号上网,获取到一个公网IP,家里所有的设备虽然都是私有地址,但是通过modem上网时,都会被转换成一个公网地址,这样数据便能在公网中传输。
有人可能会有疑问,那么我们之前介绍的什么交换机、路由器都没用到吗?当然不是。家用网络中需要上网的设备极少,同时为了方便运行商计费,大都采用上面这种拓扑。其实家庭网络都处于网络的边缘节点,在这个拓扑中,从modem再向上无非就是一些路由交换的数据通信设备,当然,还有防火墙、负载均衡器、认证计费等设备在网络中工作。
事实上,家庭网络之外的网络比我们想象得要复杂得多得多。拓扑中网络设备与连线像蜘蛛网一样盘根复杂,下图是一张高度浓缩概括的企业网,如果将它展开到把每一台和设备每一根连线都画出来,也许我需要一个篮球场。
好在我们无需掌握网络的全貌。网络的新建与改造大多是由网络工程师或者网络管理员来做的。更多时候我们只是要把自己的客户端或者服务器接入现有的网络,使得我们自己能够访问网络资源或者能够被它人访问。比如,我们现在要让笔记本中的linux虚拟机上网,应该怎么做?回头看看第一个拓扑,我们能做的大概就是给linux分配一个192.168.0.0/24的地址,然后将其和无线路由器连接起来,让无线路由器转发linux主机发出或者接收到的数据包。可是虚拟机程序只是一个运行在宿主机上的软件进程,如何与现实设备连接?具体我们该怎么做呢?
2、虚拟机的网络连接模式
不要简单的认为这是个在自己电脑上实验才需要了解的过家家般的知识。事实上,在生产环境中,虚拟机的数量经常都比物理机多,甚至很多时候物理机只是变成了一个为虚拟机提供计算资源的黑盒子,真正对外服务的只有虚拟机。而软件化的虚拟机接入物理网络的方式基本也就是这么几种。
我们先将虚拟机关机,然后编辑虚拟机的设置
如上图,我们可以看到网络连接面板上,列出了几种模式。我们主要关注:虚拟机网络类型:Bridged(桥接)、NAT、Host-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
-----------------------------分割线----------------------
今天的文章有点长了,没办法,截不开。要是一个小知识点讲一节那就太琐碎了,请大家担待。
国庆大家过的好吗?给祖国母亲庆生完要以饱满地热情投入到建设祖国母亲的事业中去丫!
要加油鸭~
关注本公众号获取最新更新
每周一、三、五稳定更新