网络相关配置文件(REHL系)
网卡信息
/etc/sysconfig/network-scripts/ifcfg-eth0
(centos7为enoX)
1 | DEVICE=eth0 # 设备名 |
路由信息
/etc/sysconfig/network-script/route-eth0
1 | # 方式1:每1行一个路由条目 |
注:2种方式不能混用
主机名
/etc/sysconfig/network
1 | NETWORKING=yes #开启 |
DNS配置
/etc/resolv.conf
1 | nameserver 202.106.0.20 |
hosts
/etc/hosts
1 | # IP地址 网址 别名(可多个) |
修改配置文件后需要重启网络才能生效
- CentOS6:
service network {restart|stop|start|status}
- CentOS7:
systemctl {restart|stop|start|status} network[.service]
备注:配置文件修改还可通过专用命令来修改:
- CentOS6:
setup
或system-config-network
- CentOS7:
nmtui
hostname
显示和临时设置主机名,centos7可使用hostnamectl
, 设置可永久有效
-d
:显示机器域名-i
:显示ip-I
:显示机器上所有ip-f
:显示FQDN
1 | hostname # 查看主机名 |
ping
ping [OPTION] {IP|ADDR}
测试主机之间网络的连通性,使用ICMP传输协议
-c #
:指定ping次数-W #
:一次ping中等待响应的超时时间-w #
:ping命令运行时间,到指定时间结束-i #
:间隔时间,默认1秒ping一次-s #
:发送包大小,默认为64bytes
1 | ping -c 2 -W 1 -s 128 -i 3 www.163.com # 选项和数值可以不用空格隔开 |
traceroute
traceroute ADDR
追踪数据包在网络上的传输时的全部路径,它默认发送的数据包大小是40字节
netstat
显示网络状态,包括网络连接,路由,接口状态等
-t
:列出TCP协议相关连接,连接均有状态-u
:UDP-w
:raw socket相关连接-n
:数字方式显示IP和端口号-l
:仅列出在监听状态的网络连接-p
:显示监听指定的套接字的进程的进程号及进程名-a
:列出所有的网络连接-r
:列出路由列表,同route命令-i
:显示所有接口信息-I
< IFace>:显示指定接口信息,注意I和接口间没有空格
1 | # 常用选项 |
ftp
ftp HOST
连接到指定ftp服务器
连接后的相关操作命令:help
:查看帮助get
:下载指定单个文件到登录时文件夹中mget
:下载多个put
:上传,需要有上传权限bye
:退出ftp
1 | ftp 172.16.0.1 # 匿名用户名为anonymous或ftp |
lftp
lftp [-p port] [-u user[,pass]] [site]
增强版ftp,可指定端口,用户名及密码,默认匿名登录,支持tab自动补全
1 | lftp -u liu,123123 192.168.1.100 # 指定liu用户密码为123123 |
lftpget
lftpget URL
下载指定ftp服务器上文件
-c
:断点续传
1 | lftpget -c ftp://172.16.0.1/pub/a.txt |
wget
wget [OPTION] URL
从指定的URL下载文件
-b
:后台下载,可使用tail -f wget-log
查看-c
:断点续传-O
:重命名--limit-rate=#
:限速
…
1 | wget https://github.com/tmux/xxx/tmux-2.2.tar.gz # 下载指定文件 |
axel
axel [opt] url1 [url2] […]
多线程下载,需要手动安装
-s x
:指定最大速率(字节/秒)-n x
:指定最大连接数-o f
:指定本地输出文件-S [x]
:搜索镜像并从 X 服务器下载-H x
:添加报头字符串-U x
:设置用户代理-N
:不使用任何代理服务器-k
:不校验 SSL 证书-q
:使用输出简单信息模式-v
:更多状态信息-a
:另一种进度指示器
curl
基于URL语法在命令行方式下工作的文件传输工具,它支持FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE及LDAP等协议。curl支持HTTPS认证,并且支持HTTP的POST、PUT等方法, FTP上传, kerberos认证,HTTP上传,代理服务器, cookies, 用户名/密码认证, 下载文件断点续传,上载文件断点续传,,http代理服务器管道( proxy tunneling),甚至它还支持IPv6,socks5代理服务器,通过http代理服务器上传文件到FTP服务器等,总之功能很强大,curl还有强大的转发功能,会单独开篇说明
-I/--head
:只显示响应报文首部信息-XPUT
:指定请求方式,包括GET, HEAD, POST及PUT-H/--header <str>
:自定义头信息传递给服务器,可叠加使用传递多个值-L
:处理重定向或https-o
:将文件保存为命令行中指定的文件名的文件中-O
:使用URL中默认的文件名保存文件到本地-C
:断点续传,可以指定偏移量,也可以-
自动识别-A/--user-agent <str>
:设置用户代理发送给服务器,即告诉服务器浏览器是什么-d DATA
:传输数据--tcp-nodelay
:使用TCP_NODELAY选项-e/--referer <URL>
:来源网址,跳转过来的网址--cacert <file>
:指定CA证书 (SSL)--compressed
:要求返回是压缩的形势,如果文件本身为一个压缩文件,则可以下载至本地--limit-rate <rate>
:设置传输速度-u/--user <user[:password]>
:设置服务器的用户和密码,可不加密码,回车后输入-#/--progress
:显示进度-r
:分段下载-D
:将响应的header信息保存在指定文件中
1 | # 将文件下载到本地并命名为a.html |
route
显示或临时设置Linux内核中的网络路由表,推荐使用ip
来代替
1 | route -n[ee] # 以数字格式显示路由条目 |
路由表信息说明
Destination:目标网络或主机(0.0.0.0表示默认网关)
Gateway:下一跳网关地址(0.0.0.0表本地主机所在网络,无需网关,也称直连路由)
Genmask:目标网络的网络掩码。”255.255.255.255”表示一个主机,”0.0.0.0”表示网关
Flags:标记U:路由被启用
H:目标是一个主机
G:需要透过外部的主机 (gateway) 来转递封包
UG:未开启
M:该路由已被修改
Metric:到达目标的开销
Iface:到达目标使用的本机网卡接口
ifconfig
ifconfig [OPTION]
配置或查看网络相关配置,比较老的命令,推荐使用ip
命令来完成相关操作
1 | #ifconfig的设置为临时,立即生效但重启网络失效 |
ip
ip [OPTIONS] COMMAND
强大的网络管理工具,可完全替代ifconfig
,ifup
,ifdown
,route
等功能
OPTIONS
-s
:更详细显示
COMMANDlink
:设备相关设置,可简写为l
show
:显示设备信息,同list,可简写为lst
、sh
、ls
、l
set
:设置设备属性,可简写为s
help
:显示简要帮助,其它子命令同样支持
addr
:IP地址查看添加删除等,可简写为a
show
:显示IP信息,同list,可简写为lst
、sh
、ls
、l
add
:添加,一个网卡可设置多个IP,多个网段时每个网段由一个主地址,多个辅助地址del
:删除flush
:清空IP地址
route
:和路由相关的设置 ,可简写为r
show
:显示路由信息,同list,可简写为lst
、sh
、ls
、l
add
:添加,via下一跳必须是本机上的某一网段del
:删除flush
:清空路由
netns
:网络空间(centos7)
list
:列出所有网络空间add NAME
:添加指定网络空间del NAME
:删除exec NAME COMMAND
:在指定的空间中使用COMMAND
1 | # ip link [show|set] [DEV] [参数] |
ssh
ssh [OPTION] [USER@HOSTNAME] [COMMAND]
基于ssh协议方式登录远程主机
-p PORT
:指定远程主机端口,默认22-l USER
:指定用户-X
:支持X11转发,如使用system-config-kickstart
命令时使用-Y
:支持信任的X11转发-o
:连接选项,如ServerAliveInterval
,也可修改/etc/ssh/ssh_config
添加对应选项-i
:指定私钥路径
在Linux上的实现以OpenSSH软件为主,基本流程为:
一、主机认证
- 用户向远程发送登录请求
- 远程将自己的公钥发给用户
- 用户确认后,保存在用户
~/.ssh/know_hosts
中,以后登录读取此文件无需再保存 - 双方协商一个对称加密密码,用于之后的数据加密,默认此密码会一直改变
二、身份认证
- 基于口令认证:用户名密码使用双方协商的密码加密发送,确认身份
- 基于密钥认证:将本地公钥发给主机,保存在特定位置,以后就可以不用密码远程登录
使用公钥登录远程主机,无需再输密码
1 | ssh-keygen # 生成公钥私钥,保存在 ~/.ssh 下的id_rsa和id_rsa.pub,如已生成过此步无需进行 |
注:正常情况下私钥权限为600,如果过大也会报”WARNING: UNPROTECTED PRIVATE KEY FILE”,修改为600即可
简单梳理~/.ssh/目录下几个文件内容
1 | authorized_keys # 其它主机公钥,记录在此的主机可以远程无密码登录到本机 |
scp
scp [OPTION] SRC DST
两台主机间的加密传输,使用ssh协议
-P
:指定远程主机端口,默认22-r
:复制文件夹,递归复制-p
:保留原文件权限及最后访问和修改时间-q
:静默模式-v
:显示过程详情
远程主机格式:用户名@主机名:文件路径
1 | scp [-P1008] root@192.168.1.100:/data/xx.gz /tmp/ # 下载文件 |
sshpass
sshpass -{p|f|e} {ssh|scp} USER@HOST
当不使用公钥SSH连接时,都需要交互式输入密码,此命令可完成非交互SSH密码验证,但需手动源码安装
-p PASSWD
:指定密码-f FILE
:从文件中读取密码-e
:从环境变量SSHPASS
中读取密码,须先设置
1 | sshpass -p '123123' ssh root@192.168.1.100 # 指定密码ssh登录 |
telnet
telnet [option] [ip[:port]]
执行telnet指令开启终端机阶段作业,并登入远端主机,需手动安装
-a
:尝试自动登入远端系统-c
:不读取用户专属目录里的.telnetrc文件-d
:启动排错模式-k<域名>
:使用Kerberos认证时,加上此参数让远端主机采用指定的领域名,而非该主机的域名-l<用户名称>
:指定要登入远端主机的用户名称-S<服务类型>
:设置telnet连线所需的IP TOS信息
1 | telnet 172.16.60.1 22 # 探测22号端口是否开启 |
nslookup
查看域名解析
1 | nslookup www.baidu.com |
tcpdump
打印所有经过网络接口的数据包的头信息,更强大的工具可安装wireshark
-i
:在指定的接口上获取包信息-w FILE
:保存结果到指定文件-r FILE
:读取文件分析-A
:ASCII-x
:hex and ascii-XX
:-v
:-vv
:-nn
:每一个n表示不把ip反解为主机名, 第2个n表示不把端口反解为服务名expression
:表达式,关键字有type,direction,protocol,可以man pcap-filter
,组合有and,or,not
type
:host,net,port,portrangedirection
:src,dst,src or dst,src and dstprotocol
:ether,ip,arp,tcp,udp,wlan
1 | tcpdump -i eth0 [src|dst] host 192.168.0.1 # 抓取所有经过eth0,目的或源地址是192.168.0.1的网络数据 |
tcpdump功能强大,更多信息以后再添加
dig
dig [@global-server] [domain] [q-type] [q-class] {q-opt} {d-opt}
常用dns查询命令,由bind-utils包提供
参数说明:
@global-server
:默认是以/etc/resolv.conf作为DNS查询的主机,这里可以填入其它DNS主机IPdomain
:要查询的域名q-type
:查询记录的类型,例如a、any、mx、ns、soa、hinfo、axfr、txt等,默认查询aq-class
:查询的类别,相当于nslookup中的set class。默认值为in(Internet)q-opt
:查询选项,可以有好几种方式,
-f file
:为通过批处理文件解析多个地址-p port
:指定另一个端口(缺省的DNS端口为53)
d-opt
:dig特有的选项。使用时要在参数前加上一个“+”号
[no]+vc
:是否使用TCP协议查询+time=###
:设置超时时间+[no]trace
:是否从根域开始跟踪查询结果+[no]short
:是否简短显示+[no]recurse
:是否递归解析
1 | dig www.baidu.com |
nslookup
nslookup [-type=TYPE] domain [dns-server]
dns查询,直接输入命令进入交互式模式
1 | nslookup> |
1 | nslookup -type=mx baidu.com 8.8.8.8 |
fping
主机探活,需手动安装
-a
:只显示存活主机-u
:只显示不存活主机-A
:以ip方式显示存活-i
:ping包之间的间隔,默认25ms-c
:ping每个目标的次数,默认为1-b
:ping 数据包的大小,默认56-S
:设置源ip-f
:从指定文件中读取ip列表-s
:显示统计数据-g
:指定ip段,可为起始ip,也可为ip/mask形式-t
:单目标的超时时长,默认500ms-l
:循环ping-e
:显示返回时间
1 | fping -ae 10.0.0.1 10.0.0.2 10.0.0.3 |
hping
高级的主机扫描工具,它支持TCP/IP数据包构造、分析,在某些防火墙配置或运营商拦截ICMP数据包时,可用来扫描存活主机
-p
:端口号-S
:发送TCP的SYN包-A
:发送TCP的ACK包-a
:伪造源IP--flood
:尽可能快的发送,慎用
1 | hping 192.168.2.224 -p 80 -S |
iftop
iftop [option]
网络流量监控,右侧显示的3个数据为2s、10s、40s的平均流量值,下方显示cum
列表示从运行iftop到目前的发送、接收和总数据流量,peak
列表示发送、接收以及总的流量峰值
-i
:指定需要监测的网卡-n
:将输出的主机信息都通过IP显示,不进行DNS反向解析-p
:以混杂模式运行iftop,此时iftop可以作为网络嗅探器使用-N
:只显示连接端口号,不显示端口对应的服务名称-P
:显示主机以及端口信息,这个参数非常有用-F
:显示特定网段的网卡进出流量-m
:设置iftop输出界面中最上面的流量刻度最大值,流量刻度分五个大段显示
1 | iptop -PN -m 500m |
nmap
批量主机扫描和主机服务扫描
1 | # ICMP扫描 |
nc
nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p<通信端口>][-s<来源位址>][-v...][-w<超时秒数>][主机名称][通信端口...]
nc(netcat)被称为网络工具的瑞士军刀,其非常轻巧但功能强大!常常作为网络应用的Debug分析器,可以根据需要创建各种不同类型的网络连接
-g GW
:设置路由器跃程通信网关,最多可设置8个-G<指向器数目>
:设置来源路由指向器,其数值为4的倍数-i SEC
:设置时间间隔,以便传送信息及扫描通信端口-l
:使用监听模式,管控传入的资料-n
:直接使用IP地址,而不通过域名服务器-o FILE
:指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存-p PORT
:设置本地主机使用的通信端口-r
:随机本地与远端主机的通信端口-s IP
:设置本地主机送出数据包的IP地址-u
:使用UDP传输协议-v
:显示指令执行过程,-vv
更显示过程-w SEC
:设置等待连线的时间-z
:使用0输入/输出模式,只在扫描通信端口时使用
1 | # 端口扫描 |
iperf3
基于TCP/IP和UDP/IP的网络性能测试工具,它可以用来测量网络带宽和网络质量,还可以提供网络延迟抖动、数据包丢失率、最大传输单元等统计信息,官网下载使用
1. 服务端
-s
:将iperf以server模式启动,默认启动的监听端口为5201-p
:修改默认监听端口-D
:将iperf作为后台守护进程运行
1 | iperf3 -s -p 9527 |
2. 客户端
-c
:将iperf以client模式启动-u
:指定使用UDP协议-i
:指定每次报告之间的时间间隔,默认1s-F
:文件作为数据流进行带宽测试-f [k|m|g|K|M|G]
:指定带宽输出单位-p
:修改默认监听端口-b [K|M|G]
:指定UDP模式使用的带宽,单位bits/sec。此选项与“-u”选项相关。默认值是1 Mbit/sec-t
:指定传输数据包的总时间。iperf将在指定的时间内,重复发送指定长度的数据包。默认是10秒钟-n [K|M|G]
:指定传输数据包的字节数-l
:指定读写缓冲区的长度。TCP方式默认大小为8KB,UDP方式默认大小为1470字节-P
:指定客户端与服务端之间使用的线程数。默认是1个线程。需要客户端与服务器端同时使用此参数-R
:切换数据发送接收模式,例如默认客户端发送,服务器端接收,设置此参数后,数据流向变为客户端接收,服务器端发送-w
:指定套接字缓冲区大小,在TCP方式下,此设置为TCP窗口的大小。在UDP方式下,此设置为接受UDP数据包的缓冲区大小,用来限制可以接收数据包的最大值-B
:用来绑定一个主机地址或接口,这个参数仅用于具有多个网络接口的主机。在UDP模式下,此参数用于绑定和加入一个多播组-M
:设置TCP最大信息段的值-N
:设置TCP无延时
1 | iperf3 -c 192.168.1.1 |
如下是一个千兆带宽的示例:
1 | # ./iperf3.sh -c 10.104.199.181 |
mtr
traceroute默认使用UDP数据包探测,而mtr默认使用ICMP报文探测,ICMP在某些路由节点的优先级要比其他数据包低,所以测试得到的数据可能低于实际情况
axel
多线程下载工具(A light download accelerator for Linux),通过建立多连接,能够大幅度提高下载速度,所以我经常使用这个命令开挂下载大文件,比wget快多了,并且默认就支持断点下载
1 | axel -n 20 URL # 开启20个线程下载 |