ifcfg命令

ifconfig功能:

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


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

   #yum install -y net-tools\*

ifconfig命令:ifconfig  [INTERFACE]

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

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


wKioL1aE5Z6D5QvtAAAtfuCBNmM254.png

  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 wKiom1aE8Juz3Cr1AAA3F1wxo3A890.png

开启网卡服务:

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

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

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

wKioL1aE83uwBFs2AAAZgyxyiSo395.png

命令格式: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)

wKiom1aE9trwvLG1AAAKtDoUvlk075.png

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

wKiom1aGGYSS94QDAAAeec_rP9g486.png

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

wKioL1aGHmeR8GEPAAA7vAZelbk170.png

这个命令等于传统的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

wKiom1aGHv_gPEJgAAAc9rXub5Y832.png


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


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

wKioL1aGOZXhEHIrAAAkJOk1lTY463.png

route:路由的查看与设定

语法格式:

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

显示路由设定信息

~]#ip route show 

wKioL1aGMp_xGk_oAAAK10Zweh4355.png

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
wKioL1aGN2ijJrQtAAApJp36DWY076.png

cache 列出路由缓存的内容

ip ro ls 192.168.2.220 tab cache


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

CentOS 6不支持此配置

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

wKiom1aGfNSAsn6gAAAYXYLaI0A673.png

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

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

wKiom1aGk5eBGlj5AAAU_OTjsIA288.png

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

wKiom1aGlBKDreOGAAAfvxBs8w0127.png

SS命令

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

替代方案简单的示意图:

wKioL1aGltrxxY3jAACtU7s0Pkg135.png


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

wKioL1aGnKPCALbbAAAZH1id0fE312.png


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

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

wKiom1aGnr-h6GAHAAAKOQtTC8E650.png