「Linux」网络配置大揭秘
从 Linux 的安装,基本命令的使用,常规 Linux 的安全策略到 Linux 常见的目录结构,今天我们看看 Linux 的网络
"秀才不出门,便知天下事",你是秀才你试试。
没有网络,我们可能停留在看电视,跳皮筋的年代,我还真是会跳皮筋
为了让我们下载软件更加的顺畅,速度更快,最快速度白嫖资源,不得学习下配置网络
----
配置 Linux 网络
既然要配置网络,我们先看看网络的配置文件在哪里,以及相关的配置有哪些,分别代表是什么意思
打开网络配置文件
BOOTPROTO = static,表示启用了静态 IP 地址,默认为 none
NAME = eth0,与网卡配置文件对应的一个标签,如果为 eth0 则配置文件是 ifcfg-eth0
UUID = xxxx,网卡唯一设备标识,系统自动得生成
DEVICE = XXX,网卡设备名称,是物理设备标识
IPADDR0 = XXX,表示设置 IP 地址。这里注意后面的数字,在 Centos7 以后可以一个网卡配置多个 IP 地址
PREFIX0 = 24,设置子网掩码,这里设置子网掩码的方法和之前的版本也不一样,24 代表是 255.255.255.0
Getway = XXX,网关地址,什么是网关线面会详细阐述
知道配置文件每一行代表的含义以后,就可以根据自己的需求进行配置了,记得配置完成以后重启网络,如果是 Centos7,那么命令将是下方的命令
本地回环配置文件(/etc/sysconfig/network-scriptis/ifcfg-lo)
第一行 Device:网络的设备名
第二到四行:lo 接口的 IP 地址,子网掩码,网络号
第七行:lo 接口的广播地址
第八行:开机启动 lo 接口
第九行:将 lo 接口设置为本地回环地址
DNS 配置文件 /etc/resolv.conf
这里的「namespace」 表示域名服务器,后面的 IP 地址就是 DNS 服务器,当用户在 Linux 中访问某个域名的时候,就需要靠这些 DNS 服务器来解析
设置主机和 IP 绑定配置文件 /etc/hosts
为什么会说说这个配置文件呢,因为当在部署集群的时候,我们需要在此配置,方便我们不用每次都是输入其他机器得 IP 进行访问,而是直接使用用户名即可。
类似于 Windows 下得 hosts 文件,我们看看 Linux 中的 /etc/hosts 的内容
从上面我们发现,hosts 文件中的每一行内容为一个主机,每一行由三个部分组成,其中每个部分按空格隔开。
多说一句,以后大家如果需要分析一些日志文件的时候,一定要清楚是按照什么分割的,免得浪费了时间却还没有处理好问题
第一部分:网络 IP 地址
第二部分:主机名域名
第三部分:主机名
路由
我和你的通信需要网络的传输,这个传输过程中可以说经历了九九八十一难,看到此,是不是点个赞让我安稳下心灵,停,不是现在拉下去点赞,晚点晚点
就是这样穿过无数的节点,无数的路由器才将信息传递到你的屏幕
那么为了保证将信息传递给你,在数据传输到达某一个网络节点后,这个网络节点需要根据一个「约定」将数据传送到另一个网络节点,然后再传输到下一个节点,依此类推到达目标主机。这里的每个网络节点就是「路由」,所谓的约定即路由规则
那么不使用路由就不行?
举个例子,我给你寄几箱猕猴桃,我的地点在北京,到了快递点,我需要写你的地址,比如是"成都市高新区马保国镇 222 单元",通常邮寄点不会直接帮你送到指定的地址,而是可能先到成都,然后成都这边揽收再送到马保国镇,这种就是采用分发得策略来提升效率。
这里的寄送系统就是一个大型的网络系统,每个寄存点主要负责快递的传送任务,只要快递到达寄存点,就得准确,迅速将信件投递到下一个寄存点处,这里的快递就是通过「路由机制」准确,快速的寄送到目的地的。
有哪几种路由呢
静态路由
静态路由是系统管理员通过 route 手工加入的静态路由规则
动态路由
动态路由是不同机器彼此经由程序相互交换路由规则而来的。如果网络发生了变化,路由软件会重新计算路由并发出新的路由更新信息
路由如何配置
在 Linux 中,通过 route 命令配置静态路由信息,
常用的选项我将其总结如下
查看当前路由表信息
从上面我们可以知道通过 route -n 输出的为纯 IP 地址,而 route 输出的信息就会包含主机名信息,下面说说选项的含义
Destination:网络号,即 network 的意思
Gateway:连出去的网关地址
Flag
- U:代表路由启动勒
- H:代表目标路由是一部主机而非网络
- R:代表使用动态路由的时候,回复路由信息标识
- G:表示需要通过外部的主机来转递数据
- M:表示路由已经修改了
----
网关是什么
不知道大家有没有经历过在宿舍买台交换机,然后几台机器组成局域网打游戏狂欢的日子
那个时候苦逼呀,只能打局域网的游戏,不能上网,时代在进步,科技在腾飞呐,学校就给每个宿舍分配一一个 IP 地址,这个 IP 地址是学校的网管部门负责,宿舍网的 IP 通常是 192.168.1.x,校园网的 IP 地址假设是 10.10.x.x,
如果此时你想在宿舍上网,那该怎么办?
第一种方案:舍友们众筹买一张网卡,然后插入到 A 同学的电脑上,一张网卡的线插在宿舍的交换机,另一张网卡插在校园网的网口,此时就可以上网,但是 A 同学电脑就贡献出去了,只能看你们打游戏,他自嗨,多可怜
第二种方案:买个路由器,这个路由器有内网网口和外网网口,外网网口插在校园网的网口上面(当然配置的时候根据网管部门所要求的),内网网口连接上宿舍的所有电脑,这样的话,路由器就得一直都开着
宿舍长可以上网了,其他人的电脑要上网还需要配置下各自的网卡,通常是 DHCP 默认配置,在配置的时候你就会发现有个叫做 Gateway 的东西,这就是网关,要了解网关不得不去了解 MAC 头和 IP 的头部
MAC 和 IP 头部有啥?
网卡自出生那天起,就带上了这个地址,那么问题来了,为啥不使用 MAC 地址进行通信呢?因为靠 MAC 地址没法定位准确,它更像身份证,作为唯一标识。举个例子,我住在“成都市高新区 B 座 5 楼”,有个女娃儿可以问路人:“成都市高新区 B 座在哪里”,路人可以给他比较明确的地点,但是如果她问:“你知道小蓝(身份证)在哪儿吗”,很明显无从得知,说不定以为"你是个傻子吧"。
你可以找到 IP 地址(成都市高新区 B 座 5 楼),但是可能还是找不到我,这个时候假设你可能去服务台问(其实是靠吼,身份证为 XXX 的是哪位),这个时候我听到自然就会答应,不过你如果在北京喊,就听不见了,所以 MAC 地址实际上通信范围是也是比较小的,局限在一个子网里。它的头部结构都有哪些字段?
图中的类型大部分都是 IP 数据包,IP 里面可能包含了 TCP,HTTP 等,这都是封装的事儿了。拥有了这个 MAC 地址,就会在链路上广播,MAC 的网卡才发现这个包原来是给它的,网卡将包收进来,打开 IP 包,发现 IP 地址是自己的,再打开 TCP 包发现端口是自己,还是 80,正好就是目前监听的端口,开启摸鱼聊天模式
IP 头部都有哪些字段?
上述 IP 头部的详细信息就先不说了,这里主要述说源 IP 和目标 IP 地址,当我们要访问一个 IP 地址的时候,需要判断这个目标 IP 是否和当前的 IP 地址在同一个网段
怎么判断是否在同一个网段
此时涉及到网络的 CIDR 和子网掩码了。我们通常将 IP 地址比喻为门牌号码,既然是门牌号码,如果一样了就会冲突。假设大家都将地址设置为三单元 110,那快递小哥就压根找不到地方,所以,我们使用电脑的时候,有时出现上不了网了,很可能是 IP 冲突了哟。
10.120.55.73,这就是一个 IP 地址。按照"."分割,其中每个部分占 8 个 bit ,所以 IP 地址为 32 位,这样的话 IP 地址一共就有约 42.9 亿个,很明显在现在看来不够用,但是当初设计者哪知道现在这么多计算机呀,于是出现了 IPV6,128 位,至于够不够用还得看看国家的生育政策了
不够用就算了,还将这些 IP 地址分为了 5 类
对于 A,B,C 这三类,分为了两部分,前面一部分为网络号,后面一部分为主机号,还是比较好理解。假设大家都是 3 单元 110,小蓝是东华小区的 110,而小李是万科小区的 110
那么这几类,分别代表了多少的主机数量呢
从上图我们发现 C 类的地址 254 个,B 类地址 65534,这放在一个网络下面岂不是太浪费,有没有折中的方法呢
CIDR
CIDR 叫做无类型域间选路。将上面 32 位的地址分为两部分,分别为网络号和主机号。比如地址 10.120.55.73/24,斜杠后面的 24 表示在 32 位中,前面的 24 为网络号,后面的 8 位为主机号
如何得到网络号
将子网掩码和 IP 地址进行 AND 运算就可得到网络号。此时子网掩码为 255.255.255.0,255 转换为二进制为 1,1 和任何的数进行 AND 运算都是原来的数值,所以前面三个数不变,为 10.120.55。后面一个数为 0,0 和任何数进行 AND 运算为 0,所以最后一个数为 0,合计后就是 10.120.55.0,这就是网络号
什么是私有地址和公有地址呢
我们平时自己的电脑或者办公室里,一般都是私有 IP 地址,因为这些 IP 地址由相关组织的内部管理,自己分配使用,所以我的私有 IP 地址可能和你的是一样的
这就好比我所在的小区是 3 栋,你的小区也是 3 栋。但是一旦走出了小区,就需要使用共有 IP 地址了。就像建设路 1000 号,这是相关部门划分的,不能两个小区都叫做建设路 1000 号
怎么获取公有 IP 地址呢
这就需要花钱了,毕竟是共有的,比较香且有限制。假设你要做一个网站,全国人民都可以访问,就需要买个 IP 地址了
在这五类地址中,还差一个 D 类组播地址。从名字可以看出,这类地址属于一个组的机器都能收到。就仿佛 QQ 群,发个消息大家都能看到,至于回复不回复另说
好了,说了这么多,回到网关部分
如果你想和你的室友通信,就和网关没有关系,因为你们在同一个网关,只需要通过 ARP 获得 MAC 地址,然后将源 MAC 和目的 MAC 放入到 MAC 头中发出去即可
如果不是在同一个网段,你想和你的异地女友聊天,这个时候会先访问默认网关 Gateway,这个过程和发往同一个网段的其他机器又是一样的,将源地址和目的地址放入 IP 头,通过 ARP 获取网关 MAC 地址,将源 MAC 和网关 MAC 放入 MAC 头部发送出去,网关所在端口接受以后下一步操作就看网关了
网管呢可以当作是路由器,路由器是一个物理设备,假设有 5 个网口,五个网口相当于五条路,分别连接五个局域网,每条路的 IP 地址都和局域网的 IP 地址是同一个网段,每条路都是它握住的那个局域网的网关
简单来说:如果一个包想发到其他的局域网,都会选择一条路 ,然后根据路由算法,选择另一条路加上 IP 头和 MAC 投扔出去
到底选择哪一条路?
静态路由
静态路由比较简单,直接在路由器上配置规则,规则为:假设访问 A 网站,就从 2 号口出去,下一跳为 IP2;如果想访问 B 网站,则从 3 号口出去,下一跳为 IP3,随后缓存在路由器中
那么 IP 头和 MAC 头,需要修改哪些内容呢
-----
常见的网络连接方式
桥接的基本原理
桥接默认使用 VMnet0,Bridge 桥当作一台机器,这个机器有两块网卡分别处于两个局域网中,使用"桥"连接,这样局域网 A 和 B 就无缝的连接起来,桥接的时候 VMWare 网卡和物理网卡处于同一个 IP 网段
Vmvare 桥是同样的原理,Vmvare 软件会虚拟一块网卡,当使用桥接的时候,Vmvare 会虚拟一块网卡和真正的物理网卡进行桥接,这样的话,发送到物理网卡的所有数据包就到了 Vmvare 虚拟机
而由 Vmvare 发出的数据包也会通过桥从物理网卡那端发出,所以,如果物理网卡可以上网,那么桥接的虚拟网卡也基本上没问题
联网的方式
桥接的方式是最简单的,主机怎么联网,那么虚拟机就怎么联网,将虚拟及当作局域网中的一台电脑就好了
注意:主机网卡可以访问 internet 的局域网的时候,虚拟机才会通过 Bridge 访问 internet
Nat
Nat 的基本原理
NAT 的全称是 Network address translate,NAT 应用在 Internet 网关和路由器上。比如 192.168.0.123 这个地址需要访问 Internet,数据包会先到路由器或网关,然后网关和路由器会有一个能访问 Internet 的 IP 地址,这样的网关和路由器在收到数据包后,对数据包的 IP 进行更改(NAT),这样就可以让私有网段的主机能够顺利访问 Internet,这个技术解决了 IP 稀缺的问题,同样的私有 IP 可以网关 NAT 上网
那么对于 Vmvare 是同样的道理,它会在虚拟机和主机之间伪造一块网卡,这个网卡和虚拟机的 IP 出于同一个地址段,网卡和主机的网络接口进行 NAT,意味着虚拟发出的每一块数据包都会经过虚拟网卡,然后 NAT,从主机的接口发送出去
注意:虚拟网卡和虚拟机处于同一个地址段,虚拟机和主机处于不同的地址段,主机相当于虚拟机的网关,所以虚拟机能够 ping 通主机的 Ip,但是主机 Ping 不同虚拟机 Ip、
联网方式
动态 ip 地址
这个方式简单,直接将虚拟机设置成使用 DHCP 方式上网,Linux 开启 DHCP 服务即可。注意:在 vmvare 中,需要在编辑-----虚拟网络设置中,将 DHCP 开启,默认为关闭
静态 IP 设置
如果不想使用 DHCP,也可以手动设置:IP 设置与 vmnet1 同网段,网关设置成 vmnet8 的网关(在“虚拟网络设置”里的 Net 选项卡里能找到 Gateway)通常是 xxx.xxx.xxx.2。 子网掩码设置与 VMnet8 相同(设置好 IP 地址后,子网掩码自动生成)
DNS 设置与主机相同。
例如:主机 IP 是 10.70.54.31,设置虚拟机 IP 为 10.70.54.22。Netmask,Gateway,DNS 都与主机相同即可实现 虚拟机 —主机 虚拟机<---->互联网 通信。
提示:使用 NAT 技术,主机能上网,虚拟机就可以访问 Internet,但是主机不能访问虚拟机
host--only 的方式
这种方式:只需要主机和虚拟机通信,不让虚拟机访问 Internet。同样是两种方式
动态 IP 地址
此处和上面一样,开启 DHCP 以后,虚拟机就可以自动的获取 IP 地址和 DNS 了
静态地址
将 IP 地址设置为和 VM 一个网段,网关设置为 VMnet1 的网关,
也可以手动设置,将虚拟机 IP 设置与 VMnet1 同网段,网关设置成 VMnet1 的网关相同,其余设置与 VMnet1 相同,DNS 设置与主机相同。
举个例子
例如:VMnet1 IP:172.16.249.1 Gateway :172.16.249.2 。那么虚拟机
IP:172.16.249.100 Gateway: 172.16.249.2。这样、 虚拟机<—>主机 可以通信,但是、 虚拟机<—>互联网 无法通信
提示:Host-only 技术只用于主机和虚拟机互访,于访问 internet 无关。
好了,今天就到了这了,拜拜
版权声明: 本文为 InfoQ 作者【我是程序员小贱】的原创文章。
原文链接:【http://xie.infoq.cn/article/1217af16eaa486389585ff493】。文章转载请联系作者。
评论