1.关于网络的基础知识
(1)不同计算机是通过多点接入的方式连接在一起,采用的协议是:CSMA/CD:载波侦听多路访问/冲突监测。
CSMA/CD的工作原理为:发送数据前 先侦听信道是否空闲 ,若空闲,则立即发送数据。若信道忙碌,则等待一段时间至信道中的信息传输结束后再发送数据;若在上一段信息发送结束后,同时有两个或两个以上的节点都提出发送请求,则判定为冲突。若侦听到冲突,则立即停止发送数据,等待一段随机时间,再重新尝试。
其原理简单总结为:先听后发,边发边听,冲突停发,随机延迟后重发。
(2)网络是有网络位和主机位组成。
比如:
子网掩码:254.254.254.254=11111110.11111110.11111110.1111110
每段都是8位二进制数,总共有4段。
IPADDRESS:172.25.254.11/24=172.25.254.11/255.255.255.0
其中172.25.254是网络位,11是主机位
2.网络的设定
本文中所有关于动态ip的获取,需要用到dhcp服务,关于dhcp服务的开启,查看文章的第7小节,只有在dhcp服务开启后才能够获得动态ip。
(1)图形化
图形化有两种方式
nm-connection-editor
nmtui
第一种方式之前的博客中已经详细写过,第二中方法为:device后面写eth0
(2)文件的方式
a.动态ip设定
cd /etc/sysconfig/network-scripts
vim ifcfg-eth0
里面编写:
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
然后重启
systemctl restart nerwork
b.静态ip设定
cd /etc/sysconfig/network-scripts
vim ifcfg-eth0
可以同时使一个网卡拥有两个ip,文件里面编写:
DEVICE=eth0
BOOTPROTO=none
IPADDR0=172.25.254.100
PREFIX0=24
IPADDR1=1.1.1.100
NETMASK1=255.255.255.0
然后重启:
systemctl restart network
注意:ifcfg的文件在启动时都会被读取,应该删除除了ifcfg-lo和编辑的文件之外(一个网卡的情况下)的所有文件。
(3)命令的方式
命令 | 说明 |
---|---|
nmcli device show eth0 | 查看网卡信息 |
nmcli device statius eth0 | 查看网卡服务接口信息 |
nmcli device disconnect eth0 | 关闭eth0网卡 |
nmcli device connect eth0 | 启用eth0网卡 |
nmcli connection show | 查看网卡的链接 |
nmcli connection down westos | 关闭 |
nmcli connection up westos | 打开 |
nmcli connection reload | 重新加载(很少用) |
nmcli connection delte name | 以name的方式删除 |
nmcli connection delete uuid xxxx | 以uuid的方式删除 |
nmcli connection add type ethernet ifname eth0 con-name westos autoconnect yes
创建静态ip(static)
nmcli connection add type ethernet ifname eth0 con-name westos ip4 172.25.254.100/24
从静态修改为动态
nmcli connection modify westos ipv4.method auto
从动态修改位静态
nmcli connection modify westos ipv4.addresses 172.25.254.100/24 ipv4.method manual
注意:使用nmcli命令时,必须开启NetworkManager。
3.网络的设定工具
命令 | 说明 |
---|---|
ping ip | 检测网络是否通畅 |
ping -c 1 ip | ping1次(count) |
ping -w 1 ip | 等待1秒(wait) |
ping -c1 -w1 ip | ping1次等待1秒 |
ifconfig | 查看网络接口(interface) |
ifconfig device ip/24 | 设定ip |
ifconfig device down | 关闭(就会ping不通) |
ifconfig device up | 开启 |
ip addr show | 查看所有的网络接口 |
ip addr add ip/24 dev device | 设定ip(如果之前有ip的话,就会有两个ip) |
ip addr del ip/24 dev device | 删除ip |
ip addr flush device | 刷新(临时设定的ip就会消失) |
当重启网络后,设定的ip会自动失效。
注意:ifconfig和ip addr show 命令都是临时的。当网络重启(systemctl restart network)后,设定的ip就会自动消失。
4.非同网段之间的通信
实验目的:使1.1.1.100和172.25.254.75可以通信。
实验环境:
server(单网卡)ip:1.1.1.100
desktop(双网卡)ip:172.25.254.100(eth0),1.1.1.200(eth1)
真机:ip:172.25.254.75
当设置完成网络后,检测相同网段的ip可以直接通信。
实验原理:两块网卡都连接到内核上,具备内核路由功能(接到同一内核上的两个不同网段上的网卡可以直接通信),从一个网卡到另一个网卡上进行地址伪装,ip变成可以和目标直接通信的ip网段。
网关:路由器上和当前主机在同一网段的ip叫网关。
路由器:把不可以到达目的地的地址转换成可以到达目的地的主机叫路由器。
注意:双网卡不一定是路由器,路由器必须有数据转换策略。
实验步骤:
(1)把desktop变成路由器
a.打开路由功能
sysctl -a | grep ip_forward #查看内核的路由功能,如果net.ipv4.ip_forward=1,则表示路由功能开启,如果为0,表示路由功能关闭,需要打开路由功能。
编辑路由的配置文件:
vim /etc/sysctl.conf
编写:
net.ipv4.ip_forward=1
重启,使配置文件生效:
sysctl -p
b.打开地址伪装功能
systemctl status firewalld #确保火墙是开启状态
firewall-cmd --list-all #查看火墙的地址伪装功能是否开启
firewall-cmd --permanent --add-masquerade #打开地址伪装功能
firewall-cmd --reload #重新加载,确保修改生效
经过上面的两步,双网卡的机器变成了路由器。
(2)设置server的网关
设置网关有两种方式:全局网关和网卡网关
a. 网卡网关:当电脑上有双网卡时,在哪个网卡上设置网关,则哪个网卡生效。
vim /etc/sysconfig/network-scripts/ifcfg-eth0
在里面添加网关:
GATEWAY=1.1.1.200
重启网络:
systemctl restart network
查看:
route -n
这样就可以ping通172.25.254.75.
b.全局网关:适用于单网卡。
vim /etc/sysconfig/network #当网卡内没有设置网关时,该网关生效
和上面的步骤一样,重启网络,查看。
5.DNS的定义及设定
地址解析:域名到ip的转换
实验准备:使真机(172.25.254.75)成为一个路由器(第一点:有路由功能;第二点:可以实现地址伪装),在desktop上添加网关(172.25.254.75)。
在真机上:
在desktop虚拟机上:
实验检验:在desktop虚拟机上可以ping通baidu的域名(www.baidu.com),但是不ping通百度的ip地址(14.215.277.38)。
(1)本地解析(前提是ip和域名都知道)
vim /etc/hosts #本地解析文件
14.215.177.38 www.baidu.com
这样就可以访问百度了,但是由于只定义百度这个ip和域名的关系,所有其他的网站不能访问的。
但不能打开淘宝等其他网站:
(2)DNS 服务
dns服务器:为客户提供地址解析功能的主机叫dns服务器,dns服务器是已知的ip。
vim /etc/resolv.conf ##dns指向文件
里面编写:
nameserver 114.114.114.114
(3)解析优先级的策略调整
默认情况下,本地解析的优先级高于DNS服务器的解析。
为了测试,将/etc/hosts中www.baidu.com 的ip修改为172.25.254.75。
在访问www.baidu.com时,会优先访问本地中的172.25.254.75,而不是百度的ip:14.215.177.38
为了使DNS的优先级高于本地解析,编辑文件
vim /etc/nsswitch
修改第39行:
hosts: dns files
再访问百度时,优先访问真正百度的ip。
6.固定DNS指向
(1)静态网络
紧接着上面的实验,当重启网络后(systemctl restart network 或者重启NetworkManager),dns会消失。
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DNS1=114.114.114.114
注意:DNS后面必须有数字。
重启网络:
systemctl restart network
(2)动态网络
编辑文件:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=dhcp
PEERDNS=no
重启网络,然后再编辑:
vim /etc/resolv.conf
nameserver 114.114.114.114
7.DHCP服务器的搭建和配置
(1)DHCP的搭建
DHCP服务用来获取动态的ip地址,当DHCP服务关闭时,就不能获取动态ip。如果一个服务上没有dhcp,需要在安装dhcp。
可以直接图形化安装dhcp的包,如果安装失败,可以使用yum源进行安装。yum的配置在后面的博客中会编写。
安装成功后,可以使用:
systemctl status dhcpd
DHCP的主配置文件在:/etc/dhcp/dhcpd.conf
复制模版文件来覆盖原复制文件,并修改该配置文件,删除27,28行,并且35行以后的可以全部删除,注释也可以删除。然后对该文件剩下的部分进行修改。
开启dhcp服务:
systemctl start dhcpd
然后在另一台可以和该机可以相互通信的主机上测试:
设置该机的BOOTPROTO为dhcp,重启网络后,就可以获得ip地址。
也可在日志中查看: