Linux基础知识 ·

Linux网络管理基础

ifconfig

ifconfig 主要是可以手动的启动、观察与修改网络的相关参数,包括IP 参数以及MTU 等等都可以修改,他的语法如下:

ifconfig 接口 选项

接口:网络设备代号,包括eth0, eth1, ppp0 等等

常用选项:

up, down :启动(up) 或关闭(down) 该网络接口(不涉及任何参数)

mtu :可以设定不同的MTU 数值,例如mtu 1500 (单位为byte)

netmask :子网掩码;

broadcast:就是广播位址!

add addr/prefixlen:为接口添加一个IPV4或IPV6地址。

del addr/prefixlen:为接口删除一个IPV4或IPV6地址。

若不加任何参数,则显示当前工作网卡。

ifconfig -a:则包括显示未工作网卡。

路由修改: route

不同网段之间一定要有路由才能互通 TCP/IP 的协定,路由依据路由表来识别和转发我们需要给其他网段的信息。

route 选项 参数 设备  显示 / 操作IP路由表

常用选项:

  • -n     以数字形式代替解释主机名形式来显示地址。此项对试图检测对域名服务器进行路由发生故障的原因非常有用。
  • -ee:将产生包括选路表所有参数在内的大量信息。
  • -net   指定后面接的路由为一个网络。
  • -host  指定后面接的路由为一个主机。
  • add    添加一条路由。
  • del 删除一条路由。
  • netmask num:为添加的路由指定网络掩码。
  • gw Gw  为发往目标网络/主机的任何分组指定网关。注意:指定的网关首先必须是可达的。也就是说必须为该网关预先指定一条静态路由。如果你为本地接口之一指定这个网关地址的话,那么此网关地址将用于决定此接口上的分组将如何进行路由。

我们来看一下主机的路由信息:

示例:向"eth0"添加一条指向网络192.56.76.x的路由。

路由表信息含义:

1.Destination:目标网络或主机。

2.Gateway:网关地址,“*”代表未设。

3.Genmask:目标网络的子网掩码;'255.255.255.255'为主机,'0.0.0.0'为缺省路由。

4.Flags:

  • U (route is up) 路由正常
  • H (target is a host) 主机路由
  •  G (use gateway) 使用网关的间接路由
  • R (reinstate route for dynamic routing) 为动态选路恢复路由
  • D (dynamically installed by daemon or redirect) 该路由由选路进程或重定向动态创建
  • M (modified from routing daemon or rederict) 该路由已由选路进程或重定向修改
  • ! (reject route) 阻塞路由

5.Metric:通向目标的距离(通常以跳来计算)。新内核不使用此概念,而选路进程可能会用。

6.Ref:使用此路由的活动进程个数(Linux内核并不使用)。

7.Use:查找此路由的次数。根据-F 和 -C的使用,此数值是路由缓存的损失数或采样数。

8.Iface:使用此路由发送分组的接口。

ip :综合网络设置命令

基本上,他就是整合了 ifconfig 与 route 这两个命令,并且添加了一些功能,是管理网络的一个非常厉害的命令。

ip 选项 参数 动作命令 设备

常用选项:

-b:从文件或标准输入读取命令并调用它们,常用于脚本。

-force:不要在批处理模式下终止错误。如果在执行期间有任何错误,应用程序返回码将不为零。

-s: 输出更多信息。如果选项出现两次或更多次,则信息量增加。 通常,信息是统计数据或一些时间值。

-family:指定要使用的协议系列。

-4 -family inet 的快捷方式。

-6 -family inet6 的快捷方式。

-B -family bridge 的快捷方式。

-D -family decnet 的快捷方式。

-I -family ipx 的快捷方式。

-0 -family link 的快捷方式。

常用参数:

address(addr): 设备的IPV4/IPV6地址。

addrlabel:地址协议配置的标签。

link:网络设备。

maddress:组播地址。

monitor:监控网络连接信息。

mroute:多播路由缓存条目。

mrule:组播路由策略规则。

neighbour:管理ARP或NDISC缓存条目。

netns:管理网络命名空间。

ntable : 管理邻接缓存的操作。

route:路由表条目。

rule:路由策略数据库中的规则。

常用动作命令:

show:显示,展示。

add:添加。

del:删除。

help:某些参数不支持动作命令或还有其它扩展命令,可以使用 help 查看其语法。


例如:查看本机IP地址信息

查看本机路由表信息:

SS 命令

ss命令用来显示处于活动状态的套接字信息。ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。

ss 选项 过滤

常用选项:

t: tcp协议相关

u: udp协议相关

w: 裸套接字相关

xunix sock相关

l: listen状态的连接

a: 所有

n: 数字格式

p: 相关的程序及PID

e: 扩展的信息

m:内存用量

o:计时器信息

过滤:

所有标准TCP状态:established, syn-sent, syn-recv, fin-wait-1, fin-wait-2, time-wait, closed,close-wait, last-ack, listen and closing.

all:所有状态。

connected:除了监听和关闭的所有状态。

synchronized:除了同步之外的所有状态。

bucket:保持迷你套接字。

big:相对bucket,大。


例如:显示所有TCP套接字。

ping 命令

ping 主要通过 ICMP 封包 来进行行整个网络的状况报告,最简单的功能就是传送 ICMP 封包去要求对方主机回应是否存在与网络环境中。

上面的回应信息当中,几个重要的项目是这样的:

64 bytes:表示这次传送的 ICMP 封包大小为 64 bytes ,这是预设值, 在某些特殊场合中,例如要搜索整个网络內最大的 MTU 時,可以使用 -s 2000 之类的数值来取代;

icmp_seq=1:ICMP 所侦测进行的次数,第一次编号为 1 ;

ttl=64:TTL 与 IP 封包內的 TTL 是相同的,每经过一个带有 MAC 的节点 (node) 时,例如 router, bridge 时, TTL 就会減少一,预设的 TTL 为 255 , 你可以通过 -t 150 之类的方法来重新设定预设 TTL 数值;

time=129 ms:回应时间,单位有 ms(0.001秒)及 us(0.000001秒), 一般來说,越小的回应时间,表示两部主机之间的网络连线越好!

traceroute

用于主机间通讯追踪

traceroute 选项 参数 地址

常用选项与参数:

n :可以不必进行主机的名称解析,单纯用 IP ,速度较快!

U :使用 UDP 的 port 33434 來进行侦测,这是预设的侦测协定;

I :使用 ICMP 的方式来进行侦测;

T :使用 TCP 来进行侦测,一般使用 port 80 测试。

w :若对方主主机在几秒內沒有回应就宣告失败...预设是 5 秒

p 端口号:若不想使用 UDP 与 TCP 的预设的端口号来侦测,可在此改变端口号。

i 装置:用在比较复杂的环境,如果你的网络设备很多很复杂,才会用到这个參數; 举例来说,你有两条 ADSL 可以连接到外部,那你的主机回应有两个 ppp, 你可以使用其。

i 来选择是 ppp0 还是 ppp1 啦!

g 路由:与-i 的参数相仿,只是 -g 后面接的是 gateway 的 IP 。

netstat

示网络连接,路由表,接口状态,伪装连接,网络链路信息和组播成员组。

netstat 选项 参数 地址

无选项时, netstat 显示打开的套接字. 如果不指定任何地址族,那么打印出所有已配置地址族的有效套接字。

常用选项:

r:显示内核路由表。

g:显示IPv4 和 IPv6的IGMP组播组成员关系信息。

i:示所有网络接口列表或者是指定的 iface 。

M:显示一份所有经伪装的会话列表。

s:显示每种协议的统计信息。

v:细模式运行。特别是打印一些关于未配置地址族的有用信息。

n:显示数字形式地址而不是去解析主机、端口或用户名。

--protocol=family , -A:指定要显示哪些连接的地址族,family 以逗号分隔的地址族列表,比如 inet, unix,ipx, ax25, netrom, 和 ddp。 这样和使用 --inet, --unix (-x), --ipx, --ax25, --netrom, 和 --ddp 选项效果相同,地址族 inet 包括raw, udp 和tcp 协议套接字。

c:将使 netstat 不断地每秒输出所选的信息。

e:显示附加信息。使用这个选项两次来获得所有细节。

o:包含与网络定时器有关的信息。

p:显示套接字所属进程的PID和名称

a:示所有正在或不在侦听的套接字。加上 --interfaces 选项将显示没有标记的接口。


例如:列出目前的所有网络连线状态,使用 IP 与 port number

netstat 的输出主要分分两大部分,分別是 TCP/IP 的网络部分,以及传统的 Unix socket 部分。

关于网络连接状态的输出部分,他主要是分为底下几个大项:

  • Proto:该连线的封包协定,主要为 TCP/UDP 等封包;
  • Recv-Q:非由使用者程序连接所辅助而來的总 bytes 数;
  • Send-Q:由远端主机所传送而來,但不具有 ACK 标志的总 bytes 数, 意指主动连线 SYN 或其他标志的封包所占的 bytes 数;
  • Local Address:本地端的位址,可以是 IP (-n 参数存在时), 也可以是完整的主机名称。使用的格是就是『 IP:port 』只是 IP 的格式有 IPv4 及 IPv6 的差异。 如上所示,在 port 22 的介面中,使用的 :::22 就是针对 IPv6 的显示,事实上他就相同于 0.0.0.0:22 的意思。 至于 port 25 不针对 lo 开放,意指 Internet 基本上是无法连接到我本机的 25 端口啦!
  • Foreign Address:远端的主机 IP 与 port number
  • stat:状态列,主要的状态含有:
    • ESTABLISED:已建立连线的状态;
    • SYN_SENT:发出主动连线 (SYN 标志) 的连线封包;
    • SYN_RECV:接收到一个要求连线的主动连线封包;
    • FIN_WAIT1:该插槽服务(socket)已中断,该连线正在断线中;
    • FIN_WAIT2:该连线已挂断,但正在等待对方主机回应断线确认的封包;
    • TIME_WAIT:该连线已挂断,但 socket 还在网络上等待結束;
    • LISTEN:通常用在服务的监听 port !可使用『 -l 』参数查阅。

 

 

参与评论