0%

linux网络命令

网络命令

配置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

配置完之后重启网络服务

1
service network restart

查看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

欢迎关注我的其它发布渠道