前言
将Linux主机接入到网络,需要配置网络相关设置 一般包括如下内容:
- 主机名
- IP/netmask
- 路由:默认网关
- DNS服务器 主DNS服务器 次DNS服务器 第三个DNS服务器
- centos网卡配置文件 /etc/sysconfig/network-scripts/ifcfg-*
网络配置命令
ifconfig
来自于net-tools包 此软件的详细可以使用rpm -qi 查看
[root@xyy ~]# rpm -qi net-tools
Name : net-tools
Version : 2.0
Release : 0.22.20131004git.el7
Architecture: x86_64
Install Date: 20202月28日 星期五4时14分40秒
Group : System Environment/Base
Size : 938986
License : GPLv2+
Signature : RSA/SHA256, 2017年08月11日 星期五 02时30分02秒, Key ID 24c6a8a7f4a80eb5
Source RPM : net-tools-2.0-0.22.20131004git.el7.src.rpm
Build Date : 2017年08月03日 星期四 17时17分34秒
Build Host : c1bm.rdu2.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://sourceforge.net/projects/net-tools/
Summary : Basic networking tools
Description :
The net-tools package contains basic networking tools,
including ifconfig, netstat, route, and others.
Most of them are obsolete. For replacement check iproute package.
!!#ffff00 ifconfig!! 显示当前系统中活跃的网卡
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 #up表示开区状态
inet 192.168.64.16 netmask 255.255.255.0 broadcast 192.168.64.255
inet6 fe80::20c:29ff:fe6c:b61a prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:6c:b6:1a txqueuelen 1000 (Ethernet)
RX packets 6104 bytes 395419 (386.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1364 bytes 102999 (100.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
!!#ffff00 ifconfig -a!! 显示所有的网卡信息
!!#ffff00 ifconfig!! +网卡名称
[root@xyy1 ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.64.16 netmask 255.255.255.0 broadcast 192.168.64.255
inet6 fe80::20c:29ff:fe6c:b61a prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:6c:b6:1a txqueuelen 1000 (Ethernet)
RX packets 6343 bytes 411862 (402.2 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1440 bytes 114011 (111.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
!!#ffff00 ifconfig 网卡 up!! 开启网卡 !!#ffff00 ifconfig 网卡 down!! 关闭网卡
[root@xyy1 ~]# ifconfig ens33 down
[root@xyy1 ~]# ifconfig -a
ens33: flags=4098<BROADCAST,MULTICAST> mtu 1500 #已经关闭状态
inet 192.168.64.16 netmask 255.255.255.0 broadcast 192.168.64.255
ether 00:0c:29:6c:b6:1a txqueuelen 1000 (Ethernet)
RX packets 6539 bytes 424432 (414.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1477 bytes 117457 (114.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
root@xyy1 ~]# ifconfig ens33 up #开启网卡
[root@xyy1 ~]# ifconfig #查看启动的网卡
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.64.16 netmask 255.255.255.0 broadcast 192.168.64.255
inet6 fe80::20c:29ff:fe6c:b61a prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:6c:b6:1a txqueuelen 1000 (Ethernet)
RX packets 6540 bytes 424492 (414.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1502 bytes 121272 (118.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
!!#ffff00 ifconfig 网卡名:0 ip!! 设置临时虚拟网卡
[root@xyy1 ~]# ifconfig ens33:0 192.168.64.20
[root@xyy1 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.64.16 netmask 255.255.255.0 broadcast 192.168.64.255
inet6 fe80::20c:29ff:fe6c:b61a prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:6c:b6:1a txqueuelen 1000 (Ethernet)
RX packets 6845 bytes 447826 (437.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1614 bytes 134033 (130.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@xyy1 ~]# ifconfig ens33:0 0 #取消网卡设置 使用down也可以关闭。
!!#ffff00 ifconfig 网卡 ip!! 可以临时修改网卡ip 加一块新的网卡在虚拟机 目前还没有ip地址
ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::9456:dda7:7d7f:905b prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:6c:b6:24 txqueuelen 1000 (Ethernet)
RX packets 6 bytes 360 (360.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 11 bytes 1650 (1.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@xyy1 ~]# ifconfig ens36 192.168.64.20/24 #临时添加IP地址
ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.64.20 netmask 255.255.255.0 broadcast 192.168.64.255
inet6 fe80::20c:29ff:fe6c:b624 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:6c:b6:24 txqueuelen 1000 (Ethernet)
RX packets 81 bytes 4860 (4.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 76 bytes 12834 (12.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
永久修改网卡配置
文件----/etc/sysconfig/network-scripts/ifcfg-ens33 ( 具体可以先到scripts目录查看自己机器对应的网卡名称)
vim /etc/sysconfig/network-scripts/ifcfg-ens36 #修改配置文件 按照格式
DEVICE=ens36 #自定义名称
NAME=ens36 #网卡名称 一定要对应
BOOTPROTO=static # 网卡获取地址模式 none dhcp static
ONBOOT=yes #开机启动
IPADDR=192.168.64.20 #ip地址 自定义
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.64.4 #网关
DNS1=8.8.8.8 #dns
wq
[root@xyy1 /]# systemctl restart network #重启网络服务
#如果重启服务有报错 可以使用systemctl status network.service" and "journalctl -xe 进行查看报错 进行处理
[root@xyy1 /]# ping 192.168.64.4 #ping通即修改配置成功。
PING 192.168.64.4 (192.168.64.4) 56(84) bytes of data.
64 bytes from 192.168.64.4: icmp_seq=1 ttl=128 time=0.560 ms
64 bytes from 192.168.64.4: icmp_seq=2 ttl=128 time=0.264 ms
64 bytes from 192.168.64.4: icmp_seq=3 ttl=128 time=0.156 ms
#可以重启后验证下是否会消失 进行验证是否是永久修改。
hostname
修改主机名 !!#ffff00 hostname!! 单独使用 查看主机名
[root@xyy1 ~]# hostname
xyy1
[root@localhost ~]# hostname
localhost.localdomain
!!#ffff00 hostname 主机名!! 临时修改主机名 重启会消失
[root@localhost ~]# hostname niubi
[root@localhost ~]# exit
[root@niubi ~]# #重新登录就会出现修改名称
[root@niubi ~]# reboot #重启
[root@localhost ~]#
!!#ffff00 vim /etc/hostname!! 将主机名添加该文件中 但是只有第一行生效
[root@localhost ~]# vim /etc/hostname
localhost.localdomain #这个删除 因为只有第一行生效
niubi
!!#ffff00 hostnamectl set-hostname 名字!! 永久修改主机名字
[root@localhost ~]# hostnamectl set-hostname niua
route
查看或设置主机中路由表信息 !!#ffff00 route -n!! 查看路由 可以查看到网关
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.64.4 0.0.0.0 UG 100 0 0 ens33
192.168.64.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
!!#ffff00 route del default!! 删除默认路由(正常人不会去操作这个了解即可) !!#ffff00 route add -net 网段 gw 网关!! 添加静态路由
root@localhost ~]#route add -net 192.168.64.0/24 gw 192.168.64.4
#给192.168.64.0/24段添加静态路由
!!#ffff00 route del -net 网段!! 删除路由
[root@localhost ~]#route del -net 192.168.64.0/24 #删除路由
永久添加路由 vim /etc/sysconfig/network-scripts/route-ens33 (ens33是对应网卡)
ss( socket statistics)
查看网络连接情况,主要用于获取 socket 统计信息,它可以显示和 netstat 命令类似的输出内容。 和netstat相比,优势在于它能够显示更多更详细的有关 TCP 和连接状态的信息,而且更快速更高效 常用选项
- t: tcp协议相关
- u: udp协议相关
- w: 裸套接字相关
- x:unix sock相关
- l: listen状态的连接
- a: 所有
- n: 数字格式
- p: 相关的程序及PID
- e: 扩展的信息
- m:内存用量
- o:计时器信息
- r: --resolve 把 IP 解释为域名,把端口号解释为协议名称。 dns 服务 尝尝组合使用 !!#ffff00 ss -natp!! 查看tcp !!#ffff00 ss -naup!! 查看udp相关
scp
远程同步
[root@xyy1opt]#scp /opt/passwd xyy@192.168.64.16:/opt/passwd
ethtool
查看对应网卡信息 !!#ffff00 ethtool -i 网卡!! 查看对应网卡信息
[root@xyy1 ~]# ethtool -i ens36
driver: e1000
version: 7.3.21-k8-NAPI
firmware-version:
expansion-rom-version:
bus-info: 0000:02:04.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no
tcpdump
抓包工具 首先了解下tcp建立连接和断开连接的过程 通常所说的三次握手 四次挥手。 状态详解:
CLOSED: 初始状态。
(三次握手)
LISTEN: 表示服务器端的某个socket处于监听状态,可以接受连接。
SYN_SENT: 这个状态与SYN_RCVD相呼应,当客户端socket执行连接时,它首先发送SYN报文,因此也随即它会进入到了SYN_SENT状态,并等待服务端的报文。SYN_SENT状态表示客户端已发送SYN报文。
SYN_RCVD: 这个状态表示服务端接收到了SYN报文,在正常情况下,这个状态是服务器端的socket在建立TCP连接时的三次握手会话过程中的一个中间状态,很短暂,基本 上用netstat ss 你是很难看到这种状态的,将三次TCP握手过程中最后一个ACK报文不予发送。因此这种状态 时,当收到客户端的ACK报文后,它会进入到ESTABLISHED状态。
ESTABLISHED: 表示连接建立成功。
(send data ......)
(四次挥手)
FIN_WAIT_1: 本质上FIN_WAIT_1和FIN_WAIT_2状态的真正含义都是表示等待对方的FIN报文。而这两种状态的区别是:FIN_WAIT_1状态实际上是当SOCKET在ESTABLISHED状态时,它想主动关闭连接,向对方发送了FIN报文,此时该SOCKET即进入到FIN_WAIT_1状态。而当对方回应ACK报文后,则进入到FIN_WAIT_2状态,当然在实际的正常情况下,无论对方何种情况下,都应该马上回应ACK报文,所以FIN_WAIT_1状态一般是比较难见到的,而FIN_WAIT_2状态还有时常常可以用netstat看到。
CLOSE_WAIT: 这种状态的含义其实是表示在等待关闭。怎么理解呢?当对方close一个socket后发送FIN报文给自己,你系统毫无疑问地会回应一个ACK报文给对方,此时则进入到CLOSE_WAIT状态。接下来呢,实际上你真正需要考虑的事情,是查看你是否还有数据发送给对方,如果没有的话,可以直接 close这个socket,发送FIN报文给对方,即关闭连接。所以你在CLOSE_WAIT状态下,需要完成的事情是等待你去关闭连接。
FIN_WAIT_2: 实际上FIN_WAIT_2状态下的SOCKET,表示半连接,也即有一方(比如client)要求close连接,但我(server)告诉对方,我暂时还有点数据需要传送给你,稍后再关闭连接。
TIME_WAIT: 表示收到了对方的FIN报文,并发送出了ACK报文。如果FIN_WAIT_1状态下,收到了对方同时带 FIN标志和ACK标志的报文时,可以直接进入到TIME_WAIT状态,而无须经过FIN_WAIT_2状态。
LAST_ACK: 这个状态还是比较容易好理解的,它是被动关闭一方在发送FIN报文后,最后等待对方的ACK报文。当收到ACK报文后,即可关闭连接。
tcpdump命令格式以及常用命令
tcpdump option proto dir type 选项 协议 数据的方向 抓取的数据类型 proto(协议):
- tcp udp icmp
- ip ipv6
- arp
dir(方向):
- src
- dst
- src and dst
type(类型)
- host 主机
- net 网段
- port 端口
- port range 端口范围
-a 将网络地址和广播地址转变成名字
-d 将匹配信息包的代码以人们能够理解的汇编格式给出
-dd 将匹配信息包的代码以c语言程序段的格式给出
-ddd 将匹配信息包的代码以十进制的形式给出
-D 显示所有可用网络接口的列表
-e 在输出行打印出数据链路层的头部信息
-f 将外部的Internet地址以数字的形式打印出来
-l 使标准输出变为缓冲行形式
-L 列出指定网络接口所支持的数据链路层的类型后退出
-n 不把网络地址转换成名字,即不做反向域名解析
-q 简洁地打印输出。即打印很少的协议相关信息, 从而输出行都比较简短
-t 在每行的输出中不输出时间
-tt 在每行的输出中会输出时间戳
-ttt 输出每两行打印的时间间隔(以毫秒为单位)
-tttt 在每行打印的时间戳之前添加日期的打印(此种选项,输出的时间最直观)
-v 产生详细的输出. 比如包的TTL,id标识,数据包长度,以及IP包的一些选项。同时它还会打开一些附加的包完整性检测,比如对IP或ICMP包头部的校验和。
-vv 产生比-v更详细的输出. 比如NFS回应包中的附加域将会被打印, SMB数据包也会被完全解码。
-vvv 产生比-vv更详细的输出。比如 telent 时所使用的SB, SE 选项将会被打印, 如果telnet同时使用的是图形界面,其相应的图形选项将会以16进制的方式打印出来
-c 在收到指定的包的数目后,tcpdump就会停止
-F 从指定的文件中读取表达式,忽略其它的表达式
-i 指定监听的网络接口
-r 从指定的文件中读取包(这些包一般通过-w选项产生)
-w 直接将数据报写入文件中,并不分析和打印出来
-T 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单 网络管理协议)
-s tcpdump 默认只会截取前 `96` 字节的内容,要想截取所有的报文内容,可以使用 `-s number`, `number` 就是你要截取的报文字节数,如果是 0 的话,表示截取报文全部内容。
-S seq ack 使用绝对序列号,而不是相对序列号
-Z 后接用户名,在抓包时会受到权限的限制。如果以root用户启动tcpdump,tcpdump将会有超级用户权限
常用命令
tcpdump -i eth0 #捕获指定接口(网卡)的数据包 可通过 netstat -i查看网卡设备
tcpdump -i eth0 -c 3 #捕获指定个数的数据包(3个数据包)
tcpdump -A -i eth0 #用ASCII码格式输出捕获的数据包
tcpdump -D #显示可用的系统接口
tcpdump -XX -i eth0 #用十六进制和ASCII码格式显示捕获的数据包
tcpdump -w tempDump.pcap -i eth0 #把捕获的数据包写入到一个.pcap后缀的文件中
tcpdump -r tempDump.pcap #读取捕获数据包文件的内容
tcpdump -n -i eth0 # 单个 n 表示不解析域名,直接显示 IP
tcpdump -i eth0 tcp #捕获TCP类型的数据包
tcpdump -i eth0 port 22 #捕获指定端口(这里是22)的数据包
tcpdump -i eth0 src 源ip地址 #捕获请求源是 192.169.12.101 的数据包
tcpdump -i eth0 dst 目标ip地址 #捕获指定目的IP的数据包
tcpdump -i eth6 dst host 目标ip地址 and port 8800 -w data.pcap #抓取指定网卡,指定IP和端口的数据包 并写入到data.pcap文件中
tcpdump host 192.168.12.101 and 192.168.1.201 -w out & #后台抓取两主机之间的数据
tcpdump -nn 单个 n 表示不解析域名,直接显示 IP;两个 n 表示不解析域名和端口。这样不仅方便查看 IP 和端口号,而且在抓取大量数据时非常高效,因为域名解析会降低抓取速度
bond
将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡 常用模式是0 1 3 6 mod=0 轮询模式 mod=1 主 -备份策略 mod=3 广播策略 mod=6 适配器适应性负载均衡
创建bonding设备的配置文件 详解: 1.手动添加一个网卡 使用ifconfig 查看网卡名称 信息
ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::4b08:ea80:dfd3:4fd2 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:7c:5b:ed txqueuelen 1000 (Ethernet)
RX packets 6 bytes 360 (360.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 11 bytes 1650 (1.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
2.创建配置文件ifcfg-bond0
code...
dhcp
DHCP(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。 功能:
- 保证任何IP地址在同一时刻只能由一台DHCP客户机所使用。
- DHCP应当可以给用户分配永久固定的IP地址。
- DHCP应当可以同用其他方法获得IP地址的主机共存(如手工配置IP地址的主机)。
- DHCP服务器应当向现有的BOOTP客户端提供服务。
DHCP有三种机制分配IP地址: 1.自动分配方式(Automatic Allocation) DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。 2.动态分配方式(Dynamic Allocation) DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。 3.手工分配方式(Manual Allocation) 客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。
工作原理:discover -offer -request -ack
DHCP作为Windows Server的一个服务组件不会被系统自动安装,还需要手动安装并进行必要的配置。 1.需要先关闭防火墙后进行安装yum install dhcp -y
[root@localhost ~]# systemctl stop firewalld.service #关闭防火墙
[root@localhost ~]# setenforce 0 #临时关闭selinux
[root@xyy1 ~]# yum install dhcp -y #安装软件dhcp
[root@xyy1~]# rpm -qc dhcp #查看软件dhcp配置文件
/etc/dhcp/dhcpd.conf #配置文件
/etc/dhcp/dhcpd6.conf
/etc/openldap/schema/dhcp.schema
/etc/sysconfig/dhcpd
/var/lib/dhcpd/dhcpd.leases
/var/lib/dhcpd/dhcpd6.leases
[root@localhost /]# cat /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example #提示去此路径下面查看配置文件
# see dhcpd.conf(5) man page
[root@xyy1 ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
#将对应的配置文本复制到配置文件下
[root@xyy1 ~]# vim /etc/dhcp/dhcpd.conf #编辑配置文件
#主要修改subnet这个局部配置
# This is a very basic subnet declaration.
subnet 10.254.239.0 netmask 255.255.255.224 {
range 10.254.239.10 10.254.239.20;
option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
}
2.添加网段 子网掩码 地址池 DNS 这些基本配置 3.开启dhcp服务 systemctl start dhcpd
[root@xyy1 ~]# systemctl start dhcpd
4、systemctl status dhcpd 查看服务进程 5.切换到虚拟机内部 修改网卡配置文件为dhcp获取 重启网络服务 systemctl restart network 后 ifconfig 查看网卡配置是否是地址池范围内的就可以。