网络命令 配置ip 配置ip有两种方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 # 方式一 # setup可以使用配置工具进行配置 setup # 方式二 linux服务器默认网卡配置文件的目录/etc/sysconfig/network-scripts,进行配置 网卡的配置文件类型 - ifcfg-ethX 有线网卡的配置文件,eth0表示第一块网卡,eth1表示第二块网卡,以此类推 - ifcfg-ethX:X 有线网卡的虚拟网卡的配置文件 - ifcfg-wlanX 无线网卡的配置文件 网卡配置文件中各行代表的含义 DEVICE="eth0" #网卡的名称 BOOTPROTO=dhcp #IP 地址的获取方式[none|static|bootp|dhcp 分别是不使用协议|静态分配|BOOTP协议|DHCP协议],none:手动指定IP地址、子网掩码、网关等网络配置信息,不使用DHCP协议进行自动获取;static:手动指定IP地址、子网掩码、网关等网络配置信息,但是需要使用DHCP服务器分配DNS服务器地址;dhcp:使用DHCP协议自动获取IP地址、子网掩码、网关、DNS服务器等网络配置信息;bootp:使用BOOTP协议自动获取IP地址、子网掩码、网关等网络配置信息 TYPE=Ethernet #网卡类型,Ethernet表示以太网 HWADDR= #MAC 地址,可以使用ifconfig来获取 ONBOOT=yes #开机启动 [yes|no] IPADDR= #指定的Ip 地址 NETMASK= #子网掩码 GATEWAY= #网关地址 IPV6INIT=yes #是否支持ipv6,no表示不支持 IPV6_AUTOCONF=yes #表示自动配置IPv6 PEERDNS=yes #表示允许从DHCP获取的DNS覆盖本地DNS USERCTL=no #表示不允许普通用户修改配置 # 配置完成后重启网卡 /etc/init.d/network restart # 使用ifconfig来进行配置 # 查看 ip 信息 ifconfig # 配置 eth0 的 IP 信息 ifconfig eth0 200.200.200.2 netmask 255.255.255.0 # 禁用网卡 ifdown eth0 # 启用网卡 ifup eth0 # 修改网卡 eth0 的 MAC 地址 ifconfig eth0 hw ether 00:11:22:33:44:55
配置完之后重启网络服务
查看ip信息 ifconfig可以查看主机IP地址和其他一些关于网络接口的信息,相当于windows的ipconfig
1 2 3 4 ifconfig # 如果只看某个网卡的,可以指定网卡名 ifconfig eth0
ping 1 2 3 4 5 6 # ping [选项] ip ping www.baidu.com ------------------------ -c 次数 -b 对ip段进行广播
配置DNS linux中DNS配置文件在/etc/resolv.conf
1 2 3 4 search bj.baidu.internal nameserver 192.168.0.2 # 主DNS nameserver 192.168.0.3 # 备DNS options rotate timeout:1
netstat 查看网络状态,既可以查看本机开启端口,也可以查看有哪些客户端连接。也可以查看路由表以及网络信息。其是根据遍历/proc下的所有pid目录来得到的结果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 # netstat [选项] # 查看正在监听TCP(t)和UDP(u)的端口以及对应的进程 netstat -tunlp # 查看路由表 netstat -rn # 当前系统启动哪些端口 netstat -lnp # 所有连接和端口 netstat -an # 查看服务器的全部连接数 20 connections established 20个连接 netstat -st | grep conn --------------------------- -a 列出所有连接,包括tcp、udp、socket连接 -i 显示自动配置接口的状态,不显示在系统初始引导后配置的接口状态 -c 每隔几秒刷新一次网络状态 -n 使用ip和端口号显示,不使用域名 -p 显示PID和程序名 -t 显示tcp协议连接状况 -u 显示udp协议连接状况 -x 查看socket连接状况 -l 仅显示监听状态的连接 -r 显示路由表 -s 显示统计信息 -o 显示与每个连接相关的进程ID
统计各种连接的数量
1 2 3 4 5 netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' CLOSE_WAIT 9 ESTABLISHED 27 TIME_WAIT 4
查找较多time_wait的连接
1 netstat -n | grep TIME_WAIT | awk '{print $5}' | sort | uniq -c | sort -rn | head -n 5
对于 netstat -s
显示的统计信息
Tcp相关,netstat -st
active connections openings: 表示主动发起TCP连接的次数。
passive connection openings: 表示被动接受TCP连接的次数。
failed connection attempts: 表示TCP连接失败的次数。
connection resets received: 表示TCP连接被重置的次数。
connections established: 表示当前已经建立的TCP连接数。
segments received: 表示接收到的TCP数据包的数量。
segments send out: 表示发送的TCP数据包的数量。
segments retransmited: 表示重传的TCP数据包的数量。
InCsumErrors: 表示接收到的TCP数据包错误的数量。
resets sent: 表示发送的TCP连接重置的数量。
UDP相关,netstat -su
packets received: 表示接收到的UDP数据包的数量。
packets to unknown port received: 表示接收到的UDP数据包没有对应的端口号的数量。
packet receive errors: 表示接收UDP数据包时出现错误的数量。
packets sent: 表示发送的UDP数据包的数量。
路由配置 使用route可以进行路由配置,使用netstat -r可以查看路由表,然后使用route可以增加或删除一条路由
1 2 3 4 5 # default gw localhost default为 默认路由 gw 后的ip表示的是网关的地址 route add default gw localhost # 删除路由 route del default
域名解析 nslookup命令 nslookup显示某个指定域名的ip地址
1 2 3 4 5 6 7 nslookup zhhll.icu Server: 192.168.1.1 Address: 192.168.1.1#53 Non-authoritative answer: Name: zhhll.icu Address: 75.2.60.5
dig命令 dig也可以来查询域名配置的DNS信息
1 2 3 4 5 6 7 8 # 查询域名的A记录 dig zhhll.icu # 查询域名的NS记录 dig zhhll.icu ns # 还可以从根服务器开始追踪一个域名的解析过程 dig zhhll.icu +trace
远程登录 telnet命令 telnet可以进行远程登录
1 2 3 4 telnet [options] [host [port]] -a 尝试自动登录 -l 指定登录用户
追踪路由 traceroute命令 traceroute可以查看经过的所有路由
1 2 3 4 # 输出完整路由,1表示离我们最近的路由器 # 默认使用的是udp,使用-I则表示使用icmp方式 # -p 表示跟踪端口 traceroute 域名
抓包工具 需要在root权限下,默认会通过扫描网络接口,选择第一个可用接口
1 2 3 4 5 6 7 8 9 10 11 12 13 14 # -nn 让第三列和第四列数据显示为IP+端口的形式,如果不使用-nn则显示主机名+服务名称 # -i后跟设备名称 tcpdump -nn -i eth0 # 指定端口抓包 tcpdump -i eth0 tcp port 8080 -A -s 0 # 指定端口抓包并存入文件 tcpdump -i eth0 tcp port 8080 -A -s 0 -w dump.txt # 指定域名抓包 tcpdump -i eth0 tcp and host zhhll.icu -A -s 0
netcat 可以用来做端口扫描与监听、文件传输
1 2 3 4 5 6 7 8 9 10 11 12 # 监听1234端口,并将数据输出到file文件中保存 netcat -l -p 1234 >file.txt # 端口扫描192.168.1.109 的1到3000端口 # -z表示不发送任何数据到tcp连接 # -w表示扫描连接的超时时间 # -n表示尝试DNS解析 nc -v -n -z -w 1 192.168.1.109 1-3000 # 服务端开启端口,打开该端口来执行bash程序 nc -l -p 1234 -e bash # 客户端进行远程连接 nc 192.168.1.109 1234
mtr mtr集成了ping和traceroute,可以判断网络情况、查询具体在哪个环节丢包
1 mtr -r -c 10 -i 2 baidu.com
ss命令 ss是通过读取/proc/net下的统计信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 # 显示本地打开的所有端口 ss -l # 显示每个进程具体打开的socket ss -pl # 显示所有tcp的socket ss -t -a # 显示所有udp的socket ss -u -a # 显示所有已建立的SMTP连接 ss -o state established '( dport = :smtp or sport = :smtp )' # 显示所有已建立的SMTP连接 ss -o state established '( dport = :http or sport = :http )' # 列出所有socket的统计信息 ss -s