• Linux 网络属性管理


    Linux网络基础管理-1:
    IPv4 地址分类:
      点分十进制:0.0.0.0-255.255.255.255
      A类:
      0 0000000 - 0 1111111: 1-127
      网络数:126, 127开头为环回地址
      每个网络中的主机数:2^24-2
      默认子网掩码:255.0.0.0
      私网地址:10.0.0.0/8
      B类:
      10 000000 - 10 111111:128-191
      网络数:2^14
      每个网络中的主机数:2^16-2
      默认子网掩码:255.255.0.0
      私网地址:172.16.0.0/16-172.31.0.0/16
      C类:
      110 00000 - 110 11111: 192-223
      网络数:2^21
      每个网络中的主机数:2^8-2
      默认子网掩码:255.255.255.0
      私网地址:192.168.0.0/24-192.168.255.0/24
      D类:组播
      1110 0000 - 1110 1111: 224-239
      E类:240-255

      跨网络通信需要路由,一般主机上的路由有三种:主机路由、网络路由、默认路由
      将Linux主机接入到网络中需配置以下信息:IP/mask、默认网关、DNS服务器(Linux可以配置三个)
      Linux下配置网络方式:
      静态指定:
        ifcfg系列:ifconfig、route、netstat
        ip系列:ip {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,...]

    IP地址配置及查看:
      ifconfig命令:查看IP地址和配置IP地址命令
      ifconfig [interface]
        # ifconfig -a 查看所有网络接口配置信息
        # ifconfig eth0 [up|down] 查看指定网络接口配置信息
      ifconfig interface [aftype] options | address ...
        # ifconfig eth0 192.168.1.1/24 [up] 配置指定网络接口的ip地址
        # ifconfig eth0 192.168.1.1 netmask 255.255.255.0
      [-]promisc 启用混杂模式(加-表示关闭),开启混杂模式在抓包时如果收到的报文不是发给该接口的也能被抓到,就是抓取所有收到的报文
        ifconfig eth0 promisc  开启混杂模式
        ifconfig eth0 -promisc  关闭混杂模式

      route命令:路由管理命令
      route -n 查看内核路由表信息(路由的标志位:U表示启用状态,G表示默认网关,H表示主机路由   )
      route add 手动添加路由
      route add [-net|-host] target [netmask Nm] [gw Gw] [[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 gw 172.16.0.1

      route del  删除路由
      route del [-net|-host] target [gw Gw] [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

      DNS服务器指定:
      /etc/resolv.conf
      nameserver DNS_SERVER_IP1
      nameserver DNS_SERVER_IP2
      nameserver DNS_SERVER_IP3

      FQDN(Fully Qualified Domain Name)完全合格域名/全称域名
      正向解析:FQDN—>IP
      # dig -t A FQDN
      # host -t A FQDN
      反向解析:IP—>FQDN
      # dig -x IP
      # host -t PTR IP

      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

      显示路由表:
      netstat {--route|-r} [--numeric|-n]
        -r 显示内核路由表
        -n 数字格式(不进行反向解析)

      显示接口统计数据:
      netstat {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--program|-p] [--numeric|-n]
        # netstat -i 显示所有接口统计
        # netstat -Ieth0 显示指定接口统计(注意选项和参数之间不能有空格)

      ifup/ifdown [Interface_Name] 用来启用/禁用一个接口
        ethtool eth0 显示接口设备属性
        ethtool -S eth0 显示接口设备的统计数据

    Linux网络基础管理-2:
      ip命令:
      ip - show / manipulate routing, devices, policy routing and tunnels
      ip [ OPTIONS ] OBJECT { COMMAND | help }
              OBJECT = { link | addr | route }

      ip link - network device configuration
      ip link help 显示配置帮助信息
      ip link set eth0 [up|down] 激活或禁用指定接口
      ip link set eth0 multicast [on | off] 开启关闭接口组播功能(开启关闭功能)
      ip link set eth0 name New_Name 重命名接口(需要接口为Down状态)
      ip link set eth0 mtu MTU_Number 设置接口的MTU
      ip link set eth0 netns [PID | Name] 将接口移动至指定的网络名称空间中  
      ip link show 显示所有接口状态
      ip link show eth0 显示指定接口状态
      ip link show up 仅显示处于激活状态的接口

      ip address - protocol address management
      ip addr { add | del } IFADDR dev STRING
      ip addr add 192.168.1.1/24 dev eth0 配置IP地址
      ip addr add 192.168.1.1/24 dev eth0 broadcast 192.168.1.255 指定广播地址
      ip addr add 192.168.0.1/24 dev eth0 label eth0:0 配置地址时指明网卡标签(标签格式必须是这种格式)
      ip addr add 192.168.0.1/24 dev eth0 scope {global|link|host} 指定作用域
        global 全局可用(如果从另外一个网卡进来的数据也可以与该地址通信)
        link  仅链接可用(只能是该网卡直连的设备通信,同一个广播域)
        host  本机可用(只能自己通信,不能与其它任何地址通信)

      ip address show - look at protocol addresses
      ip addr show 查看所有设备的IP
      ip addr show dev eth0 查看指定设备IP
      ip addr show label eth0:0 查看指定标签设备IP
      ip addr show dev eth0 primary  查看指定设备主IP

      ip address flush - flush protocol addresses
      ip addr flush dev eth0 清空指定设备的所有ip地址

      ip route - routing table management
      ip route add
      ip route add 192.168.0.0/24 via 192.168.1.1 dev eth0 添加网段路由
      ip route add 192.168.0.10 via 192.168.1.1 dev eth0 添加主机路由
      ip route add defalt via 192.168.1.1 dev eth0 添加默认路由
      ip route add 192.168.0.0/24 via 192.168.1.1 dev eth0 src 192.168.1.10 添加路由是指定发报文的源地址
      ip route change 192.168.0.0/24 via 192.168.1.1 dev eth0 src 192.168.2.10 修改路由信息(如果路由不存在则提示不存在)
      ip route replace 192.168.0.0/24 via 192.168.1.1 dev eth0 src 192.168.2.10 修改路由信息(如果路由不存在则直接创建)

      ip route delete
      ip route del 192.168.0.0/24 删除路由
      ip route show 查看路由表
      ip route get 192.168.1.0/24 查看指定路由的详细信息
      ip route flush 清空所有路由,可以通过dev清空指定设备
      ip route flush 192.168.1.0/24 清空指定路由

      ss命令:查看网络套接字工具
      ss [OPTION]... [FILTER]
      -t 显示tcp协议相关连接
      -u 显示udp协议相关连接
      -w 显示裸套接字相关连接
      -x 显示unix sock相关连接
      -l 显示listen状态的连接
      -a 显示所有状态的连接
      -n 以数字格式显示ip和port(不进行反向解析)
      -p 显示对应的程序名及PID
      -e 以扩展格式显示
      -m 显示内存用量
      -o 显示计时器信息

      指定过滤状态查看FILTER [ state TCP-STATE ] [ EXPRESSION ]
      TCP的常见状态(tcp finite state machine)
      LISTEN   监听
      ESTABLISHED 已建立的连接
      FIN_WAIT_1
      FIN_WAIT_2
      SYN_SENT
      SYN_RECV
      CLOSED
      ss -tan state established 显示连接状态为ESTABLISHED的连接

      指定表达式过滤EXPRESSION:
      dport = :22
      sport = :1025
     ss -tan sport = :22   显示源端口为22的连接
      ss -tan dport = :51471 显示目的端口为51417的连接
      ss -tan dport = :51471 or sport = :22  显示目的端口为51417或源端口为22的连接
      ss -tan dport = :51471 and sport = :22 显示目的端口为51417且源端口为22的连接

    Linux网络配置文件修改
      IP、MASK、GW、DNS相关配置文件:/etc/sysconfig/network-scripts/ifcfg-Interface_Name
      路由相关的配置文件(默认没有须手动创建):/etc/sysconfig/network-scripts/route-Interface_Name

      /etc/sysconfig/network-scripts/ifcfg-IFACE:
      DEVICE=eth0 此配置文件应用到的设备
      HWADDR=00:0C:29:3F:16:62 对应的设备的MAC地址
      BOOTPROTO=static 激活此设备时使用的地址配置协议(dhcp, static, none, bootp)
      NM_CONTROLLED=no NM是NetworkManager的简写,此网卡是否接受NM控制;CentOS6建议为"no"
      ONBOOT=yes 在系统引导时是否激活此设备
      TYPE=Ethernet 接口类型,常见有的Ethernet, Bridge
      UUID=6f404499-c071-4191-a5bd-fc29d8008783 设备的惟一标识

      IPADDR=192.168.10.1 指明IP地址
      NETMASK=255.255.255.0 子网掩码
      GATEWAY=192.168.10.254 默认网关
      DNS1=202.96.134.133 第一个DNS服务器指向
      DNS2=114.114.114.114 第二个DNS服务器指向

      USERCTL=no 普通用户是否可控制此设备
      PEERDNS=yes 如果BOOTPROTO的值为"dhcp",是否允许dhcp server分配的dns服务器信息直接覆盖至/etc/resolv.conf文件中

      /etc/sysconfig/network-scripts/route-IFACE
      两种风格:两种不能混用,只能固定使用其中某一种
      第一种:TARGET via GW
      192.168.0.0/24 via 192.168.10.254

      第二种:每三行定义一条路由
      ADDRESS#=TARGET
      NETMASK#=mask
      GATEWAY#=GW
      ADDRESS0=192.168.0.0
      NETMASK0=255.255.255.0
      GATEWAY0=192.168.10.254

      重启网络服务:
      /etc/init.d/network restart或service network restart
      /etc/init.d/NetworkManager restart或service NetworkManager restart

      给网卡配置多地址:
      ifconfig
        ifconfig eth0:0 192.168.0.1/24
      ip
        ip addr add 192.168.0.1/24 dev eth0 label eth0:0
      配置文件:
        /etc/sysconfig/network-scripts/ifcfg-eth0:0
        DEVICE=eth0:0
      注意:网卡别名不能使用dhcp协议引导;

      Linux网络属性配置工具tui(text user interface):
      system-config-network-tui,也可以使用setup命令调用system-config-network-tui;注意:记得重启网络服务方能生效;

      修改当前主机的主机名:
      hostname [HOSTNAME]
      /etc/sysconfig/network
        HOSTNAME=New_Name
      /etc/hosts
        127.0.0.1 New_Name

      网络接口识别并命名相关的udev配置文件:可以用于修改网卡的设备名称,不过要重新装载网卡驱动生效
      /etc/udev/rules.d/70-persistent-net.rules
      lsmod 查看内核装载的模块
      卸载网卡驱动:
        modprobe -r e1000
      装载网卡驱动:
        modprobe e1000

    Centos 7网络配置:
      一致性网络设备命名(Consistent Network Device Naming),为什么需要这个:
      服务器通常有多块网卡,有板载集成的,同时也有插在PCIe插槽的。Linux系统的命名原来是eth0,eth1这样的形式,但是这个编号往往不一定准确对应网卡接口的物理顺序。为解决这类问题,dell开发了biosdevname方案。systemd v197版本中将dell的方案作了进一步的拓展。目前的Centos既支持dell的biosdevname,也支持systemd的方案。

    Centos7中的网卡命名策略:
      Scheme 1:如果从Firmware或BIOS中能够取到可用的板载网卡的索引号,则使用这个索引号命名,例如: eno1,如不能则尝试Scheme 2
      Scheme 2:如果从Firmware或BIOS中能够取到可以用的网卡所在的PCI-E热插拔插槽的索引号,则使用这个索引号命名,例如: ens1,如不能则尝试Scheme 3
      Scheme 3:如果能拿到设备所连接的物理位置信息,则使用这个信息命名,例如:enp2s0,如不能则尝试Scheme 5
      Scheme 5:传统的kernel命名方法,例如: eth0,这种命名方法的结果不可预知的,即可能第二块网卡对应eth0,第一块网卡对应eth1。
      Scheme 4:使用网卡的MAC地址来命名,这个方法一般不使用。例如enx2387a1dc5607

    biosdevname和net.ifnames两种命名规范
    net.ifnames的命名规范为: 设备类型+设备位置+数字
      设备类型:
        en 表示Ethernet
        wl 表示WLAN
        ww 表示无线广域网WWAN
       设备位置:

      实际的例子:
        eno1 板载网卡
        enp0s2 pci网卡(插槽上网卡适配器有多个接口)
        ens33 pci网卡(插槽上网卡适配器只有一个接口)
        wlp3s0 PCI无线网卡
        wwp0s29f7u2i2 4G modem
        wlp0s2f1u4u1 连接在USB Hub上的无线网卡
        enx78e7d1ea46da pci网卡

    biosdevname的命名规范为:
          

      实际的例子:
        em1 板载网卡
        p3p4 pci网卡
        p3p4_1 虚拟网卡

      前面的Scheme策略顺序是系统默认的
      如果系统BIOS符合要求且系统中安装了biosdevname,同时biosdevname=1启用,则biosdevname优先
      如果BIOS不符合或biosdevname没安装或安装了但是biosdevname=0,则仍然是systemd的规则优先
      如果用户自己定义了udev rule来修改内核设备名字,则用户规则优先

      内核参数组合使用的时候,其结果如下:
      biosdevname=0,net.ifnames=1   网卡名 "enp5s2"   systemd优先
      biosdevname=1,net.ifnames=0   网卡名 "em1"     biosdevname优先
      biosdevname=0,net.ifnames=0   网卡名 "eth0"    传统方式优先

    网卡设备命名过程:
      核心流程:linux内核启动过程中,会默认给网卡以ethX方式随机命名,然后再通过systemd去rename成其它名称;systemd按照如下顺序执行udev的rule
      /usr/lib/udev/rules.d/60-net.rules
      /usr/lib/udev/rules.d/71-biosdevname.rules
      /usr/lib/udev/rules.d/75-net-description.rules
      /usr/lib/udev/rules.d/80-net-name-slot.rules

      60-net.rules
      使用/lib/udev/rename_device这个程序,去查询/etc/sysconfig/network-scripts/下所有以ifcfg-开头的文件,如果在ifcfg-xx中匹配到HWADDR=xx:xx:xx:xx:xx:xx参数的网卡接口则选取DEVICE=yyyy中设置的名字作为网卡名称。

      71-biosdevname.rules
      如果系统中安装了biosdevname,且内核参数未指定biosdevname=0,且上一步没有重命名网卡,则按照biosdevname的命名规范,从BIOS中取相关信息来命名网卡。主要是取SMBIOS中的type 9(System Slot) 和type 41(Onboard Devices Extended Information)不过要求SMBIOS的版本要高于2.6,且系统中要安装biosdevname程序。

      75-net-description.rules
      udev工具通过检查网卡属性信息,填写如下这些udev的属性值
      ID_NET_NAME_ONBOARD
      ID_NET_NAME_SLOT
      ID_NET_NAME_PATH
      ID_NET_NAME_MAC

      80-net-name-slot.rules
      如果在60-net.rules、71-biosdevname.rules这两条规则中没有重命名网卡,且内核未指定net.ifnames=0参数则udev依次尝试使用以下属性值来命名网卡,如果这些属性值都没有(75-net-description.rules会填写这些信息),则网卡不会被重命名。
      ID_NET_NAME_ONBOARD
      ID_NET_NAME_SLOT
      ID_NET_NAME_PATH

      上边的71-biosdevname.rules是实际执行biosdevname的policy;75-net-description.rules和80-net-name-slot.rules实际执行Scheme 1,2,3
      根据上述的过程,可见网卡命名受 biosdevname和net.ifnames这两个内核参数影响;这两个参数都可以在grub配置中提供。biosdevname=0是系统默认值(dell服务器默认是1),net.ifnames=1是系统默认值:
      #cat /etc/default/grub
      GRUB_TIMEOUT=5
      GRUB_DEFAULT=saved
      GRUB_DISABLE_SUBMENU=true
      GRUB_TERMINAL_OUTPUT="console"
      GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel_king/root rd.lvm.lv=rhel_king/swap crashkernel=auto net.ifnames=0 biosdevname=0 rhgb quiet"
      GRUB_DISABLE_RECOVERY="true"

    Centos 7网卡命名改为传统模式:
     如果不习惯使用新的命名规则,可以恢复使用传统的方式命名,编辑 grub 文件,增加两个变量,再使用grub2-mkconfig 重新生成grub 配置文件即可。
      1、编辑 grub 配置文件
      vim /etc/sysconfig/grub(是/etc/default/grub的软连接)
      # 为GRUB_CMDLINE_LINUX变量增加2个参数,具体内容如下(加粗):
      GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap net.ifnames=0 biosdevname=0 rhgb quiet"

      2、重新生成 grub 配置文件
      grub2-mkconfig -o /boot/grub2/grub.cfg
      然后重新启动 Linux 操作系统,通过 ip addr 可以看到网卡名称已经变为eth0

      3、修改网卡配置文件
      原来网卡配置文件名称为ifcfg-ens33,这里需要修改为ethx 的格式,并适当调整网卡配置文件。
      mv /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-eth0
      # 修改ifcfg-eth0文件如下内容(其它内容不变)
      NAME=eth0
      DEVICE=eth0
      # systemctl restart network.service # 重启网络服务

    Centos 7 IP地址配置工具:nmcli、nmtui
      nmcli [ OPTIONS ] OBJECT { COMMAND | help }
      device - show and manage network interfaces
      nmcli device status 查看所有网卡状态
      nmcli device show 查看所有网卡信息
      nmcli device show eth0 查看指定网卡信息
      nmcli device connect eth0 连接指定网卡
      nmcli device disconnect eth0 断开指定网卡

      connection - start, stop, and manage network connections
      nmcli connection show 查看所有设备连接信息
      nmcli c show eth0 查看指定设备详细信息
      如何修改IP地址等属性:
      #nmcli connection modify IFACE [+|-]setting.property value
      nmcli c modify eth0 ipv4.addresses 192.168.1.1/24
      nmcli c modify eth0 ipv4.gateway 192.168.1.254
      nmcli c modify eth0 ipv4.dns1 202.96.134.133
      nmcli c modify eth0 ipv4.method manual   指定网络信息获取方式,这里为手动指定

      网络配置tui工具:nmtui
      主机名称配置工具:hostnamectl
      hostnamectl 查看系统主机名和相关信息
      hostnamectl status 查看系统主机名和相关信息信息
      hostnamectl set-hostname New_Hostname 配置新的主机名

      网络客户端工具:lftp, ftp, lftpget, wget
     # lftp [-p port] [-u user[,password]] SERVER
      子命令:
      get  下载单个文件
      mget 下载多个文件
      ls   显示当前目录文件
      help 显示帮助信息

     # lftpget URL 直接跟URL地址下载文件到当前目录
      # ftp 传统的ftp客户端工具,能用lftp就不用这个
      # wget
      wget [option]... [URL]...
        -q 静默模式
        -c 断点续传
        -O 指定下载到指定路径
        --limit-rates= 限制传输速率

    课外作业:nmap、ncat、tcpdump工具

  • 相关阅读:
    gitlab介绍
    git-代码分支管理
    git-基础命令使用
    theano 实现gpu和矩阵运算 基础上开发了pylearn2 .更模块化了,深度学习分成了3步。1,创建数据库,存pkl。2 训练。3 看一下学习模型。 yaml文件里存神经网络结构。
    c# 对象赋值踩坑
    c# 保存文件名重复,追加(1)(2)......
    C# 获取文件的后缀,文件名和路径
    Linux下,java格式化日期
    java中运用subList的做简单分页操作
    js生成二维码,支持打印显示
  • 原文地址:https://www.cnblogs.com/Link-Luck/p/9858339.html
Copyright © 2020-2023  润新知