Skip to main content

Commands


Get Router IP

netstat -nr | grep default
Destination        Gateway            Flags               Netif Expire
default            172.30.109.1       UGScg                 en1
default            link#24            UCSIg           bridge100      !
default            link#26            UCSIg           bridge101      !

Get Public IP

curl ifconfig.me
curl icanhazip.com

eth0 vs en0/1

  • Ethernet Interface
  • eth0 old name
  • en0/1 modern name(macOS)

ss

summary

ss -s
Total: 1785
TCP:   2635 (estab 1564, closed 1026, orphaned 23, timewait 1013)

Transport Total     IP        IPv6
RAW       0         0         0
UDP       2         1         1
TCP       1609      768       841
INET      1611      769       842
FRAG      0         0         0
字段 数值 解释
TCP 总数 2635 所有 TCP socket(各种状态)
estab 1564 已建立的连接 (ESTABLISHED)
closed 1026 已关闭的连接
orphaned 23 没有归属进程的连接(进程退出但连接未完全关闭)
timewait 1013 TIME_WAIT 状态连接,表示有很多短连接被快速关闭
协议类型 总数 IPv4 数 IPv6 数 说明
RAW 0 0 0 原始套接字,通常系统底层用,这里没有
UDP 2 1 1 2 个 UDP socket(1 个 IPv4,1 个 IPv6)
TCP 1609 768 841 当前活跃的 TCP socket(不含已关闭)
INET 1611 769 842 所有基于 IP 的 socket(TCP+UDP)
FRAG 0 0 0 分片 socket,这里没有

state

状态名 说明
ESTABLISHED 已建立连接,双方可以正常收发数据。
SYN-SENT 客户端发送 SYN,等待服务端回应的状态。
SYN-RECV 服务端收到 SYN,已发出 SYN+ACK,等待客户端 ACK。
FIN-WAIT-1 主动关闭方发送 FIN,等待对方 ACK。
FIN-WAIT-2 收到对方 ACK(确认 FIN),等待对方发送 FIN。
TIME-WAIT 主动关闭方收到对方 FIN 并 ACK 后,进入等待(2×MSL,避免旧包干扰)。
CLOSED 连接不存在或已完全关闭。
CLOSE-WAIT 被动关闭方收到 FIN,等待本地应用调用 close()
LAST-ACK 被动关闭方发送 FIN 后,等待对方 ACK。
LISTENING (LISTEN) 监听端口,等待新连接进入。
CLOSING 双方几乎同时发 FIN,等待对方 ACK。
ss -antp state time-wait | head -n 10
Recv-Q Send-Q          Local Address:Port             Peer Address:Port Process
0      0               192.168.116.2:38494           192.168.116.4:8080
0      0               192.168.116.2:57012           192.168.116.4:8081
0      0               192.168.116.2:52982           192.168.116.4:8081
字段 示例值 含义
Recv-Q 0 接收队列:对端发过来但本地应用还没读的数据量。0=没有积压。
Send-Q 0 发送队列:本地应用写了但还没发出去/没被确认的数据量。0=没有积压。
Local Address:Port 192.168.116.2:38494 本地主机 IP 和端口号,这里 38494 / 57012 都是临时端口
Peer Address:Port 192.168.116.4:8080 对端的 IP 和端口号,说明连接到 192.168.116.4 上的服务。端口 8080/8081

sysctl

sysctl net.ipv4.tcp_fin_timeout \
       net.ipv4.tcp_tw_reuse \
       net.ipv4.ip_local_port_range
net.ipv4.tcp_fin_timeout = 60
net.ipv4.tcp_tw_reuse = 2
net.ipv4.ip_local_port_range = 32768    60999

net.ipv4.tcp_fin_timeout

  • 含义:一个 TCP 连接在主动关闭时,处于 FIN-WAIT-2 / TIME_WAIT 状态的最长保持时间(秒)。
  • 当前值 60:即 60 秒。
    • 这是 Linux 默认值。
      • 如果连接在关闭过程中没有完全结束,最多会等 60 秒才回收资源。
  • 系统保持的是默认,FIN 阶段等待时间相对安全(不会太短)。

net.ipv4.tcp_tw_reuse

  • 含义:是否允许重用 TIME_WAIT 状态的 socket。
    • 0 = 关闭(默认,不复用)
      • 1 = 开启复用(通常只对客户端连接生效,且依赖 TCP 时间戳)
      • 2 = 新内核引入的扩展值,表示 在 loopback 本地连接上也允许复用 TIME_WAIT(127.0.0.1 场景)。
  • 这里设置成 2,表示允许在 本地回环接口 (lo) 上的连接复用 TIME_WAIT。
  • 这对本地大量短连接(例如应用内访问 localhost 服务)有帮助,可以减少 TIME_WAIT 堆积。
  • 对外网连接仍然只按 tcp_tw_reuse=1 的逻辑处理。

net.ipv4.ip_local_port_range

  • 含义:Linux 在建立主动连接时(作为客户端),随机分配本地临时端口的范围。
  • 当前值32768 ~ 60999,共 28232 个端口可用
    • 例如机器主动访问别人 80 端口时,会从这个区间里挑一个源端口。
  • 范围不算大,但一般够用。
  • 如果有超高并发短连接(如几万 QPS 的 HTTP 短连接),可能会端口耗尽。
  • 这种情况下建议调大,例如:
sysctl -w net.ipv4.ip_local_port_range="1024 65535"