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 wikiSO

基于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

扩展阅读