ifcfg命令

ifconfig功能:

ifconfig命令是一个古老的命令,它能够简单的获取网卡设备的网络接口配置信息,并且能够修改这些配置,临时或永久生效。

  安装时如果使用的是最小化安装CentOS 7,安装完成后是没有ifconfig命令,检查/sbin下也没有这个命令。这时我们可安装ifconfig命令:

   #yum install -y net-tools\*

ifconfig命令:ifconfig  [INTERFACE]

   #ifconfig默认只显示激活的网络接口 

  -a:显示所有接口,包括inactive非激活状态的接口。

  lo是表示主机的回坏地址,这个一般是用来测试一个网络程序,但又不想让局域网或外网的用户能够查看,只能在此台主机上运行和查看所用的网络接口。

网卡配置信息:/etc/sysconfig/network-scripts/ifcfg-eno16777736

DEVICE       物理设备名,和文件ifcfg-eno里的eno要一致
BROADCAST    广播地址

IPADDR             IP地址

HWADDR          物理地址

NETMASK        子网掩码 

NETWORK   网络地址 

GATEWAY        网关地址

TYPE                 类型(Ethernet 以太网)

ONBOOT           启动或者重启网络时,是否启动该设备,yes是启动,no是不启动
BOOTPROTO    开机协议,最常见的三个参数如下:

          tatic(静态IP)
          none(不指定)
          dhcp(动态获取网络配置相关信息)

历来Linux系统中修改这些参数的方式通常有:命令、配置文件两种。其中通过命令设置可以立即生效但重启后将失效,通过配置文件修改实现永久生效,但不会立即生效。

配置网络临时生效命令:

~]# ifconfig eht0 192.168.1.111  netmask 255.255.255.0

配置网络永久生效方式:

vi /etc/sysconfig/network-scripts/ifcfg-eno16777736 修改此文件

i编辑此文件

DEVICE=eth0            设备名

IPADDR=192.168.1.98    修改IP地址

NETMASK=255.255.255.0   修改子网掩码

GATEWAY=192.168.1.1    修改网关

DNS1=8.8.8.8         修改DNS服务器

ONBOOT=yes          开机启动网卡服务

wq保存退出

重启网络服务:

要想生效,必须重启Linux或者重启网络服务,我们重启网络服务,执行如下命令:

service network restart 

开启网卡服务:

CentOS默认网卡是没有启动的,执行如下命令,修改网卡配置文件可开启网卡服务:

vi /etc/sysconfig/network-scripts/ifcfg-eth0 

将ONBOOT="no"改为ONBOOT="yes"

命令格式:ifconfig[网络设备][参数]

命令参数:

    up 启动指定网络设备/网卡。

     ~]# ifconfig eth0 up  激活

    down 关闭指定网络设备/网卡。该参数可以有效地阻止通过指定接口的IP信息流,如果想永久地关闭一个接口,我们还需要从核心路由表中将该接口的路由信息全部删除。

     ~]# ifconfig eth0 down 停止

    arp 设置指定网卡是否支持ARP协议。

      ~]# ifconfig eth0 arp   启用arp协议

      ~]# ifconfig eth0 -arp  关闭arp协议

   -promisc 设置是否支持网卡的promiscuous模式,如果选择此参数,网卡将接收网络中发给它所有的数据包

    ~]# ifconfig eth0 -promisc

     -allmulti 设置是否支持多播模式,如果选择此参数,网卡将接收网络中所有的多播数据        

    ~]# ifconfig eth0 -allmulti

   -a 显示全部接口信息包含活动的与非活动的

    ~]# ifconfig -a 

    -s 显示摘要信息(类似于 netstat -i)

IP命令

语法格式:

    ip [ OPTIONS ] OBJECT { COMMAND | help }

     OBJECT:= { link | addr | route | netns }

ip link 设备 (device) 的相关设定

~]# ip [-s] link show 查看主机上网络接口设备相关的信息.缩写:show、list、lst、sh、ls

show:仅显示出这个设备的相关内容,如果加上 -s 会显示更多统计数据,显示出整个设备的硬件相关信息,如上所示,包括 MAC地址、MTU,接收 (RX) 及传送 (TX) 的封包数量等,详细内容与 ifconfig 所输出的结果相同。

-s选项出现两次或者更多次,ip会输出更为详细的错误信息统计

~]# ip -s -s  link ls eno16777736

ip link set [device] [参数] 改变设备的属性,缩写:set、s

启动、关闭网络接口设备的相关信息

  ~]#ip link set eth1 up   启动eth1设备 

  ~]#ip link set eth1 down   关闭eth1这个设备

就像ifconfig的用法一样这个等于传统的ifconfig eth0 up | ifconfig eth0 down

设置MTU的大小,默认为1500

~]#ip link set eth1 mtu 1000

# 更改 MTU为1000 bytes,单位就是 bytes 

重命名网络接口名称(在重命名前首先要关闭该网络设备)

 ~]#ip link set eth0 down      关闭设备

 ~]#ip link set eth1 name eth2   重新设定

 ~]#ip link show             查看信息

启用或禁用多播功能:

ip link set eth0 multicast on 禁用

ip link set eth0 multicast off 启用

ip address  

ip link 是与 OSI 七层模型的第二层数据链路层有关的配置命令,ip addr 就是与第三层网络层有关的配置命令。主要是设定与 IP 有关的各项参数,包括 netmask, broadcast 等等。

语法格式:

     ip address [add|del] [IP参数] [dev 设备名] [相关参数]

修改网络设备的MAC地址。
~]#ip link set dev eth1 address 00:01:4f:00:15:f1

显示出所有接口设备的 IP 信息

~]#ip address show

显示单个网卡接口设备

~]#ip addr list eth1

ip address add 添加一个新的协议地址 缩写:add 、a

label 用来给设备设定一个标签别名,有别名才可以在ifconfig命令下显示此接口设备。

示例: 在以太网接口eno16777736上增加一个地址192.168.1.100,掩码长度为24位(155.155.155.0),标签为 eno16777736:1

~]#ip addr add 192.168.1.100/24 brd + dev eno16777736 label eno16777736:1

这个命令等于传统的ifconfig eth1:1 192.168.4.2/24

删除一个协议地址. 缩写:delete、del、d
~]#ip addr del 192.168.1.100/24 brd + dev eno16777736 label eno16777736:1

ip address flush清除协议地址. 缩写:flush、f
示例: 删除属于私网10.0.0.0/8的所有地址:
ip -s -s a f to 10/8

给一个网卡接口设备添加多个IP

route:路由的查看与设定

语法格式:

ip route add TYPE PREFIX via GW [dev IFACE][src SOURCE_IP]

显示路由设定信息

~]#ip route show 

proto:此路由的路由协定

kernel:指的是直接由核心判断自动设定。 

scope:路由的范围

添加新路由

~]#ip route add 192.168.1.100/24 dev eth1

修改路由

~]#ip route change 

删除路由

ip route del 192.168.5.0/24 dev eth1

清除所有ipv4路由cache
ip route flush cache

列出某个路由表的内容

ip route ls table fddi153

all 列出所有表的路由

ip route ls table all

cache 列出路由缓存的内容

ip ro ls 192.168.2.220 tab cache

netns PID:ns为namespace,用于将接口移动到指定的网络名称空间;

CentOS 6不支持此配置

~]#ip netns add mynet 添加一个网络名称空间叫mynet

  ~]#ip link set eth1 netns mynet 添加到mynet网络名称空间

  ~]#ipnetns exec mynet ip link show 查看该空间的网络配置

 ~]#ip netns del mynet删除网络空间删除后回到原有网络名称空间

SS命令

原来netstat已经是明日黄花了,官方已经不再更新了,它已经被ss命令和ip命令所取代,或许在不久的将来在Linux发行版中就将见不到netstat的身影了。所以,如果还有人在用netstat,你要建议他使用ss和ip

替代方案简单的示意图:

SS命令:显示Linux的TCP / UDP网络和Socket信息

 ss命令用来显示接口的统计数据。它可以显示的统计数据包套接字,TCP套接netstat命字,UDP套接字,DCCP插口,RAW插槽,Unix域套接字,等。它可以显示出类似的信息令 ,显示比其他工具更快速更高效的TCP和状态信息。它是用于跟踪TCP连接状态的,非常有用的工具。 

大多数Linux发行版都带有SS和许多监控工具。

语法格式: ss[选项]

选项:

 -h:显示帮助信息

 -V:显示指令版本信息

 -n:不解析服务名称,以数字方式显示

 -a:显示所有的套接字

 -l:显示处于监听状态的套接字

 -o:显示计时器信息

 -m:显示套接字的内存使用情况

 -p:显示使用套接字的进程信息

 -i:显示内部的TCP信息

 -4:只显示ipv4的套接字

 -6:只显示ipv6的套接字

 -t:只显示tcp套接字

 -u:只显示udp套接字

 -d:只显示DCCP套接字

 -w:仅显示RAW套接字

 -x:仅显示UNIX域套接字

显示套接字摘要,当前建立列表,封闭,孤立,等待TCP套接字

 ~]#ss -s

wKiom1aGmSaCg7UaAAAVyYhy99U738.png

显示所有打开的网络端口

~# ss -l

wKiom1aGmZ3TA1GLAAAcDwq1248009.png

显示所有UDP Sockets

~]# ss -u -a

wKioL1aGm8vh676MAAAcNrJ_xP0428.png

找出打开套接字/端口应用程序

~]# ss -pl | grep  8860

过滤tcp连接状态中源端口或目的端口是22的

~]# ss -tan '( dport = :22 or sport = :22 )'