更多内容请点击:

Linux学习从入门到打死也不放弃,完全笔记整理(持续更新,求收藏,求点赞~~~~) 

http://blog.51cto.com/13683480/2095439


笔记整理开始时间:2018年5月2日18:52:09

 

第12章,网络管理(下)网络基础配置

 

本章内容

        IP地址配置

        路由管理

        配置文件管理

        DNS配置

        

基本网络配置

               将linux主机接入到网络,需要配置网络相关设置。

               一般包括如下操作:

                     主机名

                     IP/netmask

                     路由:默认网关

                     DNS服务器

                            主DNS服务器

                            次DNS服务器

                            第三DNS服务器

               

centos6网卡名称:

               接口命名方式:centos 6

                     以太网:eth[0,1,2,...]

                     ppp: ppp[0,1,2,...]

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

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

               查看网卡驱动:

dmesg           dmesg | grep -i eth            

ethtool           ethtool -i eth0

               卸载网卡驱动:

modprobe      modprobe -r e1000

rmmod          rmmod e1000

               装载网卡驱动:

                     modprobe e1000

                    

网络配置方式:

               静态指定:

                     ifconfig,route,netstat

                     ip:object{link,addr.route},ss,rc

system-config-network-tui,setup

                     配置文件

               动态分配:

                     DHCP:Dynamic Host Configuration Protlcol

                    

ifconfig:

               ifconfig [interface] 查看网络接口

                     ifconfig -a                   显示所有网络接口(包含状态为down)

                     ifconfig InterFace  [up|down]       启用、关闭网络接口(网卡)

               ifconfig interface [aftype] options | address

                     ifconfig IFACE IP/netmask  [up]

                     ifconfig IFACE IP netmask  NETMASK  配置IP地址

               注意:

                     修改立即生效

               启用混杂模式:[-]promisc

 

route:

               路由记录类型:

                     主机路由 -host

                     网络路由 -net   netmask

                     默认路由

               查看:

                     route -n

               添加路由:route add

                     route add [-host|-net]  target [netmask NM] [gw GW] [dev IFACE]

               

                     添加主机路由:

                            目标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/24 gw 172.16.0.1

                                   route add  -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1

                                  

                     添加默认路由:

                            默认路由网关:172.16.0.1

                                   route add  -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1

                                   route add  default gw 172.16.0.1

               

               删除路由:route del

                            route del  [-host|-net] target [gw GW] [netmask NM] [dev IF]

                     删除主机路由:

                            目标:192.168.1.3 网关 172.16.0.1

                                   route del  -hos 192.168.1.3 gw 172.16.0.1

                     删除网路路由:

                            目标:192.168.0.0 网关 172.16.0.1

                                   route -net  192.168.0.0 netmask 255.255.255.0

                     删除默认路由:

                                   route del  default gw 172.16.0.1

               

               ###配置动态路由:

                     通过守护进程获取动态路由

               ###        安装quagga包

               ###        主持多种路由协议:rip,ospf。bgp

               ###        命令vtysh配置

        

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][--program|-p]

                     -t|--tcp          tcp协议

                     -u|--udp       udp协议

                     -w|--raw             raw socket相关

                     -l|--listen              处于监听状态

                     -a|--all          所有状态

                     -n|--numeric       以数字显示IP和端口

                     -e|--extend 扩展格式

                     -p|--program      显示相关进程及PID

               常用组合:

                     -tan ,-uan,-tnl -unl

               显示路由表:

                     netstat {--route|-r}[--numeric|-n]

                            -r    显示内核路由表

                            -n   数字格式

               显示接口统计数据:

                     netstat {--interface|-l}[iface][--all|-a][--extend|-e]

                                    [--program|-p][--numeric|-n]

                            netstat  -i

                            netstat  -I=IFACE

                            ifconfig -s  iface

               

ip:

               配置Linux网络属性:ip命令

                     ip - show / manipulate  routing,devices,policy routing and tunnels

                            显示/操作路由、设备、策略路由和隧道

               格式:

                     ip [options] objecet  {command|help}

                            object:    {link|addr|route..}

                    

               PS:   centos6 默认不支持ip等命令补全,需安装辅助包 epel源中

                            yum install  bash-completion

                    

               

               ip link:   

                     ip link -network  device configuration 网络设备配置

                            ip link set IFACE  up|down    == ifconfig IFACE  up|down

                                    down掉之后ifconfig 需要加-a选项查看,ip a, ip link 可直接看到状态down

ifup/ifdown:

                                    需要由配置文件,且down掉之后ifconfig可以查看网卡

                                   ip link  状态也依然up

                                  

                            ip link show  iface   单独查看某一网卡

 

               ip addr:

                            address|ad|a...:

                     ip addr {add | del} IFADDR  dev STRING

                            [label LABEL]                       添加地址时指明网卡别名如(:#)

                             [scope{global,link,host}]        指明作用域

                                    globel:全局可用

                                    link:仅链接可用

                                    host:本机可用

                            [broadcast  ADDRESS]:指明广播地址

                           

                     ip addr show|flush dev  IFACE      查看清空IP地址

        

               ip route:

                      ip route add         添加路由

                            ip route add TARGET  via GW dev IFACE src SOURCE-IP

                                           TARGET:

                                                  主机路由:IP

                                                  网络路由:NET/MASK

                            ip route add  192.168.0.0/24 via 172.16.0.1

                            ip route add  192.168.6.6      via 172.16.0.1

                            添加网关:

                                   ip route add  default via GW

                            ip route add default  via 172.16.0.1

                    

                     ip route delete             删除路由

                            ip route delete  TARGET

                    

                     ip route show|list 显示路由

                           

                     ip route flush [dev IFACE][via PREFIX]

                                                         清除路由

               

ss:命令

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

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

                     通信获取socket信息

               选项:

                            -t           tcp协议先关

                            -u          udp协议相关

                            -w         裸套接字相关

                            -l           listen状态的连接

                            -a          所有

                            -n          数字格式

                            -p          相关的程序及PID

                            -e          扩展的信息

                            -m         内存用量

                            -o          计时器信息

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

                           

               FILTER:[state TCP-STATE][EXPRESSION]

                     TCP 的常见状态:

                            tcp finite state  machine:

                                   LISTEN:          监听

                                    ESTABLISHED:已建立的链接

                                    FIN_WAIT_1  

                                    FIN_WAIT_2

                                    SYN_SENT

                                    SYN_RECV

                                    CLOSED

                     EXPRESSION:

                            dport=

                            sport=

                            示例:    '(dport =  :ssh or sport = :ssh)'

                                          ss  state ESTABLISHED sport = :ssh

               常用组合:     

                     -tan ,-tanl, -tanlp,-uan

                    

               常见用法:

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

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

                     ss -ta            显示所有的tcp  socket

                     ss -ua            显示所有的udp  socket

                     ss -o state established  '( dport = :ssh or sport = :ssh )'

                                           显示所有已建立的ssh连接

                     ss -o state established  '( dport = :http or spout = :http )'

                                           显示所有已建立的http连接

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

 

网络配置文件:

               ip,mask,gw,dns相关配置文件:

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

               路由相关的配置文件:

                      /etc/sysconfig/network-scripts/route-IFACE

               NDS配置文件:

                     /etc/resolv.conf

               参考说明:

                     centos6.9  /usr/share/doc/initscripts-9.03.58/sysconfig.txt

                     centos7.4  /usr/share/doc/initscripts-9.49.39/sysconfig.txt

                    

        ifcfg-IFACE:

                     DEVICE          此配置文件应用到的设备

                     HWADDR             对应的设备的MAC地址,如修改,可改为MACADDR=

                     BOOTPROTO 激活此设备时使用的地址配置协议,常用的dhcp,static,none,bootp

                     NM_CONTROLLED:      NM为:NetworkManager的简写,此网卡是否接受NM控制

                     ONBOOT              在系统引导时是否激活此设备

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

                     UUID             uuid

                     IPADDR         ip地址

                     NETMASK             子网掩码

                     PREFIX           netmask 使用/24  写法

                     GATEWAY            默认网关

                     DNS1             第一个DNS服务器指向

                     DNS2             第二个DNS服务器指向

                     USERCTL        普通用户是否可控制此设备

                     PEERDNS              如果BOOTPROTO的值为dhcp ,是否允许dhcp server分配的dns

                                           服务器指向信息直接覆盖/etc/resolv.conf

                     DEFROUTE     是否把这个eth设置为默认路由              

                     PEERROUTES 是否从DHCP服务器获取用于定义接口的默认网关的信息的路由表条目

                     IPV6INIT  是否启用IPv6接口

                     IPV4_FAILURE_FATAL=yes         如果ipv4配置失败禁用设备

                     IPV6_FAILURE_FATAL=yes         如果ipv6配置失败禁用设备     

                    

        route-IFACE:

               两种书写风格:

                     1.     TARGET via GW   

                     如:192.167.10.0/24 via 192.168.65.1

                            192.168.8.8 via  192.168.65.1

                    

                     2.     每三行定义一条路由

                             ADDRESS#=ip

                             NETMASK#=mask

                            GATEWAY#=gw  

                     PS: #:为数字 必须从0开始

                            如需添加主机路由 mask 255.255.255.255

                            如需添加默认路由 ip 和mask 都为  0.0.0.0   

        

        配置文件修改之后生效:

               service network restart         centos6

               systemctl restart network      centos7

               

               

 

主机名和本地解析器:

               配置当前主机的主机名:

hostname HOSTNAME

                      立即生效,如果想要提示符修改需重新登录,重启失效

                      /etc/sysconfig/network

                     重启生效

                    

               解析器执行正向和逆向查询

               /etc/hosts

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

                     对小型独立网络有用

                     通常,在使用DNS前检查

                     getent hosts         查看/etc/hosts内容

                    

dns名字解析:

               /etc/resolv.conf     DNS记录配置文件

                     nameserver  DNS-SERVER-ip1

                     nameserver  DNS-SERVER-ip2

                     nameserver  DNS-SERVER-ip3

                    

               /etc/nsswitch.conf

                     优先于/etc/hosts 且可以设置/etc/hosts 优先级

                      38 hosts:       files dns   

                                   将files 和 dns   跟换顺序即可降低hosts优先级

        

               正向解析:name--> ip

dig                dig [-t A] name  [+trace]

host         host -t A name

               反向解析:ip--> name

                     dig -x ip

                     host -t PTR ip

 

网卡别名:

               对虚拟主机有用

               将多个IP地址绑定到一个网卡(NIC)上

                     eth0:1 , eth0:2 ,eth0:3

               

               使用ifconfig添加:

                     ifconfig eth0:1  192.168.8.8/24     

                     ifconfig eth0:1  down

               

               使用ip命令添加:

                     ip add add 172.16.1.2/24  dev eth0

                     ip a a 172.16.1.3/16 dev eth0 label eth0:1

                     ip addr del 172.16.1.2/24  dev eth0

                     ip a flush dev eth0 label  eth0:0

                    

设备别名:

               为每个设备别名生成独立的接口配置文件:

                     关闭NetworkManager服务

                     ifcfg-ethX:xxx

                     必须使用静态联网

                            DEVICE=eth0:xxx

                            IPADDR=ip

                             NETMASK=mask

                                    PREFIX=

                            ONPARENT=yes  表明从属关系

 

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

                    

                     active-backup、balance-tlb和balance-alb模式不需要交换机的任何特殊配置。

                      其他绑定模式需要配置交换机以便整合链接。如:

                             Cisco交换机需要在模式0、2、3中使用EtherChannel,但在模式4中需要LACP

                            和EtherChannel

                           

               创建bonding设备的配置文件:

                      /etc/sysconfig/network-scripts/ifcfg-bond0

                             DEVICE=bond0

                             BOOTPROTO=none

                             BONDING_OPTS="miimon=100 mode=0"

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

                             DEVICE=eht0

                             BOOTPROTO=none

                             MASTE=bond0

                            SLAVE=yes

                             USERCTL=no

                     查看bond0状态: /proc/net/bonding/bond0

                    

               miimon是用来进行链路监测的。如果miimon=100,那么系统每100ms监测一次链路

               状态,如果一条线路不通就转入另一条线路

               

               删除bond0

                     ifconfig bond0  down

rmmod          rmmod bonding

               

               详细帮助:

                      https://www.kernel.org/doc/Documentation/networking/bonding.txt

                    

 

CentOS 7 网络属性配置

               Centos 6之前,网络接口使用连续号码命名:eth0、eth1等,当增加或删除网卡时,名称

               可能会发生变化

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

                     1 网卡命名机制:

                             systemd对网络设备的命名方式:

                            a     如果Fireware或BIOS为主板上集成的设备提供的索引信息可用,且

                                    且可预测,则根据此索引进行命名,例如eno1

                            b    如果Fireware或BIOS 为PCI-E扩展槽提供的索引信息可用,且可预测,则

                                    根据此索引进行命名,例如ens1

                            c      如果硬件接口的物理位置信息可用,则根据此信息进行命名,例如enp2s0

                            d    如果用户显示启动,也可根据MAC地址进行命名,如enx2387...

                            e     上述均不可用时,则使用传统命名机制

               

                            基于BIOS支持启用biosdevname软件:

                                    内置网卡:     em1,em2

                                    pci卡:          pYpX      Y:slot,X:port               

                    

                     2     名称组成格式:

                                    en:        Ethernet 有限局域网

                                    wl: wlan 无限局域网

                                    ww:       wwan     无线广域网

                            名称类型:

                                   o  <index>:     集成设备的设备索引号

                                   s  <soft>: 扩展槽的索引号

                                   x  <MAC>:      基于MAC地址的命名

                                    p<bus>s<slot>:     enp2s1

                    

               采用传统命名方式:

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

                             GRUB_CMDLINE_LINUX="crashkernel=auto rhgb  quiet net.ifnames=0

                     2     为grub2生成其配置文件

                            grub2-mkconfig -o  /etc/grub2.cfg

                     3     重启系统

                    

                     或者直接修改/boot/grub2/grub.cfg

                            在linux16.*  行尾添加 net.ifnames=0

                    

Centos 7修改主机名:

               配置文件:/etc/hostname,默认没有此文件,通过DNS反向解析获取主机名,

                     默认为:localhost.localdomain

               显示主机名信息:

                     hostname

                     hostamectl  status

               设置主机名:

                     hostnamectl set-hostname  centos7.4

                            

Centos7网络配置工具:

 

nm-connection-editor        图形工具:nm-connection-editor

nmtui                                         字符配置tui工具:nmtui   

nmcli                                          命令行工具:nmcli

                    

nmcli:

               由NetworkManager 提供的地址配置工具,必须开启NM服务

               设备(device)即网络接口

               连接(connection)是对网络接口的配置。

               添加连接(nmcli con  add)使一个网络接口可有多个连接配置,但同时只有一个连接配置生效

        

               格式:     

               nmcli []options] object  {command|help}

                            device - show and  manage network interface

                            connection - start,stop,and manager network connections

                     nmcli device help | show |  modify|..

                             配置网卡属性,现在进行

                     nmcil connection help  | show |add |modify |del|up|down|..

        

               PS:使用nmcli dev status 查看之后最后一项 CONNECTION 值,即为连接的

                     connection名称,

                            使用nmcli con modify CONNECTION

                                    或者 nmcli con show CONNECTION

                            需注意

                    

               修改ip地址等属性:

                     nmcli connection|device  modify CONNECTION [+|-]setting.property  value

                            setting.property

                                    ipv4.addresses

                                    ipv4.gateway

                                    ipv4.dns1|2

                                   ipv4.method  值为:manual(静态)|auto(dhcp)

                            +|-  用于多条记录情况

                                  

               直接修改配置文件之后执行生效:

                            systemctl restart  network

                            nmcli con|connection  reload      

                    

                     nmcli命令生效:

                            nmcli con down  eth0;nmcli con up eth0

                           

                     显示所有连接:

                            nmcli connection  show

                     显示所有活动连接:

                            nmcli con show  --active

                     显示网络连接配置:

                            nmcli con show  "System eth0" | CONNECTION

                     显示设备状态:

                            nmcli dev  status

                     显示网络接口属性:

                            nmcli dev show  IFACE

               

               创建新连接:

                            nmcli con add  con-name NAME type Ethernet ifname ens37

                                    添加连接NAME,ip自动通过dhcp获取,配置在ens37网卡接口下

                           

                            nmcli con add  con-name STATIC ifname ens37 autoconnect no type

                     Ethernet ipv4.addresses  IP/MASK ipv4.gateway GW

                                   添加新连接STATIC ,指定静态ip 不自动连接

                    

                     删除连接:

                            nmcli con del  NAME

                           

                     切换连接:

                            nmcli con up  STATIC|NAME

                    

                     DNS和路由相关setting.property

                            ipv6.ignore-auto-dns  yes           相当于PEERDNS

                             ipv6.ignore-auto-routes yes               相当于PEERROUTES

 

               网络配置文件:     

                     使用nmcli con add 添加连接会生成新的网卡配置文件:

                             ifcfg-<ifname>

 

                      修改连接配置文件之后,需要重新加载配置:

                            nmcli con  reload

                            nmcli con down/up  CONNECTION  可被自动激活

                            nmcli dev  dis|diconnect eth0       禁用网卡,防止被自动激活

                                                                                     然而实测无效,还是可以被up激活

               

               nmcli实现bonding: 

                     添加bonding接口:

                            nmcli con add type  bond con-name mybond0 ifname mybond0 mode active-backup、balance-tlb和balance-alb模式不需要交换机的任何特殊配置。

                     添加从属接口:

                            nmcli con add type  bond-slave ifname ens33 master mybond0

                            nmcli con add type  bond-slave ifname ens37 master mybond0

                      要启动绑定,则必须首先启动从属接口

                            nmcli con up  bond-slave-ens33

                            nmcli con up  bond-slave-ens37

                     启动绑定:

                            nmcli con up  mybond0

                           

网络组Networking Teaming

               网络组:是将多个网卡聚合在一起的方式,从而实现容错和提供吞吐量

               网络组不同于旧版中bonding技术,提供更好的性能和扩展性

               网络组由内核驱动和teamd守护进程实现

               多种方式runner

                            broadcast

                             roundrobin

                             activebackup

                             loadbalance

                            lacp(implements the 802.3ad Link Aggregation Control  Protocol)

                           

               网络组:

                            启动网络组接口(team0)不会自动启动网络组中的port接口(team0-ens37)

                             启动网络组接口中的port接口总会自动启动网络组接口

                             禁用网络组接口会自动禁用网络组中的port接口

                            没有port接口的网络组接口可以启动静态ip链接

                            启用dhcp连接时,没有port接口的网络组会等待port接口的加入

                    

               创建网络组接口:

                            nmcli con add type  team con-name CNAME ifname INAME [config JSON]

                                   CNAME  连接名,INAME 接口名

                                    JOSN:指定runner方式

                                           格式 '{"runner":{"name":"METHOD"}}'

                                    METHOD:broadcast, roundrobin,activebackup, loadbalance, lacp

                    

                            nmcli con add type  team con-name team0 ipv4.addresses

                                    185.170.161.160/16 ipv4.method manual config '{"runner":{"name":"activebackup"}}'

                                  

               创建port接口:

                            nmcli con type  team-slave con-name CNAME ifname INAME master TEAM

                                   CNAME:  连接名(如team0-ens37)

                                   INAME:   接口名(指明网卡如  ens37)

                                   TEAM:     组接口名 (如team0)

                    

                     例:nmcli connection add type team-slave con-name team0-ens37

                            ifname ens37 master  team0

                            nmcli connection add  type team-slave con-name team0-ens38

                            ifname ens38 master  team0

                                  

                     连接名若不指定,默认为team-slave-IFACE

                    

               启动网络组:

                            nmcli con up  team0

                            nmcli con up  team0-ens37

                            nmcli con up  team0-ens38

               

               查看网络组:

teamdctl              teamdctl team0 state

                    

               关闭网络组:

                            nmcli con down  team0 可再次开启

                           

               删除网络组

                            先down

                            nmcli con del  team0

                            nmcli con del  team0-ens37

                            nmcli con del  team0-ens38

                           

               PS:    创建或删除,会自动生成或删除配置文件             

                           

 

nmcli-实现网桥:

               此小段为复制粘贴内容,以便后期查找,没有操作复现。

               桥接:

                     把一台机器上的若干个网络接口“连接”起来。其结果是,其中一个网

                      口收到的报文会被复制给其他网口并发送出去。以使得网口之间的报文能够互

                      相转发。网桥就是这样一个设备,它有若干个网口,并且这些网口是桥接起来

                      的。与网桥相连的主机就能通过交换机的报文转发而互相通信。

                      主机A发送的报文被送到交换机S1的eth0口,由于eth0与eth1、eth2桥接在一

                     起,故而报文被复制到eth1和eth2,并且发送出去,然后被主机B和交换机S2

                     接收到。而S2又会将报文转发给主机C、D。                           

                                           

               配置实现网桥

                创建软件网桥

                     nmcli con add type bridge  con-name br0 ifname br0

                     nmcli connection modify br0  ipv4.addresses 192.168.74.100/24

                     ipv4.method  manuall

                     nmcli con add type  bridge-slave con-name br0-port0 ifname eth0 master

                     br0

               查看网桥

                     cat /etc/sysconfig/network  -scripts/ifcfg-br0

                     cat /etc/sysconfig/network  -scripts/ifcfg-br0-port0

                     brctl show

               删除网桥 brctl delbr br0

               删除网桥中网卡 brctl delif eth0

               注意:NetworkManager只支持以太网接口接口连接到网桥,不支持聚合接口

                           

                           

测试网络工具:

               

hostname                    显示主机名                 

ping                            测试网络连通性

               -s 65507               最大包

               -f                          强制发送,不等回复包

               -c 5               几次

               -w 5                      指定时间

mtr                              测试网路连通性

               

nslookup              确定名称服务器使用

host

dig               

 

traceroute                    跟踪路由

tracepath

 

tcmdump icmp -nn      抓包

tcpdump -i eth1

 

网络客户端工具:

ftp                默认账号ftp  或者anonymous

lftp                子命令:get(下载)、put 、mget(同时下载多个)、ls、cd、help    

                                   !cmd表示执行本机命令

lftpget      URL        下载ftp资源

wget[options] URL

        -q          静默模式

        -c           断点续传

        -P          保存在指定目录

        -O         保存为指定的文件名

        --limit-rate=          指定传输速率,K,M 默认为Byte

        

links URL        字符版浏览器

        --dump         查看文字

        --source 查看源码      

 

        

 

笔记整理完成时间:2018年5月5日15:48:27