zoukankan      html  css  js  c++  java
  • Linux——网络属性管理

    由于在传统的共享以太网中,所有的节点共享传输介质,所以同一时间只能允许2台计算机之间通信,如果多台计算机想要同时通信,就会导致数据“粘包”或堵塞。于是以太网采用了: CSMA/CD协议(基带冲突检测的载波监听多路访问技术)

    这个协议的作用是:证传输介质有序、高效地为许多节点提供传输服务,换句话说,就是每个主机发送信息前要先进行载波监听(看这个网络有没有人用),有人用就等待,没人用就立即发信号并监听,一旦发生了冲突,就后退一段随机时间,然后在检测。

    交换机:

    这样就又有一个问题了,在网络负载增大时,发送时间增长,发送效率急剧下降(就是在同一时刻发生了冲突,大家都不发送了)。那么,我们就需要一个新的解决方案了,将一个大网络切割成小网络,这样就可以使小网络内部之间的通信就相对流畅了。

    小网络之间通过交换机/网桥进行通信,交换机/网桥中有一个mac地址表(存放着网络上的节点的网卡MAC地址),通过mac表实现小网络之间的通信

    MAC地址表动态生成的过程:

    1)主机A将一个源MAC地址(一共48位:前24bits由IEEE的注册管理机构RA分配给不同厂家,后24bits:厂商自己定)为自己,目标MAC地址主机C的数据帧发送给交换机

    2)交换机1收到此数据帧后,会学习源MAC地址,并检查MAC地址表,发现没有目标MAC地址的记录,则会将数据帧广播(发送每一个主机一份)出去,主机B和交换机2都会收到此数据帧。

    3)交换机2收到此数据帧后也会将数据帧中的源MAC地址和对应的接口记录到MAC地址表中,并检查自己的MAC地址表,发现没有目标MAC地址的记录,则会广播此数据帧。

    4)主机C收到数据帧后,会响应这个数据帧,并回复一个源MAC地址为自己的数据帧,这时交换机1和交换机1都会将主机C的MAC地址记录到自己的MAC地址表中,并且以单播的形式将此数据帧发送给主机A。

    5)这时,主机A和主机C通信就是一单播的形式传输数据帧了,主机B和主机C通信如上述过程一样,因此交换机2的MAC地址表中记录着主机A和主机B的MAC地址都对应接口f 0/1。

    路由器:

    以上这种方法解决了冲突域的问题,但是会产生广播域的问题(广播过于频繁,会导致广播过多,引起主机之间不发送数据了,光广播了)

    所以我们通过路由器来解决广播域的问题,路由系统连接着交换机

    相比于交换机,路由器并不通过MAC地址来确定转发数据的目的地址。路由器工作在网络层,利用不同网络的ID号(IP地址+子网掩码)来确定数据转发的目的地址,路由器通过IP地址将连接到其端口的设备划分为不同的网络(子网),每个端口下连接的网络即为一个广播域,广播数据不会扩散到该端口以外,因此我们说路由器隔离了广播域

    进程之间的通信:

    由于真正通信的是进程之间进行通信,所以我们是通过套接字(ip:port),这种方式使进程之间进行通信的。

    应用层协议(url):

    由于我们访问网站的时候,只会获得相应网址的内容,所以url是标记套接字上哪个资源的位置

    网络7层协议

    应用层

    表示层    前三个是:资源子网

    会话层

    传输层:源port --> 目标port(tcp,udp,sctp协议)

    网络层:源IP --> 目标IP    后4个是通信子网

    数据链路层:本地通信

    物理层:物理电缆

    ip协议

    IPv4 地址分类:

    ipv4地址采用的是点分十进制(8位2进制)

    每一位的范围:0000 0000 - 1111 1111(0-255)

    0.0.0.0-255.255.255.255

    A类:前1位表示网络地址,最后一位表示主机地址

    • 第一位范围:0 000 0000 - 0 111 1111(1-127)
    • 网络数:126, 127(本地回环)
    • 每个网络中的主机数:2^24-2;全为0(网络地址),全为1(广播地址)
    • 默认子网掩码:255.0.0.0
    • 私网地址:10.0.0.0/8(表示1的个数 )

    B类:前2位表示网络地址,最后一位表示主机地址

    • 第一位范围:10 00 0000 - 10 11 1111(128-191)
    • 网络数:2^14
    • 每个网络中的主机数:2^16-2
    • 默认子网掩码:255.255.0.0
    • 私网地址:172.16.0.0/16-172.31.0.0/16

    C类:前3位表示网络地址,最后一位表示主机地址

    • 110 0 0000 - 110 1 1111: 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

    子网掩码有什么用:

    源地址:172.16.100.100/255.255.0.0,

    目标地址:172.17.1.1

    源ip地址与源子网掩码做“与”运算,目标ip地址与源子网掩码做“与”运算,看相不相同,相同就是本地网络,不同就要跨网络通信

    跨网络通信:要靠路由来实现

    • 主机路由:x.x.x.x/32,意思是仅仅到x.x.x.x的报文听我的。
    • 网络路由:x.x.x.x/n,意思是到x.x.x.x/n的报文听我的。
    • 默认路由:0.0.0.0/0,意思是实在没人要的报文听我的。

    Linux配置连入网络

    连入网络需要知道以下三个东西:

    • IP/mask
    • 路由:默认网关
    • DNS服务器:将域名解析成ip地址
      • 主DNS服务器
      • 次DNS服务器(备胎们)
      • 第三DNS服务器

    Linux主要有两种配置方式,动态分配(DHCP,动态主机配置协议)和静态指定(ifcfg系,ip系,编辑配置文件)

    一、ifcfg系列

    配置网络接口:

    接口命名方式(centos6):

    • 以太网:eth[0,1,2,...]
    • ppp(拨号网络):ppp[0,1,2,...]

    ifconfig命令

    实现查看本机的网络信息,和修改ip地址、子网掩码的功能

    用法1:ifconfig [interface]:

    • # ifconfig:显示本机所有处于活动状态接口的地址
    • # ifconfig -a:显示本机所有的接口
    • # ifconfig IFACE(接口名) [up|down](启用/禁用接口)

    用法2:ifconfig interface [aftype] options | address ...

    • # ifconfig IFACE IP/(mask长度) [up]:修改接口的ip和子网掩码
    • # ifconfig IFACE IP netmask MASK:修改接口的ip和子网掩码
    ifconfig ens33 192.168.37.130/24 up
    
    # 将ens33端口的ip地址修改为192.168.37.130,子网掩码改为255.255.255.0,如果想要恢复之间的状态,可以使用service network restart命令重启网络

    注意:ifconfig命令配置后立即生效;但不会永久有效。

    启用混杂模式:[-]promisc("-"表示禁用,不加表示启用。我也不知道它是干啥的)

    route命令

    路由管理命令,用来配置,查看,删除路由信息。

    查看当前路由的ip,网关:route -n

    添加:route add

    配置路由就是告诉系统从哪个路由网关连接网络

    命令格式:route add [-net|-host](指明网络路由还是主机路由) target [netmask Nm(经由哪个路由网关)] [gw Gw] [[dev] If]

    示例:目标:192.168.1.3 网关:192.168.37.2

    # route add -host 192.168.1.3 gw 192.168.37.2 dev ens33
    添加一个主机路由(ip:192.168.1.3),经由路由网关(192.168.37.2),从ens33接口发出,子网掩码会自动判断,主机路由是255.255.0

    目标:192.168.0.0 网关:192.168.37.2

    route add -net 192.167.0.0 netmask 255.255.255.0 gw 192.168.37.2 dev ens33

    # route add -net 192.168.0.0/24 gw 192.168.37.2 dev ens33

    添加网络路由的时候,必须要加上子网掩码

    默认路由,网关:192.168.37.2

    ~]# route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.37.2

    ~]# route add default gw 192.168.37.2

    删除:route del

    命令格式:route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]

    示例:

    删除刚刚添加的主机路由的ip:# route del -host 192.168.1.3

    删除刚刚添加的网络路由的ip:# route del -net 192.168.0.0 netmask 255.255.255.0 或 # route del -net 192.168.0.0/24

    DNS服务器指定

    修改配置文件/etc/resolv.conf,三个DNS地址

    • nameserver DNS_SERVER_IP1
    • nameserver DNS_SERVER_IP2
    • nameserver DNS_SERVER_IP3

    正解:FQDN(完全限定域名 www.xxx.com)-->IP:从域名 --> ip

    • # dig -t A FQDN(解析测试)
    • # host -t A FQDN

    反解:IP-->FQDN: ip --> 域名

    • # dig -x IP
    • # host -t PTR IP

    netstat命令:

    网络状态查看命令

    显示网络连接:

    命令格式: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 -I接口名(大写i,没有空格):显示指定接口网络状态的统计数据

    二、ip系列

    命令格式:ip [ OPTIONS ]  { link | addr | route } { COMMAND | help }

    ip link - network device configuration

    set(改变设备属性)

    • dev IFACE { up | down }:激活或禁用指定接口;

    show(显示设备属性)

    • [dev IFACE]:查看指定接口信息
    • [up]:仅显示处于激活状态的接口

    ip address - protocol address management

    ip addr { add | del } IFADDR(ip地址/掩码位数) dev IFACE(接口名):为网卡配置多个ip地址

    • [label LABEL]:添加地址时指明网卡别名(centos6)
    • [scope {global|link|host}]:指明作用域
      • global: 全局可用;
      • link: 仅链接可用;
      • host: 本机可用;
    • [broadcast ADDRESS]:指明广播地址

    添加

    删除

    ip addr show :显示所有设备的信息

    • [dev DEVICE]:显示指定设备的信息
    • [label PATTERN]:只显示指定别名的设备信息
    • [primary | secondary]:主地址和辅助地址

    ip addr flush :删除所有地址

    使用格式同show

    ip route - routing table management

    添加路由(ip route add)

    命令格式:ip route add TARGET via GW dev IFACE src SOURCE_IP

    TARGET:

    • 主机路由:IP
    • 网络路由:NETWORK/MASK

    示例:ip route add 192.168.1.3(主机路由) via 192.168.37.2 dev eth0

    示例:ip route add 192.168.0.0/24(网络路由) via 192.168.37.2 dev eth0

    添加网关:ip route add defalt via GW dev IFACE

    删除路由:ip route del TARGET

    显示路由:ip route show

    清除路由:ip route flush

    • [dev IFACE]:删除指定借口的所有路由
    • [via PREFIX]:删除指定网关的所有路由

    ss命令:

    网络状态查看工具(取代netstat命令的,网络繁忙时比netstat牛逼)

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

    选项:

    • -t: tcp协议相关
    • -u: udp协议相关
    • -w: 裸套接字相关
    • -x:unix sock相关
    • -l: listen状态的连接
    • -a: 所有
    • -n: 数字格式
    • -p: 相关的程序及PID
    • -e: 扩展的信息
    • -m:内存用量
    • -o:计时器信息
      • 常用组合:
      • -tan, -tanl, -tanlp, -uan

    FILTER := [ state TCP-STATE ] [ EXPRESSION ]:指明TCP的状态/表达式

    TCP的常见状态(tcp有限状态集)

    • LISTEN: 监听
    • ESTABLISHED:已建立的连接
    • FIN_WAIT_1:等待
    • FIN_WAIT_2
    • SYN_SENT:SYN已发送
    • SYN_RECV:SYN已接收
    • CLOSED:已关闭

    EXPRESSION(表达式):

    • dport = 源端口
    • sport = 目标端口
      • 示例:’( dport = :ssh or sport = :ssh )’

    三、修改配置文件

    注:修改配置文件不会立即生效,要重启网络服务(service network restart)

    IP、MASK、GW、DNS相关配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE(接口名称)

    • DEVICE:此配置文件应用到的设备;
    • HWADDR:对应的设备的MAC地址;
    • BOOTPROTO:激活此设备时使用的地址配置协议,常用的dhcp, static, none, bootp;
    • NM_CONTROLLED:NM是NetworkManager的简写;此网卡是否接受NM控制;CentOS6建议为“no”;
    • ONBOOT:在系统引导时是否激活此设备;
    • TYPE:接口类型;常见有的Ethernet, Bridge;
    • UUID:设备的惟一标识;
    • IPADDR:指明IP地址;
    • NETMASK:子网掩码;
    • GATEWAY: 默认网关;
    • DNS1:第一个DNS服务器指向;
    • DNS2:第二个DNS服务器指向;
    • USERCTL:普通用户是否可控制此设备;
    • PEERDNS:如果BOOTPROTO的值为“dhcp”,是否允许dhcp server分配的dns服务器指向信息直接覆盖至/etc/resolv.conf文件中;

    路由相关的配置文件:/etc/sysconfig/network-scripts/route-IFACE(路由名称,默认不存在)

    两种风格:

    (1) TARGET(目标ip/mask位数) via GW

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

    ADDRESS#=TARGET(目标ip)

    NETMASK#=mask(子网掩码)

    GATEWAY#=GW(默认网关)

    小Tips:

    给网卡配置多地址:
    
    ifconfig:ifconfig IFACE_ALIAS(别名) ip/mask位数 up(激活)
    ip:ip addr add 
    配置文件:cp一份改一改就好了
    
    注意:网关别名不能使用dhcp协议引导;
    

    注:也可以使用可视化界面修改:system-config-network-tui,这个也要重启网络服务方能生效;

    配置当前主机的主机名:

    (1)hostname [HOSTNAME]

    (2)修改配置文件/etc/sysconfig/network中:HOSTNAME=xxx

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

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

    卸载网卡驱动:

    • modprobe -r e1000

    装载网卡驱动:

    • modprobe e1000

    四、centos7的网络属性配置

    传统命名:以太网eth[0,1,2,...], wlan[0,1,2,...]

    centos7改为了,前后一致的可预测功能的接口命名机制;

    (1) 网卡命名机制

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

    (a) 如果Firmware或BIOS为主板上集成的设备提供的索引信息可用,且可预测则根据此索引进行命名,例如eno1;

    (b) 如果Firmware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,例如ens1;

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

    (d) 如果用户显式启动,也可根据MAC地址进行命名,enx2387a1dc56;

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

    上述命名机制中,有的需要biosdevname程序的参与;

    (2) 名称组成格式

    • en: ethernet以太网接口
    • wl: wlan无线局域网设备
    • ww: wwan无线广域网设备

    名称类型:

    • o<index>: 集成设备的设备索引号;
    • s<slot>: 扩展槽的索引号;
    • x<MAC>: 基于MAC地址的命名;
    • p<bus>s<slot>: enp2s1

    (3)网卡设备的命名过程:
    第一步:
    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

    (4)回归传统命名方法:

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

    GRUB_CMDLINE_LINUX="net.ifnames=0 rhgb quiet"

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

    grub2-mkconfig -o /etc/grub2.cfg

    (c) 重启系统

    (5)地址配置工具:nmcli

    命令格式:nmcli [ OPTIONS ] OBJECT { COMMAND | help }

    device - show and manage network interfaces(管理网络接口,相当于ip的link)

    • # nmcli d show ens33:查看某个接口的当前状态信息

    connection - start, stop, and manage network connections(启动停止配置网络连接,相当于ip的addr)

    • # nmcli c show:显示当前所有可用状态的连接
    • # nmcli connection modify IFACE [+|-]setting.property value:修改IP地址等属性
      • setting.property:
      • ipv4.addresses
      • ipv4.gateway
      • ipv4.dns1
      • ipv4.method
      • manual

    示例:

    # nmcli c modify ens33 +ipv4.addresses 172.16.100.12/16:为接口添加ip地址
    
    # nmcli c modify ens33 -ipv4.addresses 172.16.100.12/16:为接口删除ip地址
    
    # nmcli c modify ens33 +ipv4.dns 8.8.8.8:为端口添加DNS服务器
    
    以上操作都需要手动禁用接口再启用才会生效:# nmcli c down ens33;nmcli c up ens33
    
    # nmcli d show ens33:查看接口信息
    

    nmcli的图形文本编辑菜单:nmtui

    主机名称配置工具:

    hostnamectl status(交互式)

    hostnamectl set-hostname + 主机名

    五、网络客户端工具:

    # lftp:

    命令格式:lftp [-p port] [-u user[,password]] SERVER

    子命令:

    • get:获取一个
    • mget:获取一堆
    • ls
    • help

    # lftpget URL:获取某个(ftp的)URL的文件到指定位置

    # ftp

    # wget:

    非交互式文件下载工具

    命令格式:wget [option]... [URL]...

    • -q: 静默模式
    • -c: 续传
    • -O: 保存位置
    • --limit-rates=: 指定传输速率
  • 相关阅读:
    poj 2584 T-Shirt Gumbo (二分匹配)
    hdu 1757 A Simple Math Problem (乘法矩阵)
    矩阵之矩阵乘法(转载)
    poj 2239 Selecting Courses (二分匹配)
    hdu 3661 Assignments (贪心)
    hdu 1348 Wall (凸包)
    poj 2060 Taxi Cab Scheme (二分匹配)
    hdu 2202 最大三角形 (凸包)
    hdu 1577 WisKey的眼神 (数学几何)
    poj 1719 Shooting Contest (二分匹配)
  • 原文地址:https://www.cnblogs.com/x54256/p/8167398.html
Copyright © 2011-2022 走看看