Linux系统管理连网

Posted 果子哥丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统管理连网相关的知识,希望对你有一定的参考价值。

第二部分(连网)描述了UNIX系统上所使用的协议和用于设置、扩展、维护网络及面向Internet的服务器的技术。另外还介绍了上层网络软件,包括域名系统、电子邮件、单点登录和Web托管。

第十三章 TCP/IP连网

1、基础知识

OSI七层模型结构

  • 应用层 message 报文 HTTPS DNS FTP 应用层协议
  • 表示层 PPDU
  • 会话层 SODU
  • 传输层 segment 报文段 端口:16bit HTTP
  • 网络层 package 包/分组 路由器 IP:32bit
  • 数据链路层 frame 帧 交换机 MAC 物理地址长度:48bit
  • 物理层 bit 比特 集线器

OSI七层模型的各层功能

  • 应用层功能: 网络服务与最终用户的一个接口。提供方便的接口和运行程序。(提供应用程序间通信)
    协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP
    FTP主动模式和被动模式
    主动模式的FTP是指服务器主动连接客户端的数据端口,被动模式的FTP是指服务器被动地等待客户端连接自己的数据端口。
  • 表示层功能: 加密,处理用户信息的表示问题,如编码、数据格式转换和加密解密。(处理数据格式、数据加密)
    格式有:JPEG、ASCll、DECOIC、加密格式等
  • 会话层功能: 向两个实体的表示层提供建立和使用连接的方法(单工,半双工,全双工)。(建立、维护和管理会话)
  • 传输层功能:完成端到端差错检测和流量控制 (TCP面向连接可靠的,UDP面向无连接不可靠)
  • 网络层功能: 确定数据包从源端到目的端如何选择路由,即使用逻辑地址进行选址。(寻址和路由选择)
    协议有:ICMP IGMP IP(IPV4 IPV6) ARP RARP
  • 数据链路层: 定义了在单个链路上如何传输数据,传输的数据单元称为数据帧。MAC地址寻址(提供介质访问、链路管理等)建立逻辑连接、进行硬件地址寻址、差错校验等功能。将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正
  • 物理层功能: 为数据通信提供传输设备及互连设备,为数据传输提供可靠的环境,传输的数据单元称为比特流。(比特流传输)

分组与封装:
数据以分组的形式在网络上传输,链路层限制了数据的最大长度。每个分组都是由头部(header)和载荷(playload)组成。头部指明了分组从哪里来,要去往何处。另外还包括校验和、协议特定的信息或其他处理说明。载荷就是要传输的数据。

原始数据单元的名称依赖于具体的协议层。
在链路层,它叫作帧(frame);
在网络层,它叫作分组(packet);
在传输层,它叫作段(segment);

链路层分为两部分:

  • 介质访问控制(Media Access Control,MAC)子层。
  • 逻辑链路控制(Logical Link Control,LLC)子层。
  • MAC子层处理传输介质并将分组送入线路。LLC负责成帧操作。

最大传输单元(MTU):1500字节

地址类型

  • 单播:指向单个网络接口的地址;
  • 多播:指向一组主机的地址;
  • 广播:指向本地子网中所有主机的地址;
  • 任播:指向一组主机中任意之一的地址。
  • 多播寻址有助于实现像视频会议这类应用,因为同一批分组必须发送给所有的参与者。Internet组管理协议(IGMP)能够构建并管理主机组,这组主机可以被视为一个多播目标。
  • 任播地址使得分组能够被发送到多个目标中的距离最近的那个(以网络路由的角度),从而在网络层实现负载均衡。

IPv4地址分类,第一个字节范围

  • A类:1~127
  • B类:128~191
  • C类:192~223
  • D类:224~239
  • E类:240~255

私有地址:

  • A类地址 10.0.0.0/8 :10.0.0.0 ~ 10.255.255.255
  • B类地址 172.16.0.0/12:172.16.0.0 ~ 172.31.255.255
  • C类地址 192.168.0.0/16:192.168.0.0 ~ 192.168.255.255

TCP/IP四层模型
TCP/IP模型包含以下4个层次:网络接口层、网络层、传输层、应用层

  • 应用层:直接为用户的应用进程提供服务。
  • 运输层:负责向两个主机进程之间的通信提供服务。
  • 网际层 :负责提供基本的数据封包传送功能,让每块数据包都能到达目的主机。
  • 网络接口层:接收IP数据包并进行传输,从网络上接收物理帧,抽取IP数据包转交给下一层,对实际的网络媒体的管理。

TCP包头内容

  • 序号:seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。
  • 确认号:ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,ack=seq+1
  • 标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下:
    URG:紧急指针有效
    ACK:确认序号有效
    PSH:接收方应该尽快将这个报文交给应用层。
    RST:重置连接。
    SYN:发起一个新连接。
    FIN:释放一个连接。

三次握手和四次挥手
在这里插入图片描述
概念:指在发送数据的准备阶段,服务器和客户端之间需要三次交互
第一次握手:建立连接时,客户端向服务器发送一个SYN包,并进入SYN_SENT状态,等待服务器确认。
第二次握手:当服务器收到客户端的请求后,此时要给客户端给一个确认信息ACK,同时发送SYN包,此时服务器进入 SYN_RECV状态。
第三次握手:客户端收到服务器发的ACK+SYN包后,向服务器发送ACK,发送完毕之后,客户端和服务器进入 ESTABLISHED(TCP连接成功)状态,完成三次握手。

在这里插入图片描述
概念:所谓四次挥手就是说关闭TCP连接的过程,当断开一个TCP连接时,需要客户端和服务器共发送四个包确认。 
第一次挥手:客户端发送一个FIN,用来关闭客户端到服务器的数据传输,客户端进入FIN_WAIT_1状态。​  
第二次挥手:服务器收到FIN后,发送一个ACK给客户端,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序 号),服务器进入CLOSE_WAIT状态。 
第三次挥手:服务器发送一个FIN,用来关闭服务器到客户端的数据传输,服务器进入LAST_ACK状态。
第四次挥手:客户端收到FIN后,客户端进入TIME_WAIT状态,接着发送一个ACK给服务器,确认序号为收到序号+1,服务器进入CLOSED状态,完成四次挥手。

子网划分与CIDR(无类域间路由)
子网划分:是一种直接的扩展。
CIDR:依赖于明确的网络掩码定义地址中网络和主机部分的边界,通过简短的CIDR掩码可以聚合多个网络。因此,CIDR有时也被称为超网。
A类地址 10.0.0.0 ~ 10.255.255.255 ,它的CIDR范围是 10.0.0.0/8 :

网络地址转换NAT
NAT有三种类型:

  • 静态 NAT ( Static NAT )( 一对一 )。将内部网络的私有IP地址转换为公有IP地址,IP地址对是一对一的,是一直不变的。
  • 动态地址 NAT ( Pooled NAT )(多对多)。将内部网络的私有 IP 地址转换为公用 IP 地址时,IP 地址是不确定,随机的。所有被授权访问 Internet 的私有 IP 地址可随机转换为任何指定合法的 IP 地址。也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态 NAT 转换。动态 NAT 是在路由器上配置一个外网 IP 地址池,当内部有计算机需要和外部通信时,就从地址池里动态的取出一个外网 IP,并将他们的对应关系绑定到 NAT 表中,通信结束后,这个外网 IP 才被释放,可供其他内部 IP 地址转换使用,这个 DHCP 租约 IP 有相似之处。 当 ISP 提供的合法 IP 地址略少于网络内部的计算机数量时。可以采用动态转换的方式。
  • 网络地址端口转换 NAPT(Network Address Port Translation)(Port-Level NAT)( 多对一 )。改变外出数据包的源端口并进行端口转换,采用端口多路复用方式。内部网络的所有主机均可共享一个合法外部 IP 地址实现对 Internet 的访问,可以最大限度地节约 IP 地址资源。同时,也可以隐藏网络内部的所有主机,有效避免来自 Internet 的攻击。因此,目前网络中应用最多的就是 PAT 规则。这是最常用的 NAT 技术,也是 IPv4 能够维持到今天的最重要的原因之一,它提供了一种多对一的方式,对多个内网 IP 地址,边界路由可以给他们分配一个外网 IP,利用这个外网 IP 的不同端口和外部进行通信。NAPT 与 动态NAT 不同,它将内部连接映射到外部网络中的一个单独的 IP 地址上,同时在该地址上加上一个由 NAT 设备选定的端口号。
      NAPT 是使用最普遍的一种转换方式,在 HomeGW 中也主要使用该方式。它又包含两种转换方式:SNAT和DNAT。
      (1) 源NAT(Source NAT,SNAT):修改数据包的源地址。源NAT改变第一个数据包的来源地址,它永远会在数据包发送到网络之前完成,数据包伪装就是一具SNAT的例子。
       (2) 目的NAT(Destination NAT,DNAT):修改数据包的目的地址。Destination NAT刚好与SNAT相反,它是改变第一个数据懈的目的地地址,如平衡负载、端口转发和透明代理就是属于DNAT。

SNAT:
内部地址要访问公网上的服务时(如web访问),内部地址会主动发起连接,由路由器或者防火墙上的网关对内部地址做个地址转换,将内部地址的私有IP转换为公网的公有IP,网关的这个地址转换称为SNAT,主要用于内部共享IP访问外部。

DNAT:
当内部需要提供对外服务时(如对外发布web网站),外部地址发起主动连接,由路由器或者防火墙上的网关接收这个连接,然后将连接转换到内部,此过程是由带有公网IP的网关替代内部服务来接收外部的连接,然后在内部做地址转换,此转换称为DNAT

——————

路由选择
路由表

  • ip route show
  • netstat -r
  • netstat -rn 来避免DNS查询

静态路由设置

route add -net 132.236.220.64/26 gw 132.236.212.6 eth1
route add default gw 132.236.227.1 eth0

ARP协议:地址解析协议,主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

  • ARP请求:任何时候,当主机需要找出这个网络中的另一个主机的物理地址时,它就可以发送一个ARP请求报文,这个报文包好了发送方的MAC地址和IP地址以及接收方的IP地址。因为发送方不知道接收方的物理地址,所以这个查询分组会在网络层中进行广播。
  • ARP响应:局域网中的每一台主机都会接受并处理这个ARP请求报文,然后进行验证,查看接收方的IP地址是不是自己的地址,只有验证成功的主机才会返回一个ARP响应报文,这个响应报文包含接收方的IP地址和物理地址。这个报文利用收到的ARP请求报文中的请求方物理地址以单播的方式直接发送给ARP请求报文的请求方。

ARP欺骗:通过欺骗局域网内访问者PC的网关MAC地址,使访问者PC错以为攻击者更改后的MAC地址是网关的MAC,导致网络不通。此种攻击可让攻击者获取局域网上的数据包甚至可篡改数据包,且可让网络上特定计算机或所有计算机无法正常连线。
在这里插入图片描述
DHCP服务
DHCP——UDP——67/68
DHCP 采用了 Client/Server 模型;DHCP Client 需要从 DHCP Server 那里获得各种网络配置参数,这个过程是通过 DHCP Client 与 DHCP Server 之间交互各种 DHCP 消息来实现的。DHCP 消息是封装在 UDP 报文中的,DHCP Server使用端口号 67 来接收 DHCP 消息,DHCP Client 使用端口号 68 来接收 DHCP消息

这一过程包含了四个阶段:发现阶段、提供阶段、请求阶段、确认阶段
在这里插入图片描述
在这里插入图片描述
DNS服务
https://blog.csdn.net/qq_39578545/article/details/105016510

2、网络配置

IP地址、网络掩码、默认路由在/etc/sysconfig/network/中设置。

文件设置内容
network主机名、默认路由
network-scripts/ifcfg-ifname每个接口的参数:IP地址、网络掩码等
network-scripts/route-ifname每个接口的路由:ip route的参数

在/etc/sysconfig/network,可以指定DNS域及默认网关

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=kolor
DOMAINNAME=baidu
GATEWAY=192.168.1.254

特定接口的数据保存在/etc/sysconfig/network-scripts/ifcfg-ifname中,其中ifname是网络接口的名称。这些配置文件负责设置每个接口的IP地址、网络掩码、网络以及广播地址,以及还有一行用于指定该接口是否在引导期间“激活”。

DEVICE=eth0
IPADDR=192.168.1.13
NETMASK=255.255.255.0
NETWORK=192.168.1.0
BROADCAST=192.168.1.255
MTU=1500
ONBOOT=yes

基于DHCP的eth0设置

DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes

修改过/etc/sysconfig中的配置信息之后,在相应的接口上先执行ifdown ifname,再执行ifup ifname。如果你一次配置多个接口,可以重启network服务systemctl restart network

ifconfig配置网络接口
设置接口em0的IPv4地址和网络掩码并启用了该接口
ifconfig em0 192.168.1.13/26 up

查看网络硬件信息
ethtool命令可以查询和设置网络接口的特定介质参数,例如链路速率和双工
# ethtool eth0
要想将该接口锁定100Mbit/s、全双工,可以使用命令:
# ethtool -s eth0 speed 100 duplex full

测试环境中的自动协商,可以通过ethtool -r命令强制立即重新协商链路参数。

使用ethtool做出的改动都不是永久性的,如果想要永久就需要在各个接口配置,如在/etc/sysconfig/network-scripts中加入一行ETHTOOL_OPTS=。ifup命令会将整行作为参数传给ethtool。

3、TCP/IP相关的内核参数

连网参数位于/proc/sys/net/ipv4和/proc/sys/net/ipv6目录下。

参数设置

  • echo
    $ sudo sh -c "echo 1 > icmp_echo_ignore_broadcasts"
  • sysctl
    $ sysctl net.ipv4.icmp_echo_ignore_broadcasts=1
  • /etc/sysctl.conf
    永久改变这些参数(sysctl命令会在系统引导期间会读取该文件。)
    net.ipv4.ip_forward=0 关闭主机的IP转发功能

sh -c的必要性
在Linux使用 echo 并配合命令重定向是实现向文件中写入信息的快捷方式。

比如要向 test.asc 文件中随便写入点内容,可以:
$ echo “信息” > test.asc
或者
$ echo “信息” >> test.asc
下面,如果将 test.asc 权限设置为只有 root 用户才有权限进行写操作:
$ sudo chown root.root test.asc
然后,我们使用 sudo 并配合 echo 命令再次向修改权限之后的 test.asc 文件中写入信息:
$ sudo echo “又一行信息” >> test.asc
-bash: test.asc: Permission denied
这时,可以看到 bash 拒绝这么做,说是权限不够。这是因为重定向符号 “>” 和 “>>” 也是 bash 的命令。我们使用 sudo 只是让 echo 命令具有了 root 权限,但是没有让 “>” 和 “>>” 命令也具有 root 权限,所以 bash 会认为这两个命令都没有像 test.asc 文件写入信息的权限。
解决这一问题的途径有两种。第一种是利用 “sh -c” 命令,它可以让 bash 将一个字串作为完整的命令来执行,这样就可以将 sudo 的影响范围扩展到整条命令。具体用法如下:
$ sudo sh -c ‘echo “又一行信息” >> test.asc’

另一种方法是利用管道和 tee 命令,该命令可以从标准输入中读入信息并将其写入标准输出或文件中,具体用法如下:
$ echo “第三条信息” | sudo tee -a test.asc
注意,tee 命令的 “-a” 选项的作用等同于 “>>” 命令,如果去除该选项,那么 tee 命令的作用就等同于 “>” 命令

4、网络故障排除

ping、traceroute、tcpdump、wireshark。

当在协议栈中上下排查时,问自己一些像下面这样的问题。

  • 有没有物理线路和链路指示灯?
  • 接口是否配置正确?
  • ARP表中有没有显示其他主机?
  • 本地机器上有没有安装防火墙?
  • 你当前所在位置和目的地之间是否有防火墙?
  • 如果有防火墙,则是否能够响应ICMP ping?
  • 本地地址(127.0.0.1)能否ping通?
  • 能否ping通其他本地主机的IP地址?
  • DNS工作是否正常?
  • 能否ping通其他本地主机的主机名?
  • 像Web和SSH这种高层服务是否能够工作?
  • 检查防火墙了吗?

ping:检查主机是否存活
要探明分组丢失的原因,先执行traceroute命令,了解分组到达目标主机所途径的路线。然后按顺序ping途中的各个网关,看是哪条链路丢弃了分组。

ping命令能够发送任意大小的回显请求分组,通过使用大于网络MTU(以太网通常是1500字节)的分组,可以强制分片。这种方法有助于识别介质错误或其他如网络拥塞或VPN带来的底层问题。-s选项可以指定以字节为单位的分组大小。
$ ping -s 1500 www.baidu.com

traceroute:跟踪IP分组
traceroute能够揭示分组从源头到达目的地所经过的一系列网关,工作原理是将出站分组的存活时间(time-to-live)字段人为设置为较低的值。当分组抵达网关时,其TTL会减少。如果网关将TTL减为0,该分组会被丢弃,网关会向源主机返回ICMP “time exceeded”(超时)消息。

traceroute的星号*,造成这种情况的原因可能是拥塞,也可能是优先服务“更实际”的流量,有name几个星号并不代表碰上了麻烦

如果发现在某个网关处所有的时间字段全都变成了星号,也没有出现“time exceeded”消息,那可能纯碎是因为网关挂掉了。

如果DNS出现故障,那么使用traceroute -n输出数字形式的IP地址。该选项会禁止查找主机名。

traceroute需要root权限才能使用,如果想让普通用户也能用,必须以setuid root的形式安装。

tcpdump与wireshark:侦听网络流量
tcpdump:https://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html
tcpdump选项:
-i选项,指定接口
-n选项,不进行DNS名称查询
-v选项,增加信息量
-vv选项,增加更多信息量
-w选项,将结果保存到文件中,默认只保存分组头部。
除非只需要头部信息,否则最好使用-s选项指定一个位4892倍数的值来捕获整个分组。
-r选项,读取

监视指定网络接口的数据包
tcpdump -i eth1

监视来自某一子网的入站Web流量
tcpdump src net 192.168.1.0/24 and dst port 80

截获所有210.27.48.1 的主机收到的和发出的所有的数据包
tcpdump host 210.27.48.1 

想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:
tcpdump ip host 210.27.48.1 and ! 210.27.48.2

截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信
tcpdump host 210.27.48.1 and \\ (210.27.48.2 or 210.27.48.3 \\) 

Wireshark(以前是ethereal)是Windows下非常简单易用的抓包工具。但在Linux下很难找到一个好用的图形化抓包工具。
还好有Tcpdump。我们可以用Tcpdump + Wireshark 的完美组合实现:在 Linux 里抓包,然后在Windows 里分析包。

tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
(2)-i eth1 : 只抓经过接口eth1的包
(3)-t : 不显示时间戳
(4)-s 0 : 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包
(5)-c 100 : 只抓取100个数据包
(6)dst port ! 22 : 不抓取目标端口是22的数据包
(7)src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24
(8)-w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析

网络监控:SmokePing、iPerf、Cacti

5、防火墙iptables

iptables
四表五链
在这里插入图片描述

在这里插入图片描述

iptables [-t 表名] 命令选项 [链名] [规则号码] [条件匹配] [-j 目标动作]
      小写 大写  大写      小写    大写

说明:
表名和链名:用于指定iptables命令所操作的表和链
命令选项:用于指定管理iptables规则的方式(比如:插入、增加、删除、查看等)
规则号码:用于指定规则的编号
条件匹配:用于指定对符合什么样条件的数据包进行处理(比如:什么协议、出入网卡等)
目标地址:用于指定数据包的处理方式(比如:允许处理、拒绝、丢弃等)
iptables 常用的命令选项

常见的命令选项
-L                查看
-A                追加,放置在最后一条
-I                插入,默认插入成第一条
-D                删除
-F                清空flush
-P                设置默认策略policy      Chain xxx (policy ACCEPT)
-R				  覆盖

处理动作:
filter表:
-j ACCEPT     允许
-j DROP       丢弃,没有任何提示信息
-j REJECT     拒绝,有提示信息。返回ICMP错误消息
-j LOG        写日志     /var/log/messages   然后将数据包传递给下一条规则

nat表:
-j SNAT           源地址转换 POSTROUTING
-j DNAT           目标地址转换 PREROUTING

iptables防火墙,必须启用IP转发并确保各个iptables模块都已经载入内核。
iptables -F chain-name,清除链中先前的所有规则
iptables -P chain-name target,设置链的默认策略,推荐使用DROP作为默认的链目标
iptables -A chain-name -i interface -j target,将当前规则追加到链中,-i选项将规则应用于指定的interface,-j选项标识出target。

iptables过滤器的命令行选项

子网含义或可能的值
-p proto依据协议匹配:tcp、udp、icmp
-s source-ip匹配主机或源IP地址(可以使用CIDR写法)
-d dest-ip匹配主机或目标IP地址
--sport port依据源端口匹配
--dport port依据目的端口匹配
--icmp-type type依据ICMP类型匹配
!否定子句
-t table指定命令所应用的表(默认是filter)

示例:
第一组规则负责初始化filter表。

首先,清除表中所有的链,然后将INPUT和FORWARD链的默认目标设为DROP,丢弃未经许可的所有分组。

iptables -F
iptables -P INPUT DROP
iptables -P FORWARD DROP

第二组规则
规则是按顺序评估的,最频繁用到的规则放在最前面。第一条规则允许所有发自受信网络的连接通过防火墙。FORWARD链中剩下的3条规则允许通过防火墙与网络服务器10.1.1.2建立连接。具体来说,允许SSH,HTTP,HTTPS通过我们的Web服务器。

iptables -A FORWARD -i eth0 -p ANY -j ACCEPT
iptables -A FORWARD -d 10.1.1.2 -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -d 10.1.1.2 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -d 10.1.1.2 -p tcp --dport 443 -j ACCEPT

第三组规则
第一条规则唯一允许进入防火墙主机(10.1.1.1)的TCP流量就是SSH,这对于管理防火墙本身很有用。第二条规则允许环回流量,这种流量始终保持在主机内部。第三条允许来自内部IP地址的ICMP ECHO_REQUEST分组。

iptables -A INPUT -i eth0 -d 10.1.1.1 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i lo -d 127.0.0.1 -p ANY -j ACCEPT
iptables -A INPUT -i eth0 -d 10.1.1.1 -p icmp --icmp-type 8 -j ACCEPT

第四组规则
禁止所有未明确允许的分组来结束INPUT和FORWARD链。尽管已经使用iptables -P命令强制了这种行为,但LOG目标可以让我们知道谁在Intern俄儿童上想要通过防火墙。

iptables -A INPUT -i eth1 -j LOG
iptables -A FORWARD -i eth1 -j LOG

第五组规则
简单的状态化FORWARD链对离开网络的流量不进行限制,但只允许与主机已发起的连接相关的流量传入。

iptables -A FORWARD -i eth0 -p ANY -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables要想跟踪像FTP和IRC这种复杂的网络会话,一些内核模块必须事先载入。如果没有装载这些模块,iptables会禁止此类连接。尽管状态化分组过滤能够提高站点的安全性,但同时也增加了网络的复杂性,造成性能降低。

iptables -L -v 可能是调试iptables规则最好的方法了,可以知道链中的各条规则都匹配了多少次。

第六组规则
NAT工作,需要通过将内核变量/proc/sys/net/ipv4/ip_forward设置为1来启用内核的IP转发功能。另外,还需要插入相应的内核模块。

$ modprobe iptable_nat
$ modprobe ip_conntrack
$ modprobe ip_conntrack_ftp

使用NAT路由分组的iptables命令形式如下。

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 128.138.101.4
-j SNAT           源地址转换 POSTROUTING
-j DNAT           目标地址转换 PREROUTING

https://blog.csdn.net/qq_39578545/article/details/105068208 NAT表

6、云联网VPC

ucloud的VPC产品:https://docs.ucloud.cn/vpc/introduction/vpc

私有网络简介
私有网络 VPC(Virtual Private Cloud)是属于用户的、逻辑隔离的网络环境。在私有网络中,可以创建指定网段的VPC,在VPC中创建子网并自主管理云资源,同时通过网络ACL实现安全防护。私有网络VPC为用户提供以下能力:

自定义网段:三种网段自由组合,VPC网段随时增减
完备的网络管理:网关NAT、自定义路由表、网络ACL、内网虚拟IP、虚拟网卡,用户都可自由选择配置,并且按照需求设定规则。
子网跨可用区:子网可覆盖地域内任一可用区,实现跨可用区的灾备。
高扩展:跨地域VPC之间可通过高速通道(UDPN)打通,实现稳定的内网传输;结合专线接入,实现单点接入、全球互通的混合云架构。

VPC的路由
VPC的路由选择要比传统的硬件网络简单,因为云并没有模拟物理拓扑。所有可访问的目的地只用一个逻辑跳(one logical hop)就可以到达。
同一VPC内网络默认互通,不同VPC间网络默认不通。VPC网络互通功能可实现不同项目/不同地域的VPC间网络互通,其中不同地域间的VPC需要互通时,需要高速通道配合使用。
互通的VPC间网段不允许重叠。

私有网络组件
私有网络包含VPC、子网、NAT网关和网络ACL等组件:

  • VPC:VPC是属于用户的、逻辑隔离的网络环境。在私有网络中,可以创建指定网段的VPC,在VPC中创建子网并自主管理云资源。
  • 子网:为了科学有效地划分VPC内的地址空间,将其划分为更细粒度的网络段。这些独立的网络段叫做子网(Subnet)。
  • NAT网关:NAT网关是一款企业级的VPC公网网关,可以让子网中未绑定弹性IP的云资源访问外网,也可配置端口转发规则使云资源对外提供服务。
  • 网络ACL:是子网级别的安全策略,用于控制进出子网的数据流。用户可以通过设置出站规则和入站规则,对进出子网的流量进行精确控制。
  • 路由表:路由表是VPC级别的产品,可以控制云资源的网络流量路径。一张路由表由多条路由规则组成,通过与子网绑定,对子网内所有的资源生效。

搭建VPC网络
1、创建VPC。例如更改备注、更改业务组、添加网段等
2、创建子网。
3、添加云主机。创建主机实例,创建时选择相应的VPC和子网。创建成功后,该云主机将存在于该VPC中。
4、创建NAT网关。在NAT网关标签页中点击“创建NAT网关”按钮创建NAT网关实例,选择已创建的VPC和子网。
5、绑定网络ACL

第十四 十五章 物理联网与路由(略)

非屏蔽双绞线:UTP(如今无线网络在很多场景以及取代了UTP)
非屏蔽双绞线(英语:Unshielded Twisted Pair,UTP)是一种数据传输线,由四对不同颜色的传输线互相缠绕所组成,每对相同颜色的线传递著来回两方向的电脉冲,这样的设计是利用了电磁感应相互抵销的原理来屏蔽电磁干扰。UTP广泛用于以太网(局域网)和电话线中。

标准568A:
绿白——1,绿——2,橙白——3,蓝——4,蓝白——5,
橙——6,棕白——7,棕——8
标准568B:
橙白——1,橙——2,绿白——3,蓝——4,蓝白——5,
绿——6,棕白——7,棕——8 、

以太网工作方式(CSMA/CD)

  • 载波侦听(Carrier Sense),意思是网络上各个工作站在发送数据前,都要确认总线上有没有数据传输。若有数据传输(称总线为忙),则不发送数据;若无数据传输(称总线为空),立即发送准备好的数据。
  • 多路访问(Multiple Access),意思是网络上所有工作站收发数据,共同使用同一条总线,且发送数据是广播式。
  • “冲突检测”是指发送结点在发出信息帧的同时,还必须监听媒体,判断是否发生冲突(同一时刻,有无其他结点也在发送信息帧)。

集线器:负责在物理层连接以太网网段,现如今是用交换机。

自动协商

  • 对于速率在1Gbit/s或以上的所有接口,必须全部使用自动协商。这是标准要求的
  • 对于速率在100Mbit/s或以下的接口,要么将链路两端都配置成自动协商模式,要么手动配置两端的速率和双工模式。如果只在一端配置了自动协商,那么该段是不会学习到另一端如何配置的。结果就是两端的配置不一致,导致网络性能低下。

路由协议
OSPF:https://blog.csdn.net/qq_39578545/article/details/105397270
BGP协议:https://blog.csdn.net/qq_39578545/article/details/105424896
BGP:边界网关协议。BGP是一种外部路由协议,用于管理自治系统之间的流量。

路由协议的多播地址

描述IPv6IPv4
该子网中的所有系统ff02::1224.0.0.1
该子网中的所有路由器ff02::2224.0.0.2
未分配ff02::3224.0.0.3
DVMRP路由器ff02::4224.0.0.4
OSPF路由器ff02::5224.0.0.5
OSPF DR路由器ff02::6224.0.0.6
RIP路由器ff02::9224.0.0.9
EIGRP路由器ff02::10224.0.0.10

第十六章 DNS域名系统

1、DNS工作原理

DNS是一个分布式数据库。DNS查询由名称和记录类型组成。返回的答复包含一组响应查询的“资源记录”。

DNS查询顺序
/etc/resolv.conf
DNS服务器是按顺序查找的。只要第一个名称服务器能够答复查询,就忽略其他服务器。如果出现问题,查询超时,则尝试下一个名称服务器。每个服务器逐一尝试,最多4次。每失败一次,超时间隔就会增加。默认超时间隔是5s。

DNS名称空间
DNS名称空间是按照树的形式组织的,其中既包含正向映射,也包含反向映射。正向映射负责将主机名映射为IP地址,反向映射负责将IP地址映射为主机名。
在这里插入图片描述

没有末尾的点号有时叫作“全限定主机名”。

DNS的工作原理
名称服务器分类
在这里插入图片描述
这些分类取决于名称服务器的数据来源(权威、缓存、主、从),所保存的数据类型(存根)、查询路径(转发器)、回答的完整性(递归、非递归)以及服务器的可见性(分发)。

权威服务器与仅执行缓存的服务器
主服务器对于它们自己的区是权威的,但对于所缓存的其他区的信息就没有权威性了。

仅执行缓存的名称服务器从启动文件中获得根域服务器的地址,通过缓存已解析的查询来积累其余的数据。这种服务器没有自己的数据,不具备任何区的权威性(可能除了localhost区)
——————

递归和非递归服务器
名称服务器要么是递归,要么是非递归的。
如果非递归服务器缓存了先前事务的查询结果,或者对所有查询的域具有权威,那么它就能够提供正确的响应。否则,它不会返回真正的答案,而是引荐更优可能知道答案的其他域的权威服务器。非递归服务器的客户端必须做好准备,接受并处理这些推荐的服务器。(迭代)

权威服务器(例如,根服务器和顶级域服务器)都是非递归的,因为它们每秒钟可能要处理数万次查询,少干点别的活也是可以原谅的。

递归服务器只返回真正的答案和错误信息。它会跟随被引荐的服务器,减轻客户端的负担。
——————

授权
所有名称服务器都要通过本地配置文件才能找到根服务器,根服务器知晓com、net、fi、de以及其他顶级域的名称服务器。沿着这个链条继续往下,edu知晓colorado.edu、berkeley.edu等。每个域都可以将其子域的权威授权给其他服务器。

下面看一个真实例子,通过主机lair.cs.colorado.edu上查找主机vangogh.cs.berkeley.edu的地址。主机lair会询问本地的名称服务器ns.cs.colorado.edu,以求得到答案。
在这里插入图片描述
在这里插入图片描述

——————

使用查询工具进行调试
dig最常见的用法是确定特定名称返回的记录。

  • 如果只返回了AUTHORITY响应,则表明你被引向了其他名称服务器。
  • 如果返回的是ANSWER响应,则表明发出的查询被直接答复了(可能还包含其他信息)

从根服务器开始手动跟随授权链,以此验证是否存在问题。
示例:处理域名 www.viawest.com的例子。首先,我们查询根服务器,请求起始授权(Start-of-Authority,SOA)记录,查看谁对viawest.com是权威的。利用参数@nameserver查询指定的名称服务器。

$ dig @a.root-server.net viawest.com soa
;; xxxx,status: NOERROR, id: 7824
;; AUTHORITY SECTION:
com.	172800 IN NS c.gtld-servers.net.

注意,返回的status状态是NOERROR。这表明响应信息中没有明显的错误。其他常见的状态是NXDOMAIN和SERVFAIL,NXDOMAIN表明所请求的名称不存在(或者没有注册),SERVFAIL通常表明名称服务器本身的配置有错误。

AUTHORITY SECTION告诉我们全球顶级域(global Top-Level Domain,gTLD)服务器是指定域名的授权链中的下一环。所以,我们从中随便挑出一个,重复同样的查询。

$ dig @c.gtld-servers.net viawest.com soa
;; AUTHORITY SECTION:
viawest.com. 172800 IN NS ns1.viawest.net

这次响应的内容知道了要查询的下一个服务器是ns1.viawest.com

$ dig @ns1.viawest.net viawest.com soa
;; ANSWER SECTION:
viawest.com.	3600	IN	SOA	mvec.viawest.net.	hostmaster.

查询返回了viawest.com域的ANSWER响应。我们现在知道了权威名称服务器,可以查询所需要的www.viawest.com了

$ dig @ns1.viawest.net www.viawest.com any
;; ANSWER SECTION:
www.viawest.com.	60	IN CNAME hm-d8ebfa-via1.threatx.io.

最后这次查询显示出www.viawest.com的CNAME记录指向hm-d8ebfa-via1.threatx.io,这意味着它是threatx主机的另一个名称。如果查询的是一台递归式名称的服务器,它会代替你跟随整个授权链。但是在调试时,检查授权链的每个环节通常更优帮助,

2、DNS数据库 zone

区数据库是由系统管理员在该区的主名称服务器上维护的一组文本文件。这些文本文件通常叫作区文件(zone file)。区文件中包含了两种条目:解释器命令(例如,$ORIGIN$TTL)和资源记录。只有资源记录才是数据库真正的组成部分,解析器命令只不过是提供了输入记录的一些便捷手段。

区文件中的解释器指令
用户可以在区文件中嵌入指令,提高其可读性和可维护性。
有3个指令($ORIGININCLUDE$TTL)属于所有DNS实现的标准命令,第4个指令$GENERATE只能用于BIND。指令必须从第一列开始,独占一行。

按照自上到下的处理顺序,只用一遍就完成区文件的读取及解析。在名称服务器读取区文件的同时,它会将默认域(或 起始域)添加到尚未完全限定的名称之后。域名默认的起始域是在名称服务器的配置文件中指定的。但是你可以在区文件中使用$ORIGIN指令设置或更改起始域。
$ORIGIN domain-name
在要求使用全限定名称的地方使用相对名称省去了大量的输入工作,极大地提高了区文件的可读性。

很多站点都在区文件中使用$INCLUDE命令把有开销的记录与数据记录隔开,把区文件分成多个逻辑部分,或是把密钥保存在有受限权限的文件中。其语法为:

$INCLUDE filename [origin]

在碰到$INCLUDE指令时,指定文件会被读取到区数据库中。如果filename没有采用绝对路径,则将其解释为相对于名称服务器的主目录。
注意:执行完$INCLUDE指令之后,起始域的值就无法恢复到之前了。你可能需要在被包含文件的末尾或是$INCLUDE命令的下一行重置起始域。

$TTL指令可以设置跟随其后的资源记录中存活时间TTL字段的默认值。它必须是区文件的第一行。TTL的默认单位是s秒。例如,下面这几行都可以将$TTL设置为1天。

$TTL 86400
$TTL 24h
$TTL 1d

把TTL的值增加到1周,这样会显著降低网络流量和DNS负载。一单资源记录被外界(局域网之外)缓存,是无法强制将其丢弃的。如果你计划进行大规模的重新分配地址,而且之前的ttl为1周,至少在实施计划1周前降低$ttl的值(例如降低到1h),这一准备步骤可以确保ttl为一周资源记录已国企,被替换为ttl为1h的资源记录。于是就能肯定所有的更新会在1h内传播出去。更新完成之后,就可以把ttl改回原先的值。

资源记录
DNS层级中的每个区都有一组与之相对的资源记录,其基本格式为:
[name] [ttl] [class] type data
字段之间以空白字符(制表符或空格)分隔,字段中可以包含下标中出现的特殊字符,资源记录中的特殊字符如图所示。

字符含义
;引入注释
@当前区的名称
()允许数据跨行
*通配符(仅适用于name字段)
  • name(名称)字段标识了资源记录所描述的实体(通常是主机或域)。如果多个连续的资源记录指的都是同一个实体,第一条记录后的name字段可以忽略,只要后续记录都是以空白字符开头即可。如果存在name字段的话,则该字段必须起始于第一列。
    名称既可以采用相对形式,也可以采用绝对形式。绝对名是以点号结尾的完整域名。在内部,软件只处理绝对名,它会将当前起始域和点号添加到任何没有以点号结尾的名称之后。这种特性能够缩短名称长度,但也会引发错误。
    举例来说,如果当前域名是 cs.colorado.edu,那么名称 anchor可以被解释为anchor.cs.colorado.edu。如果漏掉了结尾的点号,把名称错写为anchor.cs.colorado.edu,该名称会被视为相对名,结果就是anchor.cs.colorado.edu.cs.colorado.edu。这是一种常见的错误。
  • class(类别)指定了网络类型,默认类型IN表示Internet
  • type(类型)
    • A (host),即是A记录,也称为主机记录,是DNS名称到IP地址的映射,用于正向解析。
    • CNAME:CNAME记录,也是别名记录,用于定义A记录的别名。
    • MX (mail exchange): 邮件交换器记录,用于告知邮件服务器进程将邮件发送到指定的另一台邮件服务器。(该服务器知道如何将邮件传送到最终目的地)。
    • NS :NS记录,用于标识区域的DNS服务器,即是说负责此DNS区域的权威名称服务器,用哪一台DNS服务器来解析该区域。一个区域有可能有多条ns记录,例如zz.com有可能有一个主服务器和多个辅助服务器。
    • PTR:是IP地址到DNS名称的映射,用于反向解析。
    • SOA:用于一个区域的开始,SOA记录后的所有信息均是用于控制这个区域的,每个区域数据库文件都必须包含一个SOA记录,并且必须是其中的第一个资源记录,用以标识DNS服务器管理的起始位置,SOA说明能解析这个区域的dns服务器中哪个是主服务器
  • data(数据)字段的内容取决于资源记录类型。针对特定域和记录类型的DNS查询会从区文件中返回所有匹配的资源记录。

SOA记录
起始授权(SOA)记录标识了一个区,也就是位于DNS名称空间中相同位置的一组资源记录。每个区都只有一条SOA记录。SOA记录包括区名、该区的主名称服务器、技术联系人以及各种超时值。注释可以通过分号引入。

; Start of authority record for atrust
atrust. 	IN SOA	ns1.atrust.com.	hostmaster.atrust.com. (
	2017110200	; Serial number
	10800		; Refresh (3 hours)  刷新
	1200		; Retry	(20 minutes) 重试
	3600000		; Expire (40+ days)  过期
	3600 )		; Minimum (1 hour)   最小

refresh字段指定了从服务器应隔多久检查一次主服务器,看看区配置文件的序列号是否发生变动。
只要有改动,从服务器就必须更新区数据的父本。从服务器会比较序列号。如果主服务器的序列号更大,则从服务器请求区传输,更新数据。

与其让从服务器被动地等待超时,安装了BIND的主服务器会在每次更新区时主动提醒从服务器。但是更新提醒
可能会因网络拥塞而丢失,所以还是应该讲refresh字段设置为一个合理的值。

expire字段决定了在缺少主服务器的情况下,域数据的权威性还能再服务器中维持多久。

minimum字段可以设置已缓存的否定答复的存活时间。肯定答复(也就是实际的资源记录)默认的存活时间是由区文件顶部的`$TTL`指令设置的。

$TTL、expire、minimum最终会强制DNS客户端丢弃旧数据。

SOA记录的name字段(在本例中是atrust.com)经常会出现符号@,这是当前区名的简写。@的值就是文件name.conf中的zone语句所指定的域名。 这个值可以在区文件中利用$ORIGIN解析器指令更改。(@符号所代表的意思可以由$ORIGIN关键字来指定)

其中上面这个例子并没有出现ttl字段,class字段的IN表示Internet,type字段是SOA,剩下的都是data字段的内容。括号中的数值参数都是超时值,不加注释的话,通常写在一行中。
ns1.atrust.com.是该区的主名称服务器。
hostmaster.atrust.com.是作为基数联系人的电子邮件地址。
括号可以使SOA记录跨多行。第1个数值参数是区配置数据的序列号。从服务器使用这个序列号决定什么时候获取新数据。序列号可以是任意的32位证书,每当区数据文件有变化时就要增加改值。很多站点会把区文件的修改日期编入序列号中。举例来说,2017110200就表示区数据在2017年11月2日的第一次更改。

序列号不要求连续,但必须单调递增。只有主服务器的序列号大于从服务器的序列号时,后者才会请求新数据。如果你不小心在主服务器上设置了一个相当大的值,并且这个值已经被传到了从服务器,那么即便是更正住服务器上的序列号也于事无补。解决这种问题的办法有两种。

常见的错误就是修改了区数据文件,但是忘了更新序列号。这样导致的结果就是无法将变更传播到从服务器。

——————————————

NS记录
NS(名称服务器)标识出了某个区的权威服务器(也就是所有的主服务器和从服务器)并将子域授权给其他组织。NS记录通常直接放置在区的SOA记录之后。
等等这些记录。具体 后面通过BIND配置文件查看

DNS结构
在这里插入图片描述
根域: .
一级域名<顶级域 | 国家域> .com .edu .gov .net .cn
二级域名:qq.com baidu.com
如果询问一次得到结果 递归查询 C-S
如果询问多次得到结果 迭代查询 S-S
在这里插入图片描述

3、BIND软件

DNS的域名解析 是 udp/53,主从之间的数据传输默认使用tcp/53
DNS软件: Bind是一款开放源码的DNS服务器软件,支持各种Unix和Windows平台

BIND包含4个主要的组成部分:

  • 名为named的名称服务器守护进程,负责回答查询;
  • 解析器库,代表用户查询DNS服务器;
  • DNS的命令行接口,即nslookup、dig、host;
  • 称为rndc的named远程控制程序

named.conf中用到的语句

以上是关于Linux系统管理连网的主要内容,如果未能解决你的问题,请参考以下文章

VMWare虚拟机:三台虚拟机互通且连网

在VMware14 虚拟机中安装Linux CentOS 7系统并进行设置使之能连网(内附安装包)

初装Linux后的连网操作

Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段

使用NAT方式连网的linux服务器虚拟机搭建

《java精品毕设》基于javaweb宠物领养平台管理系统(源码+毕设论文+sql):主要实现:个人中心,信息修改,填写领养信息,交流论坛,新闻,寄养信息,公告,宠物领养信息,我的寄养信息等(代码片段

(c)2006-2024 SYSTEM All Rights Reserved IT常识

语句功能
include引入文件
options设置全局配置选项/默认值
acl定义访问控制列表
key定义认证信息
server指定单个服务器选项