本文是基于centos

配置DNS条目:

配置文件:/etc/resolv.conf

修改主机名称:

  • 命令:hostname NAME。重启后失效
  • 配置文件:/etc/sysconfig/network
  • CentOS7专用命令:hostnamectl

配置IP地址方式:

1,静态指定:

  • 命令:

    ifcfg家族:

    • ifconfig:配置IP,NETMASK(子网掩码)

    • route:路由查看及管理

      路由条目类型:

      • 主机路由:目标地址为单个ip
      • 网络路由:目标地址为ip网络
      • 默认路由:目标为任意网络,0.0.0.0/0.0.0.0
    • netstat:查看状态及统计数据

    iproute2家族:

    • ip addr:配置IP,NETMASK(子网掩码)
    • ip link:接口(网卡)
    • ip route:路由
    • ss:查看状态及统计数据(比netstat性能好)

    CentOS7专用:nm(network manager)家族:

    • nmcli:命令行工具
    • nmtui:text window工具
  • 配置文件

    redhat及相关发行版:/etc/sysconfig/network-scripts/ifcfg-网卡名

    ll /etc/sysconfig/network-scripts/ifcfg-*
    -rw-r--r--. 1 root root 282 Nov 30 12:14 /etc/sysconfig/network-scripts/ifcfg-enp0s3
    -rw-r--r--. 1 root root 254 Aug 24 2018 /etc/sysconfig/network-scripts/ifcfg-lo

2,动态指定:依赖于本地网络中的DHCP服务器

DHCP:Dynamic Host Configure Procotol

客户端请求DHCP服务器,给我:【IP/netmask】,【gateway】,【连接外网的路由】,使用命令:dhclient -d

客户端想DHCP服务器请求ip地址时,是使用RARP协议的。

RARP协议:我(客户端)有MAC地址,谁(DHCP服务器)能给我一个IP啊。以广播形式发送。

如果网络里有多个DHCP服务器的话,谁给的快,就使用谁给的ip。这个ip是有使用期限的。

到期前,客户端给DHCP服务器单独发送请求(注意,这里不是广播了),要求延期使用。

网络接口命名方式:

1,传统命名方式

  • 以太网:ethX[0,正无穷),例如:eth0,eth1,。。。
  • PPP网络:pppX[0,正无穷),例如:ppp0,ppp1,。。。

2,可预测命名方案(centos7):支持多种不同的命名机制。

基于固件(fireware)命名,或基于主板拓扑结构命名(pci插槽号等)。

  • 如果fireware或bios为主板上集成的设备,所提供的设备索引信息可用,则根据此索引进行命名。例如:eno1,eno2,。。。
  • 如果fireware或bios为pci-e扩展槽的设备,所提供的设备索引信息可用,则根据此索引进行命名。例如:ens1,ens2,。。。
  • 如果fireware接口的物理位置信息可用,则根据此信息命名,例如:enp2s0,enp1s1
  • 如果用户显示定义,也可以根据MAC地址命名,例如:enx12123311
  • 上述均不可用,则使用传统命名方式。

命名格式的含义:

  • en:ethernet(以太网)
  • wl:wlan(无线网)
  • ww:wwan(无线互联网)
  • o<index>:基础设备的索引号
  • s<slot>:扩展槽的索引号
  • x<MAC>:基于MAC地址命名
  • p<bus>s<slot>:基于总线及槽的拓扑结构命名

激活网卡/无效网卡等:

ifconfig interface [aftype] options | address ...

  • 查看所有激活的网卡信息:ifconfig

  • 查看所有的网卡信息(包括为激活的):ifconfig -a

  • 查看某个网卡的信息(centos6):ifconfig 网卡名

    # ifconfig eth0
    eth0 Link encap:Ethernet HWaddr 08:00:27:80:F4:35
    inet addr:192.168.0.108 Bcast:192.168.0.255 Mask:255.255.255.0
    inet6 addr: fe80::a00:27ff:fe80:f435/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:570 errors:0 dropped:0 overruns:0 frame:0
    TX packets:72 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:40376 (39.4 KiB) TX bytes:12224 (11.9 KiB)
  • 查看某个网卡的信息(centos7):ifconfig 网卡名

    # ifconfig enp0s3
    enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    inet 192.168.0.113 netmask 255.255.255.0 broadcast 192.168.0.255
    inet6 fe80::b497:5ec:1efb:72b5 prefixlen 64 scopeid 0x20<link>
    ether 08:00:27:10:c2:53 txqueuelen 1000 (Ethernet)
    RX packets 16814 bytes 2630803 (2.5 MiB)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 2433 bytes 569211 (555.8 KiB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    flags:网卡支持的功能

    • up:激活的网卡
    • broadcast:广播功能
    • multicast:组播功能
    • mtu:单次传输的最大字节数
    • inet:IP地址:
    • netmask:子网掩码
    • broadcast:广播地址
    • ether(centos6:HWaddr):MAC地址
    • txqueuelen:排队长度
    • RX:接受到的数据信息
    • TX:发送出去的数据信息
  • 激活网卡(给网卡赋予ip地址和子网掩码):

    • ipconfig eth0 192.168.0.110/24 up

      24的含义是24个1,所以24个1对应的子网掩码就是255.255.255.0.

      如果是16的话,对应的子网掩码就是255.255.0.0

    • ipconfig eth0 192.168.0.110 netmask 255.255.255.0 up

    此命令是立即生效的,但是重启后,失效。

  • 给一个网卡添加多个ip地址:ifconfig IFACE:LABEL 192.168.0.110/24

    IFACE:LABEL:eth0:0或者eth0:1。必须有冒号,冒号前面必须是原来网卡的名字。

  • 使网卡无效:ipconfig eth0 down

  • 添加/删掉ipv6地址

    • ifconfig eth0 add addr/prefixlen
    • ifconfig eth0 del addr/prefixle
  • 选项介绍:

    • 启用某个功能/让某个功能无效:使用-号。

      比如启用功能:promisc

      # ifconfig eth0 promisc
      # ifconfig eth0
      eth0 Link encap:Ethernet HWaddr 08:00:27:80:F4:35
      inet addr:192.168.0.110 Bcast:192.168.0.255 Mask:255.255.255.0
      inet6 addr: fe80::a00:27ff:fe80:f435/64 Scope:Link
      UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
      RX packets:2116 errors:0 dropped:0 overruns:0 frame:0
      TX packets:715 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
      RX bytes:185897 (181.5 KiB) TX bytes:116601 (113.8 KiB)

      多了PROMISC。

      比如禁用广播和组播功能:# ifconfig eth0 -allmulti

设置路由及查看路由条目

  • 以数字格式查看路由条目:route -n

    $ route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    0.0.0.0 192.168.0.1 0.0.0.0 UG 100 0 0 enp0s3
    192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s3
    192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
  • 反解数字成主机名,查看路由条目:route

    $ route
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    default gateway 0.0.0.0 UG 100 0 0 enp0s3
    192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s3
    192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
  • 添加路由

    路由条目类型:

    • 主机路由:目标地址为单个ip
    • 网络路由:目标地址为特定的ip网络
    • 默认路由:目标为任意网络,0.0.0.0/0.0.0.0

    route add [-net|-host] target [netmask Nm][gw Gw] [[dev] If]

    net:代表目标是ip网络

    host:代表目标是单个

    Gw:下一跳的地址

    Flags:

    • U:网卡是启用状态
    • G:此条是网关

    Metric:度量值,到达这个网络需要的开销。

    Iface:经过本地的哪个接口(网卡)

    route结果里的Destination:target(目标网络的IP地址)

    route结果里的Genmask:目标网络的掩码

    route结果里的Gateway:下一跳的地址

    实例:添加目标网络为10.0.0.0/8(因为目标是网络,所以使用-net),下一跳的地址是192.168.0.1,经过本地的eth0网卡(本地的网卡可以省略,会根据下一跳的地址,自动找出来:使用本地哪个网卡)。

    注意:下一跳的IP必须和本地的网卡在同一个网络里。

    # route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
    # route add -net 10.0.0.0/8 gw 192.168.0.1
    # route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
    10.0.0.0 192.168.0.1 255.0.0.0 UG 0 0 0 eth0
    # route add -net 10.0.0.0/16 gw 192.168.0.1 dev eth0
    # route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
    10.0.0.0 192.168.0.1 255.255.0.0 UG 0 0 0 eth0
    10.0.0.0 192.168.0.1 255.0.0.0 UG 0 0 0 eth0

    添加目标为单个IP

    # route add -host 192.168.0.111 gw 192.168.0.1
    # route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    192.168.0.111 192.168.0.1 255.255.255.255 UGH 0 0 0 eth0
    192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
    10.0.0.0 192.168.0.1 255.255.0.0 UG 0 0 0 eth0
    10.0.0.0 192.168.0.1 255.0.0.0 UG 0 0 0 eth0

    注意:使用-host时,不能指定子网掩码;Flags处有了H标识。

  • 删除路由:

    route del addr/prefixlen gw GW dev if

    删除单个IP:

    # route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    192.168.0.111 192.168.0.1 255.255.255.255 UGH 0 0 0 eth0
    192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
    10.0.0.0 192.168.0.1 255.255.0.0 UG 0 0 0 eth0
    10.0.0.0 192.168.0.1 255.0.0.0 UG 0 0 0 eth0
    # route del 192.168.0.111 gw 192.168.0.1 dev eth0
    # route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
    10.0.0.0 192.168.0.1 255.255.0.0 UG 0 0 0 eth0
    10.0.0.0 192.168.0.1 255.0.0.0 UG 0 0 0 eth0

    删除默认网关:

    # route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
    0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
    0.0.0.0 192.168.0.2 0.0.0.0 UG 0 0 0 eth0
    # route del default
    # route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
    0.0.0.0 192.168.0.2 0.0.0.0 UG 0 0 0 eth0

    删除网络:

    # route del -net 10.0.0.0 gw 192.168.0.1 netmask 255.255.0.0
    # route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
    10.0.0.0 192.168.0.1 255.0.0.0 UG 0 0 0 eth0
    # route del -net 10.0.0.0/8 gw 192.168.0.1
    # route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
  • 如何让机器连接上互联网?一般都是网关机器是连着外网的,所以只需要添加一个路由体哦条目,让目的是外网的访问,都扔给网关就好了。

查看路由信息

  • 显示路由信息:-r

    # netstat -rn
    Kernel IP routing table
    Destination Gateway Genmask Flags MSS Window irtt Iface
    192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
    0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0

    -n:以数字方式显示。

查看网络连接信息

  • 显示网络连接信息

    • 显示tcp协议的连接信息:-t

      # netstat -t
      Active Internet connections (w/o servers)
      Proto Recv-Q Send-Q Local Address Foreign Address State
      tcp 0 64 192.168.0.111:ssh 192.168.0.110:56087 ESTABLISHED
    • 显示udp协议的连接信息:-u

      # netstat -u
      Active Internet connections (w/o servers)
      Proto Recv-Q Send-Q Local Address Foreign Address State
    • 以数字形式显示连接信息:-n

      $ netstat -tn
      Active Internet connections (w/o servers)
      Proto Recv-Q Send-Q Local Address Foreign Address State
      tcp 0 64 192.168.0.113:22 192.168.0.110:64168 ESTABLISHED

      Proto:协议类型

      Recv-Q:接受队列的排队数量

      Send-Q:发送队列的排队数量

      Lacal Address:这个连接的本机地址和端口号

      Foreign Address:这个连接的另一端的地址和端口号

      State:连接的状态

    • 显示sctp协议的连接信息:-S

    • 显示raw(裸套接字)的连接信息:-w

    • 显示所有状态的连接信息:-a

      不加a的话,只显示state是非listen状态的连接;加上a就意味着显示所有状态的tcp连接信息。

      # netstat -tan
      Active Internet connections (servers and established)
      Proto Recv-Q Send-Q Local Address Foreign Address State
      tcp 0 0 0.0.0.0:53824 0.0.0.0:* LISTEN
      tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
      tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
      tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
      tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
      tcp 0 0 192.168.0.111:22 192.168.0.110:56087 ESTABLISHED
      tcp 0 0 :::43002 :::* LISTEN
      tcp 0 0 :::111 :::* LISTEN
      tcp 0 0 :::22 :::* LISTEN
      tcp 0 0 ::1:631 :::* LISTEN
      tcp 0 0 ::1:25 :::* LISTEN
    • 显示处于监听状态下的连接信息:-l

      $ netstat -tln
      Active Internet connections (only servers)
      Proto Recv-Q Send-Q Local Address Foreign Address State
      tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
      tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN
      tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN
      tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
    • 显示连接是由哪个进程(并显示pid)发起的:-p

      # netstat -tpe
      Active Internet connections (w/o servers)
      Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
      tcp 0 64 192.168.0.111:ssh 192.168.0.110:56087 ESTABLISHED root 14440 1874/sshd
    • 显示扩展信息:-e

      显示user和Inode

      user:由哪个用户打开的连接

      Inode:打开的连接在linux里都存在一个与之对应的套接字文件,这个套接字文件的inode号码。

    • 常用选项的组合:

      -tan:显示所有状态的tcp连接,以数字形式表示。

      -uan:显示所有状态的udp连接,以数字形式表示。

      -tnl:只显示处于监听状态下的tcp连接,以数字形式表示。

      -unl:只显示处于监听状态下的udp连接,以数字形式表示。

      -tunlp:只显示处于监听状态下的tcp或udp连接,以数字形式表示,并显示是由哪个进程(并显示pid)发起的。

查看网卡接收和发送数据的统合信息

  • 查看所有网卡的接收和发送的信息:-i

    $ netstat -i
    Kernel Interface table
    Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
    enp0s3 1500 2472 0 0 0 1003 0 0 0 BMRU
    lo 65536 84 0 0 0 84 0 0 0 LRU
    virbr0 1500 0 0 0 0 0 0 0 0 BMU
  • 查看指定网卡的接收和发送的信息:-I网卡名。注意中间没有空格

    $ netstat -Ienp0s3
    Kernel Interface table
    Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
    enp0s3 1500 2464 0 0 0 998 0 0 0 BMRU

    Iface:网卡名

    MTU:单词传输的单位字节数

    RX/TX-OK:接收/发送成功的字节数

    RX/TX-ERR:接收/发送错误的字节数

    RX/TX-DRP:接收/发送丢弃的字节数

    RX/TX-OVR:接收/发送溢出的字节数

    FLG:此网卡启用的功能

    • B:广播
    • M:组播
    • R:运行
    • U:处于激活状态

centos里启用/禁用网卡的命令:

注意:要想执行下面2个命令,必须存在/etc/sysconfig/network-scripts/ifcfg-网卡名文件才可以。

  • ifup
  • ifdown

修改主机名称

  • hostname命令:

    立即生效,重启后失效。

    • 查看主机名:hostname
    • 修改主机名:hostname HOSTNAME
  • hostnamectl命令:centos7才可以使用。

    • 显示当前主机名的相信信息:hostnamectl status

      $ hostnamectl status
      Static hostname: localhost.localdomain
      Icon name: computer-vm
      Chassis: vm
      Machine ID: 49e09ca283034d21b72a490d0560bad0
      Boot ID: cbec389bce8c495c8ae9fefa9f2331e1
      Virtualization: kvm
      Operating System: CentOS Linux 7 (Core)
      CPE OS Name: cpe:/o:centos:centos:7
      Kernel: Linux 3.10.0-957.el7.x86_64
      Architecture: x86-64
    • 修改主机名:hostnamectl set-hostname

      立即生效,并且永久有效。

    • hostnamectl的使用帮助:hostnamectl --help

  • 通过修改配置文件,修改主机名称。

    文件:/etc/sysconfig/network。

    修改HOSTNAME=后面的内容,就修改了主机名称。但不能立即生效,重启后会生效,并永久有效。

    # cat /etc/sysconfig/network
    NETWORKING=yes
    HOSTNAME=c6

配置DNS

1,通过本地的/etc/hosts

添加一个条目:192.168.0.113 centos7 cent.com。一个IP地址后面可以有多个别名。

# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.113 centos7 cent.com
# ping centos7
PING centos7 (192.168.0.113) 56(84) bytes of data.
64 bytes from centos7 (192.168.0.113): icmp_seq=1 ttl=64 time=0.644 ms
# ping cent.com
PING centos7 (192.168.0.113) 56(84) bytes of data.
64 bytes from centos7 (192.168.0.113): icmp_seq=1 ttl=64 time=0.352 ms

2,通过配置文件,指定DNS服务器的IP地址。这个DNS服务器自己如果没有维护,它就会自动去互联网上找别的DNS服务器去解析网址,所以这个DNS服务器要能连接上外网!

配置文件:/etc/resolv.conf

nameserver就是DNS服务器的IP,最多可以指定3个nameserver。下面的192.168.0.1是网关,可以连接外网。

# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.0.1

3,测试DNS服务器是否好用:dig -t A www.baidu.com

dig命令不会去先找/etc/hosts文件,它直接从dns服务器上找。

# dig -t A www.baidu.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> -t A www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14893
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION:
;www.baidu.com. IN A ;; ANSWER SECTION:
www.baidu.com. 933 IN CNAME www.a.shifen.com.
www.a.shifen.com. 50 IN A 39.156.66.18
www.a.shifen.com. 50 IN A 39.156.66.14 ;; Query time: 19 msec
;; SERVER: 192.168.0.1#53(192.168.0.1)
;; WHEN: Sat Jan 4 21:43:54 2020
;; MSG SIZE rcvd: 90

iproute2家族命令介绍

ip命令后面紧跟,起名叫object。iproute2家族命令未来可能取代ifconfig命令。

object有:link,netns,route等等。

每个object基本都有:add,del,set,show/list等操作。

而且,object和操作命令都支持简写。

1,添加,删除,修改网卡(接口):ip link...

  • 添加网络接口:ip link add
  • 删除网络接口:ip link del
  • 修改网络接口:ip link set
  • 显示网络接口:ip link show/list

link可以简写成li

list可以简写成li

show可以简写成sh

# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:80:f4:35 brd ff:ff:ff:ff:ff:ff
# ip link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:80:f4:35 brd ff:ff:ff:ff:ff:ff

<BROADCAST,MULTICAST,UP,LOWER_UP>:启用的功能

qdisc:队列

pfifo_fast:先进先出队列

qlen:队列长度

brd:广播地址

  • 启用/禁用网络接口:ip link set eth1 up/down

    # ip li li eth1.1
    4: eth1.1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 5e:17:b9:5e:b7:ed brd ff:ff:ff:ff:ff:ff
    # ip link set eth1.1 up
    # ip li li
    4: eth1.1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 5e:17:b9:5e:b7:ed brd ff:ff:ff:ff:ff:ff
    # ip link set eth1.1 down
    # ip li li eth1.1
    4: eth1.1: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 5e:17:b9:5e:b7:ed brd ff:ff:ff:ff:ff:ff
  • 启用/禁用多播功能:ip link set eth1 multicast on/off

    # ip li li eth1.1
    4: eth1.1: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 5e:17:b9:5e:b7:ed brd ff:ff:ff:ff:ff:ff
    # ip link set eth1.1 multicast off
    # ip li li eth1.1
    4: eth1.1: <BROADCAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 5e:17:b9:5e:b7:ed brd ff:ff:ff:ff:ff:ff
    # ip link set eth1.1 multicast on
    # ip li li eth1.1
    4: eth1.1: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 5e:17:b9:5e:b7:ed brd ff:ff:ff:ff:ff:ff
  • 修改网络接口的名称:ip link set eth1 name NAME

    # ip link list
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:80:f4:35 brd ff:ff:ff:ff:ff:ff
    3: veth1.2: <NO-CARRIER,BROADCAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether d2:01:ed:42:dd:67 brd ff:ff:ff:ff:ff:ff
    4: eth1.1: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 5e:17:b9:5e:b7:ed brd ff:ff:ff:ff:ff:ff
    # ip link set eth1.1 name eth3.1
    # ip link list
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:80:f4:35 brd ff:ff:ff:ff:ff:ff
    3: veth1.2: <NO-CARRIER,BROADCAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether d2:01:ed:42:dd:67 brd ff:ff:ff:ff:ff:ff
    4: eth3.1: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 5e:17:b9:5e:b7:ed brd ff:ff:ff:ff:ff:ff
  • 修改mtu:ip link set eth1.1 mtu 1000

    以太网的最大mtu值是1500

    # ip link set eth3.1 mtu 1000
    [root@c6 ~]# ip li li eth3.1
    4: eth3.1: <BROADCAST,MULTICAST> mtu 1000 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 5e:17:b9:5e:b7:ed brd ff:ff:ff:ff:ff:ff
  • 显示帮助:ip link help

2,在指定网卡上添加,删除,显示ip地址:ip addr...

在同一个网卡上可以添加多个不同的ip地址!!

  • 从指定网卡(接口)上删除ip地址:ip addr del ipaddr/len dev eth0

    例子:从网卡eth0上删除ip地址192.168.0.11/24

    # ip ad li
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:80:f4:35 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.111/24 scope global eth0
    inet 192.168.0.11/24 scope global secondary eth0
    inet6 fe80::a00:27ff:fe80:f435/64 scope link
    valid_lft forever preferred_lft forever
    # ip addr del 192.168.0.11/24 dev eth0
    # ip ad li
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:80:f4:35 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.111/24 scope global eth0
    inet6 fe80::a00:27ff:fe80:f435/64 scope link
    valid_lft forever preferred_lft forever
  • 一次删除网卡上的所有ip

    # ip addr flush dev eth0
  • 显示网卡(接口)上的ip地址:ip addr show/list

  • 其他选项:

    • 给添加的ip地址起一个别名,不起别名的话,使用ifconfig命令,只能看到一个ip地址。

      别名不能乱起,格式:原来的网卡:冒号后面随意!

      格式不对会出下面的错误:

      # ip addr add 192.168.0.13/24 dev eth0 label sec
      "dev" (eth0) must match "label" (sec).

      不加冒号,也可以成功,但是ifconfig命令就会出错。

      # ip addr add 192.168.0.14/24 dev eth0 label eth011
      # ifconfig
      eth0 Link encap:Ethernet HWaddr 08:00:27:80:F4:35
      inet addr:192.168.0.111 Bcast:0.0.0.0 Mask:255.255.255.0
      inet6 addr: fe80::a00:27ff:fe80:f435/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
      RX packets:3930 errors:0 dropped:0 overruns:0 frame:0
      TX packets:1314 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
      RX bytes:316975 (309.5 KiB) TX bytes:205600 (200.7 KiB) eth011: error fetching interface information: Device not found

      例子:给添加的ip一个label叫eth0:1。

      # ip addr add 192.168.0.12/24 dev eth0 label eth0:1
      # ip ad sh
      2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
      link/ether 08:00:27:80:f4:35 brd ff:ff:ff:ff:ff:ff
      inet 192.168.0.111/24 scope global eth0
      inet 192.168.0.11/24 scope global secondary eth0
      inet 192.168.0.12/24 scope global secondary eth0:1
      inet6 fe80::a00:27ff:fe80:f435/64 scope link
      valid_lft forever preferred_lft forever
      # ifconfig eth0:1
      eth0:1 Link encap:Ethernet HWaddr 08:00:27:80:F4:35
      inet addr:192.168.0.12 Bcast:0.0.0.0 Mask:255.255.255.0
      UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    • 给新添加的IP一个广播地址:

      例子:给ip一个广播地址192.168.0.255。

      # ip addr add 192.168.0.13/24 dev eth0 label eth0:2 broadcast 192.168.0.255
      # ip ad li
      2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
      link/ether 08:00:27:80:f4:35 brd ff:ff:ff:ff:ff:ff
      inet 192.168.0.111/24 scope global eth0
      inet 192.168.0.11/24 scope global secondary eth0
      inet 192.168.0.12/24 scope global secondary eth0:1
      inet 192.168.0.13/24 brd 192.168.0.255 scope global secondary eth0:2
      inet6 fe80::a00:27ff:fe80:f435/64 scope link
      valid_lft forever preferred_lft forever
      # ifconfig eth0:2
      eth0:2 Link encap:Ethernet HWaddr 08:00:27:80:F4:35
      inet addr:192.168.0.13 Bcast:192.168.0.255 Mask:255.255.255.0
      UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    • 给新添加的IP,一个可使用的限定范围:

      例子:添加一个IP,使用范围是global。还可以使用的范围:link,host

      # ip addr add 192.168.0.14/24 dev eth0 label eth0:3 broadcast 192.168.0.255 scope global
      # ip ad li
      2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
      link/ether 08:00:27:80:f4:35 brd ff:ff:ff:ff:ff:ff
      inet 192.168.0.111/24 scope global eth0
      inet 192.168.0.11/24 scope global secondary eth0
      inet 192.168.0.12/24 scope global secondary eth0:1
      inet 192.168.0.13/24 brd 192.168.0.255 scope global secondary eth0:2
      inet 192.168.0.14/24 brd 192.168.0.255 scope global secondary eth0:3
      inet6 fe80::a00:27ff:fe80:f435/64 scope link
      valid_lft forever preferred_lft forever

3,在指定的网卡上添加,删除,修改路由:ip route ...

  • 添加路由:必须指明目的,下一跳在哪,通过哪个网卡,通过网卡上的哪个ip(因为同一个网卡可以添加多个ip地址)

    下面例子的目的是:0.0.0.0/0。

    注意,和route add命令不同的是:目的不需要指明是单一ip还是网络,会自动识别。

    下一跳:192.168.0.1

    通过哪个网卡:eth0

    通过eth0上的哪个ip:192.168.0.11

    # ip route add default via 192.168.0.1 dev eth0 src 192.168.0.111
    # ip route list
    default via 192.168.0.1 dev eth0 src 192.168.0.111
  • 修改路由/替换:ip route change/replace

    用法和add一样。

  • 删除路由:ip route del 192.168.0.12/24

    如果目的地(192.168.0.12/24)是唯一的,则后面的dev,src等可以省略。

  • 显示路由:ip route show/list

  • 清空指定网段的路由:ip route flush 192/24

  • 显示特定的路由:ip route get 192.168.3.3/24

查看网卡接收和发送数据的统合信息

命令:ss。和netstat命令很像,未来可能取代netstat命令。

上面netstat命令的选项,ss也都有,用法也一样。

  • 查看连接耗费的内存:-m

  • 查看连接的计时器信息:-o

  • 使用过滤功能,去特定想看的信息:FILTER := [ state STATE-FILTER ][ EXPRESSION ]

    # ss -tan
    State Recv-Q Send-Q Local Address:Port Peer Address:Port
    LISTEN 0 128 :::111 :::*
    LISTEN 0 128 *:111 *:*
    LISTEN 0 128 :::22 :::*
    LISTEN 0 128 *:22 *:*
    LISTEN 0 128 *:39286 *:*
    LISTEN 0 128 127.0.0.1:631 *:*
    LISTEN 0 128 ::1:631 :::*
    LISTEN 0 100 ::1:25 :::*
    LISTEN 0 100 127.0.0.1:25 *:*
    LISTEN 0 128 :::54873 :::*
    ESTAB 0 0 10.247.237.54:22 10.247.237.16:61550
    # ss -tan '( dport = :22 or sport = :22 )'
    State Recv-Q Send-Q Local Address:Port Peer Address:Port
    LISTEN 0 128 :::22 :::*
    LISTEN 0 128 *:22 *:*
    ESTAB 0 64 10.247.237.54:22 10.247.237.16:61550
    # ss -tan state ESTABLISHED '( dport = :22 or sport = :22 )'
    Recv-Q Send-Q Local Address:Port Peer Address:Port
    0 64 10.247.237.54:22 10.247.237.16:61550

    '( dport = :22 or sport = :22 )':只看目标端口是22或者源端口是22的连接。

    state ESTABLISHED:只看tcp连接状态是ESTABLISHED的连接。

TCP的状态:

  • LISTEN:连接处于监听状态
  • ESTABLISHED:连接处于建立成功,通信的状态
  • FIN_WAIT_1:一方提出断开连接(分手),等待对方回应(归还照片)。
  • FIN_WAIT_2:
  • SYN_SENT:被分手了,头也不回的走掉
  • SYN_RECV:
  • CLOSED:

通过配置文件永久修改网络配置

上面介绍的修改网络配置的命令,都是临时有效的,系统重启后,就都没了。

要想永久有效,修改修改配置文件或者使用特殊的命令。

特殊的命令:

  • centos6:system-config-network或者setup
  • centos7:nmtui

配置文件:

  • ip/netmask/gw/dns等相关的配置文件:/etc/sysconfig/network-scripts/ifcfg-接口名

    centos6配置文件示例:

    DEVICE=eth0
    HWADDR=08:00:27:80:F4:35
    TYPE=Ethernet
    UUID=f303b98f-14d7-4198-900a-0b2329bb8cae
    ONBOOT=no
    NM_CONTROLLED=yes
    BOOTPROTO=dhcp

    centos7配置文件示例:

    TYPE=Ethernet
    PROXY_METHOD=none
    BROWSER_ONLY=no
    BOOTPROTO=dhcp
    DEFROUTE=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_FAILURE_FATAL=no
    IPV6_ADDR_GEN_MODE=stable-privacy
    NAME=enp0s3
    UUID=e2d60303-d70d-4335-aabd-f6c4cf86fade
    DEVICE=enp0s3
    ONBOOT=yes
    • DEVICE:设备名字,也就是ifcfg-DEVICE。

    • ONBOOT:系统系统后,是否自动激活此接口。

    • NETBOOT:网络引导:

    • UUID:此设别的唯一标识

    • IPV6INIT:是否初始化IPv6协议

    • BOOTPROTO:激活此接口时使用上面协议来激活此接口。

      常用的有:dhcp,bootp,static,none。

      如果指定成了dhcp,并且还手动指定了ip地址,则手动指定的ip地址不生效,dhcp生效。

    • TYPE:接口类型,常见的有:Ethernet,Bridge

    • DNS1:第一DNS服务器指向。

    • DNS2:第二(备用)DNS服务器指向。

    • DOMAIN:DNS搜索域

    • DEFROUTE:是否是默认路由所使用的接口(网卡)。

    • GATEWAY:默认网关

    • IPADDR:IP地址

    • NETMASK/PREFIX:子网掩码。centos6是NETMASK;centos7是PREFIX

    • IPV4_FAILURE_FATAL:ipv4出故障后,是否是严重错误。

    • USERCTL:是否允许普通用户控制此设备

    • PEERDNS:如果BOOTPROTO的值为dhcp

      默认是yes:允许dhcp服务器给的dns服务器指向,覆盖本地的dns服务器指向。

      no:不允许dhcp服务器给的dns服务器指向,覆盖本地的dns服务器指向。目的是使用本地的dns服务器指向。

    • NM_CONTROLLED:是否允许使用networkManage服务来控制此接口。

    • HWADDR:MAC地址。

    修改配置文件后,必须重启网络服务,才能让修改生效。

    centos6的网络服务有2个:network和NetworkManager。但是NetworkManager不稳定,不要使用。

    centos7的网络服务有2个:network和NetworkManager。NetworkManager已经很稳定,推荐使用。

    centos6重启网络服务的命令:service network restart

    centos6开始/停止网络服务的命令:service network start|stop

    查看centos6网络服务的命令:service network status

    # service network status
    Configured devices:
    lo eth0
    Currently active devices:
    lo eth0 eth1

    Configured devices:有配置文件的接口(网卡),由于系统里存在文件:/etc/sysconfig/network-scripts/ifcfg-eth0;不存在/etc/sysconfig/network-scripts/ifcfg-eth1文件,所有这里没有显示eth1.

    Currently active devices:处于激活的接口(网卡)

    添加/etc/sysconfig/network-scripts/ifcfg-eth1文件后,再使用service network status ,eth1就出现了。

    # service network status                                             Configured devices:
    lo eth0 eth1
    Currently active devices:
    lo eth0 eth1

    centos7重启网络服务的命令也可以使用:service network restart

    但是最佳用法:systemctl restart|start|stop|status network[.service]

    通过配置文件,给同一网卡添加多个ip地址。

    创建一个/etc/sysconfig/network-scripts/ifcfg-网卡名字:0的文件,文件里的DEVICE名字,要修改成和文件名ifcfg-后面的部分相同。

    注意:网卡别名的ip地址不能是从dhcp获取,所以BOOTPROTO的值不可以是dhcp,只能是static或none。ip地址必须手动指定。

  • 路由相关的配置文件:/etc/sysconfig/network-scripts/route-接口名

    支持2种方式,但不可以混用。

    • 方式1:每行一个路由条目:TARGET VIA

      例子:/etc/sysconfig/network-scripts/route-eth0文件的内容:

      192.168.0.10/24 via  10.247.236.1
    • 方式2:每2行一个路由条目

      ADDRESS#=IP

      NETMASK#=NETMASK

      GATEWAY#=NEXTHOP

      例子:/etc/sysconfig/network-scripts/route-eth0文件的内容:

      ADDRESS0=20.0.0.0
      METMASK0=255.0.0.0
      GATEWAY0=10.247.236.1

CentOS7以后才能用的命令

nmcli,nmtui

  • nmcli device:相当于ip link,控制接口相关的连接。

    • nmcli device show
    • nmcli device status
    # nmcli device status
    DEVICE TYPE STATE CONNECTION
    enp0s3 ethernet connected enp0s3
    virbr0 bridge connected virbr0
    lo loopback unmanaged --
    virbr0-nic tun unmanaged --
    • nmcli device disconnect virbr0
    # nmcli device disconnect virbr0
    Device 'virbr0' successfully disconnected.
    • nmcli device connect virbr0
    # nmcli device connect virbr0
    Device 'virbr0' successfully activated with '11f16b3f-e0fd-4b46-9f7f-b786feb8489b'.
  • nmcli connection:管理接口上的地址的。相当于ip addr命令。

    • nmcli connection show
    # nmcli connection show
    NAME UUID TYPE DEVICE
    enp0s3 e2d60303-d70d-4335-aabd-f6c4cf86fade ethernet enp0s3
    virbr0 11f16b3f-e0fd-4b46-9f7f-b786feb8489b bridge virbr0
    • nmcli connection down virbr0
    # nmcli connection down virbr0
    Connection 'virbr0' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)
    • 给网卡上添加网址
    # nmcli connection modify enp0s3 +ipv4.address 10.247.236.12
    • 从网卡上删除网址
    # nmcli connection modify enp0s3 -ipv4.address 10.247.236.12

# c/c++ 学习互助QQ群:877684253
![](https://img2018.cnblogs.com/blog/1414315/201811/1414315-20181106214320230-961379709.jpg)
# 本人微信:xiaoshitou5854

linux 网络接口,ip地址,路由设定的更多相关文章

  1. 从ip addr add和ifconfig的区别看linux网卡ip地址的结构

    今天一个老外在邮件列表上问了一个问题,就是ip addr add和ifconfig的区别,我给他进行了解答,可能因为英语不好吧,解答的很简单,因此我还是要在这里详细说明一下.其实它们之间没有什么区别, ...

  2. Linux下ip地址查询

    [时间:2016-12] [状态:Open] [关键词:linux,ip地址,ifconfig,ip addr] 0 引用 说起来比较搞笑,我在windows下知道可以使用ipconfig命令查询本机 ...

  3. 解决redhat linux下IP地址可以ping通,域名无法ping通问题

    解决redhat linux下IP地址可以ping通,域名无法ping通 在/etc/resolv.conf中添点东西 格式如下: nameserver xxx.xxx.xxx.xxx nameser ...

  4. linux 查看ip地址

    1.先要打开linux服务器,然后在linux桌面的空白处点击右键 2.在弹出的选项里,点击[打开终端] 3.打开linux服务器的命令终端后,输入查询linux的ip地址的命令:ifconfig - ...

  5. IP数据报格式和IP地址路由

    一.IP数据报格式 IP数据报格式如下: 注:需要注意的是网络数据包以大端字节序传输,当然头部也得是大端字节序,也就是说: The most significant bit is numbered 0 ...

  6. linux添加ip、路由相关命令

    1- Linux添加永久路由vi /etc/sysconfig/network-scripts/route-eth1ADDRESS0=192.168.10.0NETMASK0=255.255.255. ...

  7. linux 配置IP地址

    linux 配置IP网址能够使用neat,netconfig,ifconfig等进行配置,当中前两个实用户界面,第三个命令仅仅是暂时设置IP,机器重新启动后配置将丢失. 有时候图形用户界面的程序难以获 ...

  8. [Linux] 024 IP 地址配置和网络 yum 源

    1. IP 地址配置 (1) 使用 setup 工具 $ setup ps setup 是 RedHat 系列的功能:一般地,Debian系列没有这个功能 Xubuntu 没有这个功能 (2) 启动网 ...

  9. linux修改ip地址的方法

    1. 临时设置ip地址 ifconfig eth0 IP地址 (网络掩码和网关如果不设置就使用默认0) 这种方法只是临时修改,重启网卡或服务器又会还原 2.使用vi编辑器设置 1122.www.qix ...

  10. Linux系统IP地址

    1.IP地址概述 2.配置IP地址 查看IP地址 在网卡上绑定一个IP地址 同一张网卡上绑定多个IP 绑定一块网卡设备 修改或删除IP地址 IP地址概述 这里不多赘述,参考<计算机网络>课 ...

随机推荐

  1. 并发队列之ConcurrentLinkedQueue

    本来想着直接说线程池的,不过在说线程池之前,我们必须要知道并发安全队列:因为一般情况下线程池中的线程数量是一定的,肯定不会超过某个阈值,那么当任务太多了的时候,我们必须把多余的任务保存到并发安全队列中 ...

  2. kettle安装部署基本操作及实操文档

    一.kettle是什么? Kettle,简称ETL(Extract-Transform-Load的缩写,即数据抽取.转换.装载的过程),是一款国外开源的ETL工具,纯Java编写,可以在Window. ...

  3. HDU_3853_概率dp

    http://acm.hdu.edu.cn/showproblem.php?pid=3853 又因为总期望为子期望的加权和,加权因子为子期望的转移概率,所以得到:dp[ i ][ j ]= p1 * ...

  4. Python 进行目标检测

    一.前言 从学单片机开始鼓捣C语言,到现在为了学CV鼓捣Python,期间在CSDN.简书.博客园和github这些地方得到了很多帮助,所以也想把自己做的一些小东西分享给大家,希望能帮助到别人.记录人 ...

  5. kendo ui - core

    通过CDN 引入kendo-ui-core git地址:http://www.telerik.com/kendo-ui<link href="http://kendo.cdn.tele ...

  6. python练习——第3题

    原GitHub地址:https://github.com/Yixiaohan/show-me-the-code 题目:将 0001 题生成的 200 个激活码(或者优惠券)保存到 Redis 非关系型 ...

  7. 日志框架 log4j2 全解析

    概述 logging翻译为日志记录 那问题是什么是日志? 日志实际上是日记的一种,用于记录某个时间点发生了什么事情,比如大学老师的教学日志,工作日志等 为什么要记录日志? 在实际生活中记录日志主要为了 ...

  8. SpringBoot+Mybatis+MybatisPlus整合实现基本的CRUD操作

    SpringBoot+Mybatis+MybatisPlus整合实现基本的CRUD操作 1> 数据准备 -- 创建测试表 CREATE TABLE `tb_user` ( `id` ) NOT ...

  9. go微服务框架kratos学习笔记八 (kratos的依赖注入)

    目录 go微服务框架kratos学习笔记八(kratos的依赖注入) 什么是依赖注入 google wire kratos中的wire Providers injector(注入器) Binding ...

  10. 还是端口回流问题 TCP协议解析

    还是上一篇的问题 在一内部局域网中, client  内网地址为 10.0.0.2     web  服务器内网地址为 10.0.0.1    外网地址为  211.6.15.1    域名为  xx ...