Linux网络命令
网络基础
ifconfig
ifconfig eth0 up
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
#ipconfig # for Windows
ip a
# 显示所有打开连接
ss -l
# 或者
yum install net-tools
netstat -tlpn
netstat -anp
# 或者
lsof -i
# 更精确的方式显示打开的网络端口
nmap -sT -O localhost
# 如果遇到未知服务打开端口:
cat /etc/services | grep 834
# 查看网卡带宽
ethtool eth0
网络连接监控ss
socket stats
ss -s # 网络汇总
ss -lp | grep 8080 # -l 显示监听
ss -ant
# 等价于 netstat -tlpn
# t=tcp,l=listen,n:port_number,p=pid
ss -ltpn
netstat
常用选项:
- -a/–all: 显示监听和非监听连接
- -n: 显示IP
# CentOS 7需要先安装
yum install net-tools
# 显示所有TCP
netstat -nat
# 网络统计
netstat -s
#Windows
netstat -aon | more
netstat -ano | findstr LISTENING
# 显示建立的TCP连接
netstat -np | grep ESTABLISHED | wc -l
netstat -nat | grep 'ESTABLISHED'
netstat -s |grep 'connections established'
检查某端口是否可用
timeout $TIMEOUT_SECONDS bash -c "</dev/tcp/${HOST}/${PORT}"; echo $?
nc -w $TIMEOUT_SECONDS -v $HOST $PORT </dev/null; echo $?
wget
–N, –timestamping don’t re-retrieve files unless newer than local –O, –output-document=FILE write documents to FILE OR override –nc, –no-clobber skip downloads that would download to existing files (overwriting them) —no-check-certificate
网络流量和带宽
网络流量监控/数据统计
# iftop, r 代表receive
sudo iftop -nP
# 某网口带宽占用
iftop -i eth1
# 子网数据流
iftop -F 192.168.1.0/24
# tcptrack
sudo apt-get install tcptrack
sudo tcptrack -r 3 -i eth0
iperf3: 网络带宽测试
iperf3 可以测试TCP和UDP的带宽质量.
注:UDP可以测试出抖动和丢包率,更常被采用.
命令:
-c/-s
客户端/服务端模式-p
服务端口,默认5201-i
报告间隔时间,默认1秒
客户端命令:
-u
UDP测试-b
UDP发送带宽(UDP默认1Mb/s,TCP不受限)-t
测试时长,默认10秒-P
并发连接数,默认为1
# 运行server,默认端口5201
iperf3 -s
# 开始带宽测试
iperf3 -c {{server}}
# 指定server端口
iperf3 -s -p {{port}}
# 指定带宽
iperf3 -c {{server}} -b 1000M
域名类
修改hostname
hostnamectl set-hostname moon
# 等价于修改/etc/hostname(需要重启)并执行
hostname moon
# 查看域名、虚拟化、操作系统等相关信息
hostnamectl
hostname # 查看当前值
# 只应用于内部网络IP映射
vi /ect/hosts
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=newHostName
# 重启服务以生效
/etc/init.d/network restart
域名解析
nslookup www.google.com
dig xulizhao.com
dnstracer
dig +trace xulizhao.com
# 查找域名服务器
less /etc/resolv.conf
nmcli device show <interfacename| grep IP4.DNS
Windows从IP得到hostname: ping -a 10.10.10.10
修改DNS
## Ubuntu
vi /etc/network/interfaces
dns-nameservers 8.8.8.8
# 重启服务
/etc/init.d/networking restart
## CentOS
vi /etc/resolv.conf
nameserver 8.8.8.8
更新DNS
# 根据以下三个文件动态生成:head,base,tail
sudo vi /etc/resolvconf/resolv.conf.d/tail
# 更新DNS
sudo resolvconf -u
# 查看当前配置
cat /etc/resolve.conf
主要配置项:
search xulizhao.com
nameserver 192.168.1.1
网络调试traceroute/mtr
- mtr: 网络调试工具
mtr可以看做traceroute的加强版
显示数据包在IP网络经过的路由器的IP地址,一直达到默认或用参数指定的追踪限制(maximum_hops)才结束追踪. [Windows] tracert
响应格式: Hop RTT1 RTT2 RTT3 Domain Name [IP Address] 每个hop发送三个包, * 代表丢包
使用ICMP协议 (同ping);
RTT: round trip time ;
延时突然增加并持续的增加通常意味着问题;
网络模拟tc/netem
模拟网络延迟,丢包,重复,乱序等。
可以通过从其他机器ping测试效果。
- netem: Linux Network Emulator
- tc: Traffic Control
tc
tc qdisc add dev eth0 root netem delay 100ms
- tc qdisc: 配置 kernel packet scheduler
- add: 增加新规则
- dev eth0: 网络设备
- root: 应用于egress (outbound traffic) qdisc
- netem: 使用网络模拟器
- delay: 网络指标
- 100ms: 指标值
# 其他常用控制指标
# loss
tc qdisc add dev eth0 root netem loss 5%
tc qdisc change dev eth0 root netem loss 3% 25%
# delay/延时
tc qdisc change dev eth0 root netem delay 100ms
tc qdisc change dev eth0 root netem delay 100ms 10ms 25%
tc qdisc change dev eth0 root netem delay 100ms 20ms distribution normal
tc qdisc change dev eth0 root netem delay 10ms reorder 25%
tc qdisc change dev eth0 root netem corrupt 2%
tc qdisc change dev eth0 root netem duplicate 1%
# 修改已有规则
tc qdisc change dev eth0 root netem delay 100ms 10ms
# 列出已有规则
tc qdisc show
tc -p qdisc ls dev eth0
# 删除规则
tc qdisc del dev eth0 root
更多详情参考 netem wiki 和 SO
基于tc的 wondershaper
系统自带版本的 wondershaper的在测试中有些问题,建议用最新版
git clone https://github.com/magnific0/wondershaper.git
cd wondershaper
chmod u+x wondershaper
# 限制到100Mbps
./wondershaper -a eth1 -d 102400 -u 102400
# 重置限制
./wondershaper -c -a eth1
扩展阅读
- Throttle Bandwidth on a Linux
- Linux 工具快速教程
- ss命令详解
- traceroute解释1/2