网络管理

网络管理

本章内容

网络概念
OSI模型
网络设备
TCP/IP
IP地址
配置网络
实现网络组
测试网络
网络工具

为linux网卡配置ip地址,不是给网卡配置地址,是给内核的网络功能配置,地址是属于内核。
为内核配置即时生效,修改配置文件,是永久生效。
ifconfig 配置信息,会立即生效,但是重启网络服务或主机,都失效。
网络服务
/etc/init.d/network {start|restart|stop|sataus}
centos6 service NetworkManager status
是centos6默认的网络服务脚本。不建议使用NetworkManager该服务。不稳定。

linux网络属性配置
命令,配置文件
centos6还支持使用文本界面修改网络配置文件,
setup
system-config-network-tui

配置方式
静态指定
命令
ifcfg家族
ifconfig:配置ip,netmask
route:路由
netstat:状态及统计数据查看

        iproute2家族
            ip OBJECT
                addr:地址和掩码
                link:接口
                route:路由
            ss状态及统计数据查看

        nm家族(centos7才可以使用)
            nmcli:命令行工具
            nmtul:text window 工具

    配置文件
        etc/sysconfig/network-scripts/

动态分配:依赖于本地网络中的DHCP服务

基本网络配置

将Linux主机接入到网络,需要配置网络相关设置。
一般包括如下内容:
    主机名
    IP/mask
    路由:默认网关
    DNS服务器
        主DNS服务器
        次DNS服务器
        第三DNS服务器

网络配置方式

静态指定:
    ifcfg: ifconfig, route, netstat
    ip: object {link, addr, route}, ss, tc
    system-config-network-tui(setup)
    配置文件
    CentOS 7:新增工具:nmcli, nmtui
动态分配:
    DHCP: Dynamic Host Configuration Protocol

配置网络接口

接口命名方式:CentOS 6:
    以太网:eth[0,1,2,...]
    ppp:ppp[0,1,2,...]

ifconfig命令
    ifconfig[interface]
        # ifconfig -a   显示所有接口包括未激活状态的
        # ifconfig IFACE [up|down] 关闭或激活网卡
    ifconf iginterface [aftype] options | address ...
        # ifconfig IFACE IP/mask [up] 配置ip并激活可以是掩码长度表示掩码
        # ifconfig IFACE IP netmask MASK 使用点分十进制表示掩码
    注意:立即生效;立即送往内核中的TCP/IP协议栈

    option
        启用混杂模式:[-]promisc 接收网络中的任意报文。

还可以配置ipv6地址

路由管理命令

查看:route -n

添加:route add
    route add [-net|-host] target [netmask Nm] [gwGw] [[dev] If]

目标:192.168.1.3 网关:172.16.0.1
    # route add -host 192.168.1.3 gw 172.16.0.1 dev eth0

目标:192.168.0.0 网关:172.16.0.1
    # route add -net 192.168.0.0 netmask 255.255.255.0 gw  172.16.0.1 dev eth0
    # route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0

默认路由,网关:172.16.0.1
    # route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1
    # route add default gw172.16.0.1

删除:route del
    route del [-net|-host] target [gwGw] [netmask Nm] [[dev] If]

目标:192.168.1.3 网关:172.16.0.1
    # route del -host 192.168.1.3

目标:192.168.0.0 网关:172.16.0.1
    # route del -net 192.168.0.0 netmask 255.255.255.0

route所有的改动重启网络服务或主机后失效。

配置动态路由

通过守护进程获取动态路由
    •安装quagga包,支持多种格式的RIP、OSPF和BGP
    •命令vtysh配置

netstat命令

netstat-Print network connections, routing tables, interface statistics,     masquerade connections, and multicast memberships

显示网络连接:
    netstat[--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]] [--program|-p]
    -t: tcp协议相关
    -u: udp协议相关
    -w: raw socket相关
    -l: 处于监听状态
    -a: 所有状态
    -n: 以数字显示IP和端口;
    -e:扩展格式
    -p: 显示相关进程及PID

常用组合:
    -tan, -uan, -tnl, -unl

显示路由表:
    netstat{--route|-r} [--numeric|-n]
    -r: 显示内核路由表
    -n: 数字格式

显示接口统计数据:
    netstat{--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--program|-p] [--numeric|-n]
    # netstat-i
    # netstat-IIFACE

ip命令

配置Linux网络属性:ip命令
ip-show / manipulate routing, devices, policy routing and tunnels
    ip[ OPTIONS ] OBJECT { COMMAND | help }
    OBJECT := { link | addr| route }
    iplink -network device configuration
        set dev IFACE
            可设置属性:
                up and down:激活或禁用指定接口
                ifup/ifdown
        show [dev IFACE]:指定接口
            [up]:仅显示处于激活状态的接口

ip addr{ add | del } IFADDR dev STRING
    [label LABEL]:添加地址时指明网卡别名
    [scope {global|link|host}]:指明作用域
        global: 全局可用;
        link: 仅链接可用;
        host: 本机可用;
    [broadcast ADDRESS]:指明广播地址

ipaddress show -look at protocol addresses
    [dev DEVICE]
    [label PATTERN]
    [primary and secondary]

ipaddress flush -使用格式同show
ipaddr add 172.16.100.13/16 dev eth0 label eth0:0
ipaddr del 172.16.100.13/16 dev eth0 label eth0:0
ipaddr flush dev eth0 label eth0:0

iproute -routing table management
    添加路由:iproute add
    iproute add TARGET via GW dev IFACE srcSOURCE_IP
            TARGET:
                主机路由:IP
                网络路由:NETWORK/MASK
        ip route add 192.168.0.0/24 via 172.16.0.1
        ip route add 192.168.1.13 via 172.16.0.1
        添加网关:iproute add default via GW dev IFACE
        ip route add default via 172.16.0.1

删除路由:iproute delete
        iproute del TARGET

显示路由:iproute show|list

清空路由表:iproute flush[dev IFACE] [via PREFIX]
    iproute flush dev eth0

ss命令

格式:ss[OPTION]... [FILTER]

netstat通过遍历proc来获取socket信息,ss使用netlink与内核tcp_diag模块通信获取socket信息。

选项:
    -t: tcp协议相关
    -u: udp协议相关
    -w: 裸套接字相关
    -x:unixsock相关
    -l: listen状态的连接
    -a: 所有
    -n: 数字格式
    -p: 相关的程序及PID
    -e: 扩展的信息
    -m:内存用量
    -o:计时器信息

FILTER := [ state TCP-STATE ] [ EXPRESSION ]
TCP的常见状态:
    tcpfinite state machine:
    LISTEN: 监听
    ESTABLISHED:已建立的连接
    FIN_WAIT_1
    FIN_WAIT_2
    SYN_SENT
    SYN_RECV
    CLOSED
EXPRESSION:
    dport=
    sport =
    示例:’( dport= :sshor sport = :ssh)’
常用组合:
    -tan, -tanl, -tanlp, -uan

常见用法
ss -l 显示本地打开的所有端口
ss -pl 显示每个进程具体打开的socket
ss -t -a 显示所有tcp socket
ss -u -a 显示所有的UDP Socekt
ss -o state established '( dport = :smtp or sport = :smtp )' 显所有已建立的SMTP连接
ss -o state established '( dport = :http or sport = :http )' 显示所有已建立的HTTP连接
ss -x src /tmp/.X11-unix/* 找出所有连接X服务器的进程
ss -s 列出当前socket详细信息:

网络配置文件

IP、MASK、GW、DNS相关配置文件:/etc/sysconfig/network-scriptsifcfg-IFACE


    /etc/sysconfig/network-scripts/ifcfg-IFACE:

说明参考/usr/share/doc/initscripts-9.49.30/sysconfig.txt
    DEVICE:关联的设备名称,要与文件名的后半部分保持一致
    HWADDR:对应的设备的MAC地址
    BOOTPROTO:激活此设备时使用的地址配置协议,常用的dhcp, static, none, bootp
    NM_CONTROLLED:NM是NetworkManager的简写,此网卡是否接受NM控制;建议CentOS6为“no”
    IPADDR=ip地址
    NETMASK=子网掩码
    GATEWAY=设定默认网关
    ONBOOT=开机时是否自动机会哦此网络接口

    TYPE:接口类型;常见有的Ethernet, Bridge
    UUID:设备的惟一标识

    DNS1:第一个DNS服务器指向
    DNS2:第二个DNS服务器指向
    USERCTL:普通用户是否可控制此设备
    PEERDNS:如果BOOTPROTO的值为“dhcp”,是否允许dhcp server分配的dns服务器指向信息直接覆盖至/etc/resolv.conf文件中
    dhcp和指定ip同时使用的话,优先使用dhcp获取到的ip

路由配置文件
/etc/sysconfig/network-scripts/route-IFACE 注意名称IFACE必须与网卡名称一致。例如roue-eth0

格式如下
目的ip/网络     via 下一跳
192.168.1.2/24 via 192.168.0.120

不会立即生效,但是重启网络服务或主机都会生效。

本地解析器

解析器执行正向和逆向查询  ——————解析其他主机的主机名。
/etc/hosts
    •本地主机名数据库和IP地址的映像
    •对小型独立网络有用
    •通常,在使用DNS前检查
    •getent hosts 查看/etc/hosts 内容
配置文件格式,
192.168.1.1 www.mageedu.com www mage mageedu magedu
可设置主机名和多个别名。中间用空格隔开。
DNS解析过程,先访问本地hosts文件,文件中没有才组查找DNS配置文件(resolv.conf)

修改主机名

    使用命令hostname HOSTNAME更改主机名,立即有效但是不会永久有效。
    本地主机houstname配置文件/etc/sysconfig/network
    格式    HOSTNAME=mageedu.com
修改主机名配置文件后,只有重新开启新终端,或重启服务器才可以生效。或使用命令修改

实例:
    [root@centos6 ~]# cat /etc/sysconfig/network  ###centos6
    NETWORKING=yes  ###是否开启网络服务
    HOSTNAME=yangyouwei.centos6
    GATEWAY=           ###也可以定义网关,范围是全局的。但是同时网卡的配置文件也定义了网关,那么只是网卡的网关生效。

dns名字解析
最多添加三个,ifconfig中PEERDNS=no才可以使用此配置文件
[root@centos7 ~]# cat /etc/resolv.conf

# Generated by NetworkManager
search magedu.com localdomain
nameserver 10.1.0.1
nameserver 192.168.154.1

/etc/nsswitch.conf
与/etc/hosts相比优先于DNS

正解:FQDN-->IP
    # dig -t A FQDN
    # host -t A FQDN

反解:IP-->FQDN
    # dig -x IP
    # host -t PTR IP

/etc/sysconfig/network-scripts/route-IFACE
    •注意:需service network restart生效
    •两种风格:
        (1) TARGET via GW
        (2) 每三行定义一条路由
        ADDRESS#=TARGET
        NETMASK#=mask
        GATEWAY#=GW

网卡别名

对虚拟主机有用

将多个IP地址绑定到一个NIC上,别名的网卡不能使用DHCP服务。必须手动配置地址。
    eth0:1
    eth0:2
    eth0:3

ifconfig命令:
    ifconfig eth0:0 192.168.1.100/24 up

ip命令:
    ip addr add 172.16.1.2/16 dev eth0
    ip addr add 172.16.1.1/16 dev eth0 label eth0:0
    ip addr del 172.16.1.1/16 dev eth0 label eth0:0
    ip addr flush dev eth0 label eth0:0

为每个设备别名生成独立的接口配置文件
    •关闭NetworkManager服务
    •ifcfg-ethX:xxx
    •必须使用静态联网
        DEVICE=eth0:0
        IPADDR=10.10.10.10
        NETMASK=255.0.0.0
        ONPARENT=yes
注意:service network restart 生效
参考/usr/share/doc/initscripts-*/sysconfig.txt

Linux网络属性配置的tui(text user interface):
    system-config-network-tui
    setup
    注意:记得重启网络服务方能生效
配置当前主机的主机名:
    hostname [HOSTNAME]
    /etc/sysconfig/network
    HOSTNAME=

网络接口识别并命名相关的udev配置文件:
    /etc/udev/rules.d/70-persistent-net.rules
    卸载网卡驱动:
        modprobe-r e1000
    装载网卡驱动:
        modprobe e1000

网络接口配置-bonding

•Bonding
就是将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。当然,直接给两块网卡设置同一IP地址是不可能的。通过bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址。

Bonding的工作模式

•Mode 0 (balance-rr)
轮转(Round-robin)策略:从头到尾顺序的在每一个slave接口上面发送数据包。本模式提供负载均衡和容错的能力

•Mode 1 (active-backup)
活动-备份(主备)策略:在绑定中,只有一个slave被激活。当且仅当活动的slave接口失败时才会激活其他slave。为了避免交换机发生混乱此时绑定的MAC地址只有一个外部端口上可见

•Mode 3 (broadcast)
广播策略:在所有的slave接口上传送所有的报文。本模式提供容错能力。

Bonding配置

    创建bonding设备的配置文件

    /etc/sysconfig/network-scripts/ifcfg-bond0
        DEVICE=bond0
        BOOTPROTO=none
        BONDING_OPTS=“miimon=100 mode=0”

    /etc/sysconfig/network-scripts/ifcfg-eth0
        DEVICE=eth0
        BOOTPROTO=none
        MASTER=bond0
        SLAVE=yes
        USERCTL=no


    miimon是用来进行链路监测的。如果miimon=100,那么系统每100ms 监测一次链路连接状态,如果有一条线路不通就转入另一条线路
    •查看bond0状态:/proc/net/bonding/bond
    •关于bonding的详细配置请参照
    /usr/share/doc/kernel-doc-version/Documentation/networking/bonding.txt

CentOS 7网络属性配置

rhel6之前,网络接口使用连续号码命名:eth0、eth1等,当增加或删除网卡时,名称可能会发生变化。

rhel7使用基于硬件,设备拓扑和设置类型命名:

(1) 网卡命名机制
    systemd对网络设备的命名方式
    (a) 如果Firmware或BIOS为主板上集成的设备提供的索引信息可用,且可预测则根据此索引进行命名,例如eno1
    (b) 如果Firmware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,例如ens1
    (c) 如果硬件接口的物理位置信息可用,则根据此信息进行命名,例如enp2s0
    (d) 如果用户显式启动,也可根据MAC地址进行命名,enx2387a1dc56;
    (e) 上述均不可用时,则使用传统命名机制

网卡名称

基于BIOS支持biosdevname中
内置网卡:em1,em2
pci卡:pYpXY:slot ,X:port

(2) 名称组成格式
    en: Ethernet 有线局域网
    wl: wlan无线局域网
    ww: wwan无线广域网
名称类型:
    o<index>: 集成设备的设备索引号
    s<slot>: 扩展槽的索引号
    x<MAC>: 基于MAC地址的命名
    p<bus>s<slot>: enp2s1

网卡设备的命名过程:

第一步:
    udev, 辅助工具程序/lib/udev/rename_device, /usr/lib/udev/rules.d/60-net.rules

第二步:
    biosdevname会根据/usr/lib/udev/rules.d/71-biosdevname.rules

第三步:
    通过检测网络接口设备,根据/usr/lib/udev/rules.d/75-net-description
    ID_NET_NAME_ONBOARD
    ID_NET_NAME_SLOT
    ID_NET_NAME_PATH

采用传统命名方式

使用传统命名方式:
    (1) 编辑/etc/default/grub配置文件
    GRUB_CMDLINE_LINUX="net.ifnames=0 rhgbquiet"
    或:修改/boot/grub2/grub.cfg
    (2) 为grub2生成其配置文件
    grub2-mkconfig -o /etc/grub2.cfg
    (3) 重启系统

nmcli命令

地址配置工具:nmcli

nmcli[ OPTIONS ] OBJECT { COMMAND | help }
    device -show and manage network interfaces
    nmclidevice help
    connection -start, stop, and manage network connections
    nmcliconnection help

修改IP地址等属性:
    #nmcliconnection modify IFACE [+|-]setting.propertyvalue
        setting.property:
        ipv4.addressesipv4.gateway
        ipv4.dns1 ipv4.methodmanual | dhcp

修改配置文件执行生效:systemctlrestart network
nmclicon reload

nmcli命令生效:nmclicon down eth0 ;nmclicon up eth0

相关工具

网络接口配置tui工具:nmtui

主机名称配置工具:hostnamectl
    status
    set-hostname

使用nmcli配置网络

NeworkManager是管理和监控网络设置的守护进程

设备即网络接口,连接是对网络接口的配置。一个网络接口可有多个连接配置,但同时只有一个连接配置生效。

显示所有包括不活动连接
    nmclicon show

显示所有活动连接
    nmclicon show –active

显示网络连接配置
    nmclicon show "System eth0“

显示设备状态
    nmclidev status

显示网络接口属性
    nmclidev show eno16777736

创建新连接default,IP自动通过dhcp获取
    nmclicon add con-name default type Ethernet ifnameeth0

删除连接
    nmclicon del default

创建新连接static ,指定静态IP,不自动连接
    nmcticon add con-name static ifnameeth0 autoconnectno type Ethernet ip4 172.25.X.10/24 gw4 172.25.X.254

启用static连接配置
    nmclicon up static

启用default连接配置
    nmclicon up default

查看帮助
    nmclicon add help

修改连接设置
    nmclicon mod“static” connection.autoconnectno
    nmclicon mod “static” ipv4.dns 172.25.X.254
    nmclicon mod “static” +ipv4.dns 8.8.8.8
    nmclicon mod “static” -ipv4.dns 8.8.8.8
    nmclicon mod “static” ipv4.addresses “172.25.X.10/24 172.25.X.254”
    nmclicon mod “static” +ipv4.addresses 10.10.10.10/16

网络管理

nmclicon mod ifcfg-* 文件
ipv4.method manual BOOTPROTO=none
ipv4.method auto BOOTPROTO=dhcp
ipv4.addresses “192.0.2.1/24 192.0.2.254” IPADDR0=192.0.2.1 PREFIX0=24 GATEWAY0=192.0.2.254
ipv4.dns 8.8.8.8 DNS0=8.8.8.8
ipv4.dns-search example.com DOMAIN=example.com
ipv4.ignore-auto-dns true PEERDNS=no
connection.autoconnectyes ONBOOT=yes
connection.id eth0 NAME=eth0
connection.interface-name eth0 DEVICE=eth0
802-3-ethernet.mac-address . . . HWADDR= . . .

设备配置被保存在文本文件中
•/etc/sysconfig/network-scripts/ifcfg-
•帮助文档列出完整选项列表:/usr/share/doc/initcripts-*/sysconfig.txt

原创文章,作者:yyw,如若转载,请注明出处:http://www.178linux.com/43324

(0)
yywyyw
上一篇 2016-09-05
下一篇 2016-09-05

相关推荐

  • 基于Keepalived构建高可用集群配置实例(HA Cluster)

    什么是集群 简单的讲集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源。这些单个的计算机系统就是集群的节点(node)。一个理想的集群是,用户从来不会意识到集群系统底层的节点,在他/她们看来,集群是一个系统,而非多个计算机系统。并且集群系统的管理员可以随意增加和删改集群系统的节点。 关于更详细的高可用集群我们在后面再做详解…

    Linux干货 2016-11-03
  • Nginx相关配置及其应用

    LB Cluster: 传输层:lvs、nginx、haproxy 应用层:nginx(http, https, smtp, pop, imap), haproxy(http), httpd(http/https), ats, perlbal, pound, … nginx load balancer: tcp/udp   nginx …

    Linux干货 2016-11-11
  • 马哥教育网络班21期-第三周课程练习

    第三周课程练习 1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@localhost ~]# who | cut -f1 -d' ' | uniq  root 2、取出最后登录到当前系统的用…

    Linux干货 2016-07-12
  • 马哥教育网络班21期+第二周课程练习

    Linux上的文件管理类命令都有哪些?其常用的方法及其相关示例。     cp:将源文件或者目录复制到目标文件或者目录中。     mv:将文件或目录重新命名,或者将源文件从源目录移到目标目录中。     rm:删除指定的一个文件或者多个文件或者目录。       &n…

    Linux干货 2016-07-16
  • varnish

    Web Page Cache: squid –> varnish程序的运行具有局部性特征:时间局部性:一个数据被访问过之后,可能很快会被再次访问空间局部性:一个数据被访问时,其周边的数据也有可能被访问到 cache:命中 热区:局部性;时效性:缓存空间耗尽:LRU过期:缓存清理 缓存命中率:hit/(hit+miss)(0,1)页面命中率:…

    Linux干货 2017-05-22
  • gawk基础

    gawk程序是Unix中原始awk程序的GNU版本。gawk程序让流编辑器迈上了一个新的台阶,它提供了一种编程语言而不只是编辑器命令。在gawk编程语言中,可以完成下面的事情: (1)定义变量来保存数据; (2)使用算数和字符串操作符来处理数据; (3)使用结构化编程概念(比如if-then语句和循环)来为数据处理增加处理逻辑; (4)通过提取数据文件中的数…

    Linux干货 2017-05-22