装完操作系统后,我们首先要进行的配置就是网络配置,网络先关的配置包括:IP地址(IPADDR)、子网掩码(NETMASK)、网关(Gateway)、主机名(HOSTNAME)、DNS等,在CentOS中,有着不同的命令或配置文件可以完成这些配置操作,接下来,我们将所有相关的命令进行总结。
ethtool
ethtool [ -a | -c | -g | -i | -d | -k | -r | -S |] ethX # ethtool命令,用于查询及设置网卡参数的命令
ifconfig
使用ifconfig 命令可以获取所有网卡设备的信息,用于输出网络接口配置、调优和debug的各种选项。可以快捷地查看IP地址和其它网络接口的信息。键入ifconfig查看所有启用的网络接口的状态,包括它们的名字。可以指定网络接口的名字来只显示这一个接口的信息。如果需要查看哪些设备连接网线,需要通过 RX packets或者TX packets进行判断,如果数值为0的话通常表示没有硬件连接。缺点是不能直接显示设备连接情况,需要通过其它参数进行判断。如果网口连接过网线,可能会导致数据不准确,需要使用ifdown、ifup命令重启设备
一、命令语法格式:ifconfig [-a] [interface]
ifconfig -a # 表示显示所有的网络接口信息,包括inactive状态的接口
二、命令语法格式:ifconfig IFACE(网络接口名,下同) IPADDR netmask NETMASK [up|down]
表示通过ifconfig命令直接修改接口的ip地址和netmask,并可启停该接口。该命令会将配置参数立即送往内核中的TCP/IP协议栈,所以会立即生效,但是重启服务后会无效。
ifconfig eth1 172.16.7.14 netmask 255.255.0.0 ifconfig eth1 172.16.7.14/16 down
route
显示和配置ip路由表。命令语法格式:route [-n]
route -n # 表示查看全部的路由表,并以数字显示ip地址 route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If] # 添加相应接口的路由 route add -host 172.16.7.14 gw 172.16.0.1 dev eth1 #主机路由 route add -net 172.16.7.0/24 gw 172.16.0.1 dev eth1 #网段路由 route add default gw 172.16.0.1 dev eth1 #默认路由 route del [-net|-host] target [netmask Nm] [[dev] If] # 删除路由 route del -host 172.16.7.14 dev eth1 route del -net 172.16.7.0/24 dev eth1 route del default dev eth1
ip
ip a # 使用这个命令可以获取本机上所有设备的状态信息, 通过 “qdisc mq state”后面的值是UP还是DOWN来判断是否已经连接网线。(此命令对于网线,光纤,InfiniBand类型设备都可以进行支持)
一、ip link # 配置网络接口属性。命令语法格式:ip link set [dev] IFACE [up|down] [multicast on|off] [name IFACE] [mtu NUMBER]
- up and down:启动或禁止选定的网络接口
- multicast on or multicast off:启动或禁止组播功能
- name NAME:重命名接口(命名前需先down掉接口)
- mtu NUMBER:设置接口的mtu大小,默认为1500
ip link set eth1 name eth2 up ip link set eth2 multicast off mtu 1000 ip link [show|list] # 显示全部网络接口的属性:ip link show
二、ip addr # 配置网络接口的ip地址。命令语法格式:ip addr add IPADDR dev IFACE [label NAME] [broadcast ADDRESS] [scope SCOPE_VALUE]
- [label NAME]:为额外添加的地址指明接口别名
- [broadcast ADDRESS]:会根据ip和netmask自动计算,不用填
- [scope SCOPE_VALUE]:gloal全局可用;link接口可用;host:本机可用
ip addr add 172.16.7.14/24 dev eth1 label eth1:0 # 增加一个ip地址 ip addr delete IPADDR dev IFACE # 删除一个ip地址,ip addr del 172.16.7.14/24 dev eth1:0 ip addr show [dev IFACE|label IFACE:#] # 仅显示指定的接口地址, ip addr show label eth1:0 ip addr show eth1 ip addr flush [dev] {IFACE|label IFACE:#} # 清空指定的所有地址或别名的地址。 ip addr flush label eth1:0 ip addr flush eth1
三、ip route # 配置接口的路由表信息。命令语法格式:ip route add TYPE PREFIX(目标网络)via GateWay [dev IFACE] [src SOURCE_IP]
ip route add 172.16.7.14 via 172.16.0.1 dev eth1 # 添加路由表 ip route add 172.16.7.0/24 via 172.16.0.1 dev eth1 ip route add d efault via 172.16.0.1 dev eth1 ip route del TYPE PREFIX # 删除路由表 ip route del 172.16.7.14 ip route del 172.16.7.0/24 ip route show # 显示路由表,ip route show ip route flush dev IFACE # 清空指定接口的所有路由表 ip route flush dev eth1
ss
ss # 和netstat命令一样用来查看网络状态,其选项参数和netstat命令基本相同,但是其查询速度比netstat命令要快。他可以显示PACKET sockets, TCP sockets, UDP sockets, DCCP sockets, RAW sockets, Unix domain sockets等等统计. 它比其他工具展示等多tcp和state信息. 它是一个非常实用、快速、有效的跟踪IP连接和sockets的新工具,命令语法格式:ss [options] [filter],options 选项:
- -t:TCP协议的相关连接
- -u:UDPF相关的连接
- -w:raw socket相关的连接
- -l:处于监听状态的连接
- -a:所有状态
- -n:以数字格式显示IP和Port
- -e:扩展格式
- -p:显示相关的进程及PID
- -m:内存用量
- -o:计时器信息
filter:过滤器 FILTER := [ state TCP-STATE ] [ EXPRESSION ],EXPRESSION:
- dport:目标端口
- sport:源端口
ss sport = :http,ss sport = :80 # 查看当前HTTP的连接状态 ss sport eq :22 # 查看当前22端口的连接状态 ss \( sport = :http or sport = :https \) # 监听当前HTTP和HTTPS端口状态,一定要按照这个命令格式进行 ss -tan #查看当前网络所有tcp的连接状态
nmcli
nmcli dev status # 使用这个命令可以获取本机上所有设备的状态信息, 通过CONNECTIONZ字段就可以很方便看出是否有设备连接
curl & wget
curl & wget # 使用curl或wget命令,不用离开终端就可以下载文件。如你用curl,键入curl -O后面跟一个文件路径。wget则不需要任何选项。下载的文件在当前目录。
curl -O website.com/file wget website.com/file
ping
ping发送ECHO_REQUEST包到你指定的地址。这样你可以很方便确认你的电脑和Internet或是一个指定的IP地址是不是通的。使用 -c 开关,可以指定发送ECHO_REQUEST包的个数。
ping -c 4 google.com
hostname
显示配置主机名。它的使用格式如:hostname,显示当前主机名,命令语法格式:hostname HOSTNAME:修改当前主机名为HOSTNAME,仅当前有效,重启无效
hostname TEST
hostnamectl
CentOS7新增,显示配置主机名。命令语法格式:hostnamectl [status]:显示当前主机名信息
hostnamectl set-hostname:设定主机名,永久有效,如:hostnamectl set-hostname CentOS7
tracepath & traceroute
tracepath命令和traceroute命令功能类似,但不需要root权限。并且Ubuntu预装了这个命令,traceroute命令没有预装的。tracepath追踪出到指定的目的地址的网络路径,并给出在路径上的每一跳(hop)。如果你的网络有问题或是慢了,tracepath可以查出网络在哪里断了或是慢了。
tracepath www.w3capi.com
mtr
mtr命令把ping命令和tracepath命令合成了一个。mtr会持续发包,并显示每一跳ping所用的时间。也会显示过程中的任何问题,在下面的示例中,可以看到在第6跳丢了超过20%的包。
mtr www.w3capi.com
host
host命令用来做DNS查询。如果命令参数是域名,命令会输出关联的IP;如果命令参数是IP,命令则输出关联的域名。
host www.w3capi.com host 208.43.115.82
whois
whois命令输出指定站点的whois记录,可以查看到更多如谁注册和持有这个站点这样的信息。
whois www.w3capi.com
dhclient
dhclient命令可以释放你的电脑的IP地址并从DHCP服务器上获得一个新的。需要root权限,所以在Ubuntu上需要sudo。无选项运行命令获取新IP,或指定 -r 开关来释放当前的IP地址。
netstat
这个是很重要的命令,需要系统的学习,netstat命令可以显示网络接口的很多统计信息,包括打开的socket和路由表。无选项运行命令显示打开的socket。显示网络连接,路由表,接口状态等。命令语法格式:netstat [-n] [-r] [-p] [-e] [-a] [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [-i] [-I<IFACE>]
- -n:以数字格式显示ip和端口号,不做地址转换
- -r:显示内核路由表
- -p:显示相关的进程和PID
- -e:显示扩展格式
- -a:显示所有的连接状态
- -t:显示tcp协议的相关连接的状态
- -u:显示udp协议的相关连接的状态
- -w:显示raw socket相关连接的状态
- -l:显示处于监听状态的连接
- -i:显示所有接口状态
- -I<IFACE>:显示特定的接口状态
以上个选项可组合使用,常用组合有-tan,-uan,-tln,-uln,-tunlp等
netstat -tan netstat -Ieth1
ps
查某个程序的端口号
ps -ax|grep tomcat
lsof
查某个端口的占用程序,lsof命令语法格式:lsof [options] filename
lsof abc.txt 显示开启文件abc.txt的进程 lsof -c abc 显示abc进程现在打开的文件 lsof -c -p 1234 列出进程号为1234的进程所打开的文件 lsof -g gid 显示归属gid的进程情况 lsof +d /usr/local/ 显示目录下被进程开启的文件 lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长 lsof -d 4 显示使用fd为4的进程 lsof -i 用以显示符合条件的进程情况,lsof -i:8000 lsof -i[46] [protocol][@hostname|hostaddr][:service|port] 46 --> IPv4 or IPv6 protocol --> TCP or UDP hostname --> Internet host name hostaddr --> IPv4地址 service --> /etc/service中的 service name (可以不止一个) port --> 端口号 (可以不止一个) lsof -p 30297 //显示那些文件被pid为30297的进程打开
这个命令还可以恢复部分刚刚被删除的文件(只要还有进程在操作这个文件)
telnet
telnet <host> [port]:与主机在指定的端口通信。默认的 telnet 端口是 23。按 Control-] 以退出 telnet。其它一些常用的端口是:
- 7 —— echo 端口
- 25 —— SMTP,用于发送邮件
- 79 —— Finger (Finger protocal,Finger协议返回一个指定主机上一个或多个用户的信息。它常被用来检查某个人是否登录了,或者搞清一个人的登录名以便给他发送邮件。 RFC1288 指明了这个协议。不过举例 Finger 恐怕不合时宜,可以试试 80端口)
tcpdump
用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。
tcpdump -i eth0(默认监控eh0或者en0) # 监控网卡数据收发,网卡的名称根据ifconfig的反馈信息来定 tcpdump host sundown # 打印所有进入或离开sundown的数据包 tcpdump host helios and \( hot or ace \) # 打印helios 与 hot 或者与 ace 之间通信的数据包 tcpdump tcp port 23 and host 210.27.48.1 # 监视指定主机和端口的数据包,如果想要获取主机210.27.48.1接收或发出的telnet包
抓包到wireshark里分析:tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
- tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
- -i eth1 : 只抓经过接口eth1的包
- -t : 不显示时间戳
- -s 0 : 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包
- -c 100 : 只抓取100个数据包
- dst port ! 22 : 不抓取目标端口是22的数据包
- src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24
- -w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析