Linux系统网络管理

Linux系统网络管理

一、基本网络配置:

将Linux主机接入网络,需要配置网络相关设置

一般包括以下内容:

主机名

IP/netmask

路由:默认网关

DNS服务器:

主DNS服务器

次DNS服务器

网络配置文件:

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

DEVICE=ene33           # 针对网卡名称(必须有)

ONTBOOT=yes            # yes表示开机自动启动网卡,默认yes

BOOTPROTO=dhcp         # 自动获取,生产中一般改为手动配置static|none(必须有)

IPADDR=172.20.0.6      # 设置IP(必须有)

NETMASK=255.255.0.0    # 传统方式配置掩码(必须有)

PREFIX=16              # CIDR法设置掩码(必须有)

GATEWAY=172.20.0.1     # 设置网关

DNS1=114.114.114.114   # 设置DNS1

DNS2=8.8.8.8           # 设置DNS2

TYPE                   # 接口类型,常见有Ethernet,Bridge

UUID                   # 设备唯一表示

路由相关的配置文件:/etc/sysconfig/network-scripts/route-IFACE

注意:需service network restart生效

两种风格:

(1) TARGET via GW

    如:10.0.0.0/8 via 172.16.0.1

(2) 每三行定义一条路由

         ADDRESS#=TARGET

         NETMASK#=mask

         GATEWAY#=GW

网络配配置方式:
静态指定:

命令:
    ifcfg家族:
        ifconfig:配置IP,NETMASK
        route:路由
        netstat:状态及统计数据查看
    iproute2家族:
        ip OBJECT:
            addr:地址和掩码;
            link:接口
            route:路由
        ss:状态及统计数据查看
    CentOS 7:nm(Network Manager)家族 立即生效,修改配置文件
        nmcli:命令行工具
        nmtui:text window 工具

注意:

(1) DNS服务器指定    
    配置文件:/etc/resolv.conf
(2) 本地主机名配置
    hostname
    配置文件:/etc/sysconfig/network
CentOS 7:hostnamectl                    
配置文件:
    RedHat及相关发行版
        /etc/sysconfig/network-scripts/ifcfg-NETCARD_NAME

动态分配(dhcp):依赖于本地网络中有DHCP服务

DHCP:Dynamic Host Configure Procotol

二、主机、网卡名称管理

传统命名:

以太网:ethX, [0,oo),例如eth0, eth1, ...
PPP网络(点到点网络,拨号上网):pppX, [0,...], 例如,ppp0, ppp1, ...

可预测命名方案(CentOS 7):

支持多种不同的命名机制:
基于 Fireware, 拓扑结构命名

(1) 如果Firmware或BIOS为主板上集成的设备提供的索引信息可用,则根据此索引进行命名,如eno1, eno2, ...
(2) 如果Firmware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,如ens1, ens2, ...
(3) 如果硬件接口的物理位置信息可用,则根据此信息命名,如enp2s0, ...
(4) 如果用户显式定义,也可根据MAC地址命名,例如enx122161ab2e10, ...
上述均不可用,则仍使用传统方式命名;

命名格式的组成:

en:ethernet
wl:wlan
ww:wwan     

名称类型:

o<index>:集成设备的设备索引号;
s<slot>:扩展槽的索引号;
x<MAC>:基于MAC地址的命名;
p<bus>s<slot>:基于总线及槽的拓扑结构进行命名;

网络接口识别并命名相关的udev配置文件:

/etc/udev/rules.d/70-persistent-net.rules

查看网卡

dmesg |grep –i eth

ethtool -i eth0

卸载网卡驱动:

modprobe -r e1000

rmmod e1000

装载网卡驱动

modprobe e1000

修改主机名

hostname [NEWNAME] 临时生效,重启恢复

永久生效:

    CentOS6:

    修改/etc/sysconfig/network

    CentOS7:

    修改/etc/hostname

    或:hostnamectl set-hostname [NEWNAME]

hostname [NEWNAME] 使配置文件生效
修改CentOS7网卡命名为传统命名方式,实现自动化运维

(1) 编辑/etc/default/grub配置文件

GRUB_CMDLINE_LINUX=”rhgb quiet net.ifnames=0″

或:修改/boot/grub2/grub.cfg   linux 16 行尾添加 net.ifnames=0

(2) 为grub2生成其配置文件

grub2-mkconfig -o /etc/grub2.cfg

(3) 重启系统

修改本地解析器

/etc/hosts

本地主机名数据库和IP地址的映像

对小型独立网络有用

通常,在使用DNS前检查

一般建议在127.0.0.1的行尾加上本机的hostname

注:如果hostname发生更改,一定要记得同时更改/etc/hosts里的原添加内容

搭建网站也建议将网站地址与网页名称对应写入到/etc/hosts文件中,避免解析出错

设置DNS

/etc/resolv.conf

nameserver DNS_SERVER_IP1

nameserver DNS_SERVER_IP2

nameserver DNS_SERVER_IP3

三、网卡别名

对虚拟环境有用,可将多个IP地址绑定到一个网卡上

eth0:1、eth0:2、eth0:3

ifconfig命令:

ifconfig eth0:0 192.168.1.100/24 up

ifconfig eth0:0 down

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 add 172.16.1.2/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

为别名设备添加配置文件,永久生效

(1)service NetworkManager stop 关闭图形界面网络管理

(2)ifctg-ethX:xxx

(3)必须使用静态IP配置

DEVICE=eth0:0

IPADDR=10.10.10.10

NETMASK=255.0.0.0

ONPARENT=yes

(4)最后重启网络服务

service network restart

四、网络接口配置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接口上传送所有的报文,提供容错能力

查看bond0主备状态:

/proc/net/bonding/bond0

创建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

也可使用nmcli实现bonding

添加bonding接口

    nmcli con add type bond con-name mybond0 ifname mybond0 mode active-backup

添加从属接口

    nmcli con add type bond-slave ifname ens7 master mybond0

    nmcli con add type bond-slave ifname ens3 master mybond0

注:如无为从属接口提供连接名,则该名称是接口名称加类型构成,要启动绑定,则必须首先启动从属接口

nmcli con up bond-slave-eth0

nmcli con up bond-slave-eth1

启动绑定

nmcli con up mybond0

取消bonding

1.卸载驱动模块

    lsmod                        显示所有已加载的驱动模块

    lsmod | grep bond

    ifconfig bond0 down      禁用网卡

    modproble -r bonding



2.删除和修改文件

    rm -r ifcfg-bond0

    vim ifcfg-eth{0,1}

    service     network restart       重启网络服务

五、实现网络组

代替bonding的一种技术

网络组:将多个网卡聚合在一起的方法,从而实现冗错和提高吞吐量

多种方式运行:

broadcast                 广播模式

roundrobin               轮播模式

activebackup           主备模式

loadbalance              负载均衡模式

lacp (implements the 802.3ad Link Aggregation Control Protocol)

创建网络组Network Teaming(RHCE)

nmcli con add type team con-name team0 ifname team0 config

‘{“runner”: {“name”: “loadbalance”}}’

nmcli con mod team0 ipv4.addresses 192.168.1.100/24

nmcli con mod team0 ipv4.method manual

nmcli connection show

nmcli con add con-name team0-eth1 type team-slave ifname eth1 master team0

nmcli con add con-name team0-eth2 type team-slave ifname eth2 master team0

nmcli con up team0

nmcli con up team0-eth1

nmcli con up team0-eth2

nmcli connection show

teamdctl team0 state

删除网络组:

第一种方法:删除network-scripts下配置文件

第二种方法:nmcli connection delete team0 team0-eth1 team0-eth2

六、ifcfg家族fconfig、route、netstat命令详解

  • ifconfig: 网络接口及地址查看和管理
    # 显示所有接口:
    ifconfig -a

    # 显示指定网卡信息: 
    ifconfig    ens33                

    # 启动关闭指定网卡:
    ifconfig ens33 up/down    

    # 为网卡配置和删除IPv6地址:   
    ifconfig ens33  add/del   33ffe:3240:800:1005::2/64         

    # 用ifconfig修改MAC地址: 
    ifconfig ens33 hw ether 00:AA:BB:CC:dd:EE        

    # 为指定网卡配置IP地址:
    ifconfig ens33 192.168.2.10 netmask 255.255.255.0 broadcast 192.168.2.255

    # 设置最大传输单元:
    ifconfig eth0 mtu 1500    #设置能通过的最大数据包大小为 1500 bytes
  • route:显示并设置Linux内核中的网络路由表
    # 显示当前路由:
     route -n

    # 添加网关:
    route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0 

    # 屏蔽一条路由:
    route add -net 224.0.0.0 netmask 240.0.0.0 reject 

    # 删除路由记录:
    route del -net 224.0.0.0 netmask 240.0.0.0

    # 添加设置默认网关:
    route add default gw 192.168.120.240

    # 删除默认网关:
    route del default gw 192.168.120.240
  • netstat Linux中网络系统的状态信息
    -t:TCP协议的相关连接,连接均有其状态;FSMFinate State Machine);
    -u:UDP相关的连接
    -w:raw socket相关的连接
    -l:处于监听状态的连接
    -a:所有状态
    -n:以数字格式显示IPPort    -e:扩展格式
    -p:显示相关的进程及PID

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

七、iproute家族ip link、ip address 、ip route、命令详解

ip link show [IFNAME] :显示网卡mac信息,不加网卡名就是全部,加上就是显示单个网卡的mac信息。

ip link set up/down:设置网卡启用或关闭,在物理层禁止。

IP设置:ip addr

ip addr {add|del} IP dev IFACE

ip address add IP dev IFACE label ALIASIFACE              添加地址时指定网卡别名

ip address add IP dev IFACE scpe{global|link|host}    指明作用域

global:全局可用

link:仅链接可用

host:本机可用

ip address flush dev IFACe  清空IP地址

路由管理:ip route

ip r|route [show|list]                               查看路由表

ip route add|del TARGET via GW dev IFACE 添加|删除路由

ip route flush dev IFACE                         清空路由表

ip常用命令:

ip help                                                 查看ip命令使用帮助

ip link                                                   查看数据链路层信息

ip link set eth1 up|down                          设置eth1网卡启用|禁用

ip address|a                                       查看网卡信息

ip route|r                                            查看路由信息

ip route add|del IP/24 via gateway                添加路由

ip address add 2.2.2.2/24 dev eth0                添加IP地址

ip address add 2.2.2.2/24 dev eth0 label eth0:2添加别名网卡IP地址

ip address flush dev eth0                         清空eth0网卡上所有ip地址

八、ss命令、nmcli命令详解

ss命令:

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

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

ss常见用法:

ss -l                # 显示本地打开的所有端口

ss -pl               # 显示每个进程具体打开的socket

ss -t -a             # 显示所有tcp socket

ss -u -a             # 显示所有的UDP Socekt

ss -o state established ‘( dport = :ssh or sport = :ssh )’   #显示所有已建立的ssh连接

ss -o state established ‘( dport = :http or sport = :http )’ #显示所有已建立的HTTP连接

ss -s 列出当前socket详细信息

nmcli:地址配置工具

nmcli 常见用法:

 nmcli connection show           # 查看当前连接状态
 nmcli connection reload         # 重启服务
 nmcli connection show -active   # 显示活动的连接
 nmcli connection show "lan eth0" # 显示指定一个网络连接配置
 nmcli device status             # 显示设备状态
 nmcli device show eno16777736   # 显示指定接口属性
 nmcli device show               # 显示全部接口属性
 nmcli con up static             # 启用static连接配置
 nmcli con up default            # 启用default连接配置 
 nmcli con add help              # 查看帮助

猜你喜欢

转载自blog.csdn.net/lv8549510/article/details/80498048