文章目录
- 基本网络配置
- 网卡命名规范
- 为什么要统一网卡名称
- 修改网卡名称
- 1.修改/etc/default/grub配置
- 2.执行生效命令和重启
- Ubuntu的网卡名修改
- 配置网络接口
- 网络接口配置
- DHCP自动分配
- 静态IP手动分配
- 网卡配置文件生效方法
- 验证文件是否生效
- 1.验证IP
- 2.验证网关
- 3.验证DNS
- VMware网卡工作模式
- 1.桥接模式(Bridged)
- 2.NAT模式(Network Address Translation)
- 3.仅主机模式(Host-Only)
- 网络配置命令
- ifconfig
- 启用/禁用网卡
- 统计网卡流量
- route
- 路由表的构成
- route add
- route del
- 实现静态路由
- 四台主机的配置
- 网络测试诊断工具
- tcpdump
- tcpdump -D
- 面试题
- nmap
- nmap -sP
基本网络配置
将Linux主机接入到网络中,需要做网络相关的配置,一般包括以下内容:
1.主机名
CentOS7之后使用"hostnamectl set-hostname xxxx",CentOS6不支持。
2.IP/netmask
3.路由:默认网关
跨网段通信时需要使用到网关,如果通信主机都在同一个网段就不需要配置网关,但其实每个主机都需要跨网段通信,比如访问互联网。
4.DNS服务器
主DNS服务器
次DNS服务器
第三个DNS服务器
网卡命名规范
为什么要统一网卡名称
CentOS6之前,网络接口使用连续号码命名: eth0、eth1等(从0递增),当增加或删除网卡时,名称可能会发生变化。
CentOS7以上版使用基于硬件,设备拓扑和设置类型命名,可以保持网卡名称的稳定,但是会导致网卡名称不连续,从而导致环境不统一不标准,不统一就不能标准化,不标准化就不能自动化。
如下截图所示,当我使用vmware新增一个网卡后,
CentOS6的网卡名称是连续的:eth0、eth1
CentOS8的网卡名称序号则跳跃很大:ens160、ens224
centos6 eth0/eth1
centos8 ens160/ens224
修改网卡名称
1.修改/etc/default/grub配置
在改文件的GRUB_CMDLINE_LINUX的末尾处增加以下内容
net.ifnames=0
2.执行生效命令和重启
执行以下命令
grub2-mkconfig -o /boot/grub2/grub.cfg
重启改虚拟主机
查看是否修改成功
ens160、ens224已经变成eth0、eth1了。
Ubuntu的网卡名修改
Ubuntu的网卡名修改和Centos修改几乎一样,只是配置生效的命令少了个2
grub-mkconfig -o /boot/grub/grub.cfg
配置网络接口
修改网卡名称之后,就得修改网络接口的各种配置了,可以理解为网卡名就是这网络接口的名称。
网络接口里包括网络接口的启用、IP 地址的分配、DHCP启用、网关和 DNS 的设置等。
网络接口配置
以下截图可以看出,网络接口的命令规范是“ifcfg-ens160”,ifcfg是interface config的缩写,短横岗后面是网卡名称(这个名称可以随意,但是在配置文件“DEVICE=”里一定要指定具体的网卡名)。
cd /etc/sysconfig/network-scripts/
DHCP自动分配
vim ifcfg-eth1
DEVICE=eth1
NAME=eth1
BOOTPROTO=dhcp
配置了ip地址为dhcp自动分配,VMware上设置的dhcp过期时间是30分钟,当租约时间过了一半时,设备会尝试向 DHCP 服务器发送请求以更新或续约这个 IP 地址的租约。如果 DHCP 服务器同意,租约时间将被延长。如果没有继续租约,过期之后dhcp会重新分配一个新的ip地址。可以使用“ip a”命令查看valid lft剩下的过期时间(最开始是1800秒,会不断递减)。
配置dhcp=static的主机,valid_lft 就是forever
静态IP手动分配
vim ifcfg-eth1
DEVICE=eth1
NAME=eth1
BOOTPROTO=static 选项为static、none、dhcp
IPADDR=192.168.10.178
PREFIX=24
GATEWAY=192.168.10.2
DNS1=114.114.114.114
DNS2=8.8.8.8
ONBOOT=yes 是否启用该网卡,默认就是yes
网卡配置文件生效方法
CentOS6
service network restart
CentOS7
systemctl restart network
CentOS8和Rocky
1.nmcli connection reload
2.nmcli connection up eth0
所有版本都通用的方法
reboot #如果机器上已经跑了很多服务了,不建议动不动就重启机器。
验证文件是否生效
1.验证IP
ip a
2.验证网关
route -n
3.验证DNS
cat /etc/resolv.conf
VMware网卡工作模式
1.桥接模式(Bridged)
在桥接模式下,虚拟机的网卡直接与物理网络适配器连接。这意味着虚拟机会作为网络中的独立设备存在,并可以获取与物理网络中其他设备一样的 IP 地址。这种模式适用于希望虚拟机与宿主机及网络中其他设备进行自由通信的场景。
桥接模式特点
桥接模式特点
1.虚拟机与宿主机在同一个物理网络中,可以与其他物理设备直接通信。
2.需要在物理网络中有足够的 IP 地址可用。
3.使用这种模式时,虚拟机的网络流量直接通过物理网络适配器传输。
2.NAT模式(Network Address Translation)
在NAT模式下,虚拟机通过宿主机的 IP 地址和网络连接访问外部网络。虚拟机的网络流量会经过宿主机的NAT引擎,因此虚拟机的 IP 地址对外部网络是不可见的。这种模式适合需要访问外部网络但不需要虚拟机作为独立设备出现的场景。
NAT模式特点
NAT模式特点:
1.虚拟机通过宿主机访问外部网络,虚拟机的IP地址在外部网络中不可见。
2.对于虚拟机之间或虚拟机与宿主机的通信通常没有限制。
3.适用于需要网络访问但无需分配额外IP地址的场景。
3.仅主机模式(Host-Only)
仅主机模式创建一个独立的虚拟网络,仅允许虚拟机与宿主机之间进行通信。在这种模式下,虚拟机无法访问外部网络,但它们可以与宿主机以及其他使用同一网络的虚拟机通信。
仅主机模式特点
仅主机模式特点特点:
1.虚拟机只能与宿主机通信,不能直接访问外部网络。
2.虚拟机与其他使用Host-Only网络的虚拟机可以相互通信。
3.适用于需要隔离虚拟机与外部网络通信的场景。
网络配置命令
ifconfig
ifconfig来自于net-tools包,ifconfig命令将会淘汰被弃用,取而代之的是ip addr和ip link
NOTE
This program is obsolete! For replacement check ip addr and ip link.
For statistics use ip -s link.
启用/禁用网卡
我新增了一个eth2的网卡
禁用eth2网卡
ifconfig eth2 down
启用网卡
ifconfig eth2 up
允许一个网卡配置多个ip
其实eth2:1就相当于是给eth2增加了一个别名
统计网卡流量
route
路由:路径的选择
路由表:导航,地图,不仅仅是路由器上有,在任何通信的主机设备上都有
路由表的构成
字段 | 描述 |
---|---|
Destination | 目的地网络或主机的IP地址。表示数据包将要发送到的目标。 |
Gateway | 下一跳的IP地址。数据包将通过该网关转发到目的地。如果是*,表示没有网关,直接传送到目的地。 |
Flags | 路由标志,表示这条路由的状态和属性。常见标志有U(路由已启用)、G(使用网关)、H(目标是一个主机)。 |
Metric花费 | 此值越小,优先级越高 |
Iface接口 | 如果要到达目标网络ID,需要从本机的哪个将数据包发出(例如eth0, wlan0等) |
route add
添加路由
route add [-net|-host|default] target [netmask Nm] [gw Gw] [[dev] If]
范例
#目标:192.168.1.3 网关: 172.16.0.1
route add -host 192.168.1.3 gw 172.16.0.1 dev eth0
#目标:192.168.0.0 网关:172.16.0.1
route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0
route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0
route add -net 192.168.8.0/24 dev eth1 metric 200
#默认路由,网关:172.16.0.1
route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1
route add -net 0.0.0.0/0 gw 172.16.0.1
route add default gw 172.16.0.1
route del
删除路由
route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
范例
#目标:192.168.1.3 网关:172.16.0.1
route del -host 192.168.1.3
#目标:192.168.0.0 网关:172.16.0.1
route del -net 192.168.0.0 netmask 255.255.255.0
实现静态路由
环境准备
四台主机:
A主机: eth0 NAT模式
R1主机: eth0 NAT模式, eth1仅主机模式
R2主机: eth0 桥接模式, eth1仅主机模式
B主机: eth0 桥接模式
四台主机的配置
配置A主机
ifconfig eth0 10.0.0.123/8
route add -net 10.0.0.0/8 dev eth0
route add default gw 10.0.0.200 dev eth0
配置R1路由
ifconfig eth0 10.0.0.200/8
ifconfig eth1 192.168.0.200/24
route add -net 10.0.0.0/8 dev eth0
route add -net 192.168.0.0/24 dev eth1
route add -net 172.16.0.0/16 gw 192.168.0.201 dev eth1
echo 1 > /proc/sys/net/ipv4/ip_forward #注意:想让Linux主机充当路由器功能,需要开启ip_forward配置
配置R2路由
ifconfig eth0 172.16.0.200/16
ifconfig eth1 192.168.0.201/24
route add -net 192.168.0.0/24 dev eth1
route add -net 172.16.0.0/16 dev eth0
route add -net 10.0.0.0/8 gw 10.0.0.200 dev eth1
echo 1 > /proc/sys/net/ipv4/ip_forward #同样开启ip_forward配置
配置B主机
ifconfig eth0 172.16.0.123/16
route add -net 172.16.0.0/16 dev eth0
route add default gw 172.16.0.200 dev eth0
网络测试诊断工具
tcpdump
网络数据包截获分析工具。支持针对网络层、协议、主机、网络或端口的过滤。并提供and、or、not等逻辑语句帮助去除无用的信息。
常用选项:
-nn: 禁用主机名和端口号解析,显示原始数字。
-c <数据包数量>:捕获指定数量的包。
-w <文件>:将捕获的数据写入文件。
-i <网络接口>:使用指定的网络截面送出数据包。
tcpdump -D
查看网卡
#不指定任何参数,监听第一块网卡上经过的数据包。主机上可能有不止一块网卡,所以经常需要指定网卡。
tcpdump
#监听特定网卡
tcpdump -i eth0
#监听特定主机,监听主机10.0.0.100 的通信包,注意:出、入的包都会被监听。
tcpdump host 10.0.0.100
#特定来源、目标地址的通信
tcpdump src host hostname
#特定目标地址
tcpdump dst host hostname
#如果不指定src跟dst,那么来源或者目标是hostname的通信都会被监听
tcpdump host hostname
面试题
抓包:源地址156主机ping目标152主机的包
tcpdump -i ens160 -nn icmp and src host 192.168.10.156 and dst host 192.168.10.152
#特定端口
tcpdump port 3000
#监听TCP/UDP,服务器上不同服务分别用了TCP、UDP作为传输层,假如只想监听TCP的数据包
tcpdump tcp
#来源主机+端口+TCP,监听来自主机10.0.0.100在端口22上的TCP数据包
tcpdump tcp port 22 and src host 10.0.0.100
#监听特定主机之间的通信
tcpdump ip host 10.0.0.101 and 10.0.0.102
#10.0.0.101和除了10.0.0.1之外的主机之间的通信
tcpdump ip host 10.0.0.101 and ! 10.0.0.1
详细示例
tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
nmap
扫描远程主机工具,比发送ICMP报文的ping命令的功能要强大很多。
官方帮助:https://nmap.org/book/man.html
安装nmap
nmap -sP
扫描制定一个IP地址范围
nmap -sP 192.168.10.1-168
使用grep过滤出up的ip地址
nmap -sP 192.168.10.0-160 | grep "Nmap scan" | cut -d" " -f5
使用sed过滤出up的ip地址
nmap -sP 192.168.10.0-160 | sed -n '/^Nmap scan/s/Nmap scan report for //p'