CentOS 7网络属性配置:
传统命名机制:以太网eth[0,1,2,...],wlan[0,1,2...]
可预测功能的命名机制:
udev支持多种不同的命名方案:
Firmware ,拓扑结构
在对待设备文件这块,Linux改变了几次策略。早期,设备文件仅仅是一些带有适当的属性集的普通文件,它由mknod命令创建,文件存放在/dev目录下。后来,采用了devfs,一个基于内核的动态设备文件系统,他首次出现在2.3.46 内核中。devfs创建的设备文件是动态的。但是devfs有一些严重的限制,从 2.6.13版本后移走了。目前取代他的便是udev--一个用户空间程序。
在工作中多次碰到这样的要求:linux系统中原来有一块SCSI硬盘,系统分配的设备文件是/dev/sda。现在新增加了一个外置的磁盘阵列,通过SCSI卡连接。但接上这个磁盘阵列后,/dev/sda变成了磁盘阵列的硬盘了,原来内置的SCSI硬盘变成了 /dev/sdb,现在希望将设备文件固定下来。过去,这个比较麻烦,因为/dev/sda等文件都是linux内核自动分配的。很难固定下来,除非你更改加载SCSI卡驱动程序的顺序,让内置硬盘连接的SCSI卡比外接磁盘阵列连接的SCSI卡的驱动模块先加载到内核,这样就能保证/dev/sda总是指向内置的硬盘。但这种解决方法毕竟不太完美,而且对于其他的即插即用设备,如USB设备等都不适用。
udev是一种工具,它能够根据系统中的硬件设备的状态动态更新设备文件,包括设备文件的创建,删除等。设备文件通常放在/dev目录下。使用udev后,在/dev目录下就只包含系统中真正存在的设备。udev能够实现所有devfs实现的功能。但udev运行在用户模式中,而devfs运行在内核中。据称:devfs具有一些不太容易解决的先天缺陷。
udev的工作过程:
1. 当内核检测到在系统中出现了新设备后,内核会在sysfs文件系统中为该新设备生成一项新的记录,一般sysfs文件系统会被 mount到 /sys目录中。新记录是以一个或多个文件或目录的方式来表示。每个文件都包含有特定的信息。
2. udev在系统中是以守护进程的方式udevd在运行,它通过某种途径,检测到新设备的出现,通过查找设备对应的sysfs中的记录得到设备的一些信息。
3. udev 会根据/etc/udev/udev.conf文件中的udev_rules指定的目录,逐个检查该目录下的文件,这个目录下的文件都是针对某类或某个设备应该施行什么措施的规则文件。udev读取文件是按照文件名的ASCII字母顺序来读取的,如果udev一旦找到了与新加入的设备匹配的规则,udev 就会根据规则定义的措施对新设备进行配置。同时不再读后续的规则文件。
(1)网卡命名机制
systemd对网络设备的命名方式:
1)如果Firmware或BIOS为主板上集成的设备提供的索引信息可用,且可预测则根据此索引进行命名,例如:eno1;
2)如果Firmware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,例如:ens1;
3)如果硬件接口的物理位置信息可用,则根据此信息进行命名,例如enp2s0;
4)如果用户显示启动,也可根据MAC地址进行命名,enx2387aadc56;
5)上述均不可用,则使用传统命名机制;
上述命名机制中,有的需要biosdevname程序的参与;
(2)名称组成格式
en:ethernet
wl:wlan,无线局域网设备
ww:wwan,无线广域网设备
名称类型:
o
s
x
p
网卡设备的命名过程:
第一步:
udev,辅助工具程序/lib/udev/rename_device,根据 /usr/lib/udev/rules.d/60-net.rules的指示,查找/etc/sysconfig/network-scripts/下的ifcfg-文件,如果HWADDR相同,将其中的DEVICE值作为网卡的名字。
第二步:
biosdevname会根据/usr/lib/udev/rules.d/71-biosdevname.rules所定义的规则进行命名
第三步:
通过检测网络接口设备,根据/usr/lib/udev/rules.d/75-net-description.rules
ID_NET_NAME_ONBOARD,ID_NET_NAME_SLOT,ID_NET_NAME_PATH
对于CentOS6,是在/lib/udev/rules.d/目录下。
回归传统命名方式:
1)编辑/etc/default/grub配置文件
GRUB_CMDLINE_LINUX="net.ifnames=0 rhgb quiet"
2)为grub2生成其配置文件
grub2-mkconfig -o /etc/grub2.cfg
3)重启系统
地址配置工具:nmcli
0.8.1版本:nmcli [ OPTIONS ] OBJECT { COMMAND | help }
1.18.8版本:
nmcli [OPTIONS...] {help | general | networking | radio | connection | device |
agent | monitor} [COMMAND] [ARGUMENTS...]
[root@localhost rules.d]# nmcli help
Usage: nmcli [OPTIONS] OBJECT { COMMAND | help }
OPTIONS
-a, --ask ask for missing parameters
-c, --colors auto|yes|no whether to use colors in output
-e, --escape yes|no escape columns separators in values
-f, --fields |all|common specify fields to output
-g, --get-values |all|common shortcut for -m tabular -t -f
-h, --help print this help
-m, --mode tabular|multiline output mode
-o, --overview overview mode
-p, --pretty pretty output
-s, --show-secrets allow displaying passwords
-t, --terse terse output
-v, --version show program version
-w, --wait set timeout waiting for finishing operations
OBJECT
g[eneral] NetworkManager's general status and operations
n[etworking] overall networking control
r[adio] NetworkManager radio switches
c[onnection] NetworkManager's connections
d[evice] devices managed by NetworkManager
a[gent] NetworkManager secret agent or polkit agent
m[onitor] monitor NetworkManager changes
nmcli general {status | hostname | permissions | logging} [ARGUMENTS...]
nmcli networking {on | off | connectivity} [ARGUMENTS...]
nmcli connection {show | up | down | modify | add | edit | clone | delete |
monitor | reload | load | import | export} [ARGUMENTS...]
modify [--temporary] [id | uuid | path]
setting.property:
ipv4.address
ipv4.gateway
ipv4.dns
ipv4.method
nmcli c modify ens33 -ipv4.address 192.168.138.139/24 删除IP
添加网关:[root@localhost rules.d]# nmcli c modify ens33 ipv4.gateway 192.168.138.2
错误:修改连接 "ens33" 失败:ipv4.gateway: 如果没有配置地址,网关会无法设置
[root@localhost rules.d]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=4c3624ae-a8b2-4dbc-8aec-5e475bc122c8
DEVICE=ens33
ONBOOT=yes
PEERDNS=no
PEERROUTES=no
[root@localhost rules.d]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=4c3624ae-a8b2-4dbc-8aec-5e475bc122c8
DEVICE=ens33
ONBOOT=yes
PEERDNS=no
PEERROUTES=no
IPADDR=192.168.138.139
PREFIX=24
GATEWAY=192.168.138.2
[root@localhost rules.d]#
出现错误,IP地址配的是dhcp,查看/etc/sysconfig/network-scripts/ifcfg-ens33,如上,然后增加了一个IP:192.168.138.139/24,然后再增加网关,就成功了。
nmcli device {status | show | set | connect | reapply | modify | disconnect |
delete | monitor | wifi | lldp} [ARGUMENTS...]
主机名称配置工具:hostname与hostnamectl命令:
网络客户端工具:lftp,ftp,lftpget,wget
安装:yum install lftp
lft [-p port] [-u user [, password]] server
在CentOS7下访问windows下的ftp服务器时,中文出现乱码,登录后进行如下设置(CentOS7的LANG=zh_CN.UTF-8):
lftp [email protected]:/> set ftp:charset gbk
lftp [email protected]:/> set file:charset utf8
下载文件,使用get(下载单个文件),或mget(同时下载多个文件),mget *,下载所有文件
lftpget URL
ftp已落后,不建议使用了。
wget :
wget [option]... URL...
-q:静默模式
-c:续传
-O:保存位置(另存为别的名字)
--limit-rates=:指定传输速率
nmap,ncat,tcpdump
nmap:“Network Mapper(网络映射器)”。是一款网络探测和安全审核的工具。目标是快速地扫描大型网络。它使用原始IP报文来发现网络上有哪些主机,主机提供什么服务(应用程序名和版本),服务运行在什么操作系统(包括版本信息), 它们使用什么类型的报文过滤器/防火墙,以及其它功能。
用法:nmap [Scan Type(s)] [Options] {target specification}
其中,target Specification用于指定扫描的目标,可以是一个主机或是一个网络,主机可以使用IP或主机名等。如指定一个IP:192.168.138.137,指定一个名字,如:www.baidu.com,指定一个网络,如:192.168.138.0/24,使用IP地址,四个数字部分都可以使用范围表示:如192.168.138.1-254,代表扫描192.168.138.1到192.168.138.254,或者192.168.138-140.1-254。使用逗号是列出多个值,如192.168.138.1,3-5,代表192.168.138.1,192.168.138.3,192.168.138.4,192.168.138.5.
选项:
-sL:仅仅列出要扫描的目标列表
-sP:ping扫描,仅仅确定主机是否在线
从运行报表结果可以看到,只报告在线的主机及其MAC地址,没有其他信息。
-p
-A:激烈扫描模式,会扫描很多信息,包括操作系统、端口、服务、等等。
这里只是入门,nmap更详细的使用需要以后使用中再精通。
Usage: nmap [Scan Type(s)] [Options] {target specification}
TARGET SPECIFICATION:
Can pass hostnames, IP addresses, networks, etc.
Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0-255.0-255.1-254
-iL
-iR
--exclude
--excludefile
HOST DISCOVERY:
-sL: List Scan - simply list targets to scan
-sP: Ping Scan - go no further than determining if host is online
-P0: Treat all hosts as online -- skip host discovery
-PS/PA/PU [portlist]: TCP SYN/ACK or UDP discovery probes to given ports
-PE/PP/PM: ICMP echo, timestamp, and netmask request discovery probes
-n/-R: Never do DNS resolution/Always resolve [default: sometimes resolve]
SCAN TECHNIQUES:
-sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans
-sN/sF/sX: TCP Null, FIN, and Xmas scans
--scanflags
-sI
-sO: IP protocol scan
-b
PORT SPECIFICATION AND SCAN ORDER:
-p
Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080
-F: Fast - Scan only the ports listed in the nmap-services file)
-r: Scan ports sequentially - don't randomize
SERVICE/VERSION DETECTION:
-sV: Probe open ports to determine service/version info
--version-light: Limit to most likely probes for faster identification
--version-all: Try every single probe for version detection
--version-trace: Show detailed version scan activity (for debugging)
OS DETECTION:
-O: Enable OS detection
--osscan-limit: Limit OS detection to promising targets
--osscan-guess: Guess OS more aggressively
TIMING AND PERFORMANCE:
-T[0-6]: Set timing template (higher is faster)
--min-hostgroup/max-hostgroup
--min-parallelism/max-parallelism
--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout
probe round trip time.
--host-timeout
--scan-delay/--max-scan-delay
FIREWALL/IDS EVASION AND SPOOFING:
-f; --mtu
-D
-S
-e
-g/--source-port
--data-length
--ttl
--spoof-mac
OUTPUT:
-oN/-oX/-oS/-oG
-oA
-v: Increase verbosity level (use twice for more effect)
-d[level]: Set or increase debugging level (Up to 9 is meaningful)
--packet-trace: Show all packets sent and received
--iflist: Print host interfaces and routes (for debugging)
--append-output: Append to rather than clobber specified output files
--resume
--stylesheet
--no-stylesheet: Prevent Nmap from associating XSL stylesheet w/XML output
MISC:
-6: Enable IPv6 scanning
-A: Enables OS detection and Version detection
--datadir
--send-eth/--send-ip: Send packets using raw ethernet frames or IP packets
--privileged: Assume that the user is fully privileged
-V: Print version number
-h: Print this help summary page.
EXAMPLES:
nmap -v -A scanme.nmap.org
nmap -v -sP 192.168.0.0/16 10.0.0.0/8
nmap -v -iR 10000 -P0 -p 80
ncat:ncat即Netcat,用于从TCP/UDP连接中读取或发送网络数据,连接和重定向套接字
有如下作用:
端口侦听,ncat 可以作为 server 以 TCP 或 UDP 方式侦听指定端口;
端口扫描,ncat 可以作为 client 发起 TCP 或 UDP 请求;
机器之间传输文件;
机器之间网络测速。
命令格式:ncat [OPTIONS...] [hostname] [port]
选项说明:
-4/6 强制只使用 IPv4/IPv6 地址。 -d, --delay |
在192.168.138.137的8888端口启动监听,在132机器上连接此端口。
双方可以通话了,类似聊天功能。
文件传输:把 A 机器上的一个文本文件发送到 B 机器上,需注意操作次序,receiver 先侦听端口,sender 向 receiver 所在机器的该端口发送数据。
tcpdump:一个运行在命令行下的抓包工具。
语法:
tcpdump [ -AdDefIJKlLnNOpqRStuUvxX ] [ -B buffer_size ] [ -c count ]
[ -C file_size ] [ -G rotate_seconds ] [ -F file ]
[ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ]
[ -P in|out|inout ]
[ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]
[ -W filecount ]
[ -E spi@ipaddr algo:secret,... ]
[ -y datalinktype ] [ -z postrotate-command ] [ -Z user ]
[ expression ]
-a 将网络地址和广播地址转变成名字 -v 产生详细的输出. 比如包的TTL,id标识,数据包长度,以及IP包的一些选项。同时它还会打开一些附加的包完整性检测,比如对IP或ICMP包头部的校验和。 |
tcpdump -i ens33 #捕获指定接口(网卡)的数据包
tcpdump -i ens33 -c 3 #捕获指定个数的数据包(3个数据包)
tcpdump -A -i ens33 -c 3 #用ASCII码格式输出捕获的数据包
tcpdump -XX -i ens33 #用十六进制和ASCII码格式显示捕获的数据包
tcpdump -D #显示可用的系统接口
tcpdump -w mydata.pcap -i ens33 -c 10 #把捕获的数据包写入到一个.pcap后缀的文件中
tcpdump -r tempDump.pcap #读取捕获数据包文件的内容
tcpdump -n -i eth0 # 单个 n 表示不解析域名,直接显示 IP
tcpdump -i eth0 tcp #捕获TCP类型的数据包,tcp可以换成其他,icmp如
tcpdump -i eth0 port 22 #捕获指定端口(这里是22)的数据包
tcpdump -i eth0 src 源ip地址 #捕获请求源是 192.169.12.101 的数据包
tcpdump -i eth0 dst 目标ip地址 #捕获指定目的IP的数据包
tcpdump -i eth0 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 和端口号,而且在抓取大量数据时非常高效,因为域名解析会降低抓取速度
tcpdump输出解释
tcpdump的Flags代表了这个数据包的用途,这些标记是TCP首部的内容
[S] : SYN(开始连接)
[S.]: SYN同步标识,以及确认[S]的ACK
[P.] : PSH(推送数据)
[F.] : FIN (结束连接)
[R.] : RST(重置连接)
[.] : 没有 Flag (意思是除上面四种类型外的其他情况,有可能是 ACK 也有可能是 URG:紧急指针)
[FP.]: 标记FIN、PUSH、ACK组合,这样做是为了提升网络效率,减少数据来回确认等