# Linux 网络管理 **Repository Path**: laosuaidami/linux-network ## Basic Information - **Project Name**: Linux 网络管理 - **Description**: Linux 网络管理学习笔记 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-08-28 - **Last Updated**: 2024-09-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Linux网络管理 # 1. 网络基础 ## 1.1 ISO/OSI七层模型 ![Untitled](pictures/Untitled.png) ![Untitled](pictures/Untitled%201.png) **MAC地址负责局域网通信** **IP地址负责外网通信** - 应用层(SPDU 会话协议数据单元) 表示层(PPDU 表示层协议数据单元) 会话层 (APDU 应用协议数据单元)上三层是为用户提供服务 - 传输层 网络层 数据链路层 物理层 下四层是实际传输单元,是为数据传递提供服务 - 数量链路层(帧)写入 MAC 地址 - 网络层(报文)写入 IP 地址 - 传输层(传输协议数据单元 TPDU 【Transport Protocol Data Unit】) ![Untitled](pictures/Untitled%202.png) ## 1.2 TCP/IP 四层模型 ![Untitled](pictures/Untitled%203.png) ### 1.2.1 网络接口层 ![Untitled](pictures/Untitled%204.png) ```bash # 通过 arp 命令解析 IP -> MAC [root@www ~]# arp -a gateway (192.168.10.1) at 38:ad:8e:80:4d:37 [ether] on ens160 ? (172.19.0.12) at 02:42:ac:13:00:0c [ether] on br-b6f9198ee54e ? (172.19.0.24) at 02:42:ac:13:00:18 [ether] on br-b6f9198ee54e ? (172.19.0.13) at 02:42:ac:13:00:0d [ether] on br-b6f9198ee54e ? (172.19.0.3) at 02:42:ac:13:00:03 [ether] on br-b6f9198ee54e ? (192.168.10.13) at 00:50:56:9a:0f:df [ether] on ens160 ? (172.19.0.20) at 02:42:ac:13:00:14 [ether] on br-b6f9198ee54e ? (172.19.0.5) at 02:42:ac:13:00:05 [ether] on br-b6f9198ee54e ? (172.19.0.17) at 02:42:ac:13:00:11 [ether] on br-b6f9198ee54e ``` ### 1.2.2 网际互联层 ![Untitled](pictures/Untitled%205.png) ### 1.2.3 传输层 ![Untitled](pictures/Untitled%206.png) **三次握手** ![Untitled](pictures/Untitled%207.png) ### 1.2.4 应用层 ![Untitled](pictures/Untitled%208.png) ### 1.2.5 数据封装过程 ![Untitled](pictures/Untitled%209.png) ### 1.2.6 TCP/IP 模型与OSI模型的比较 ![Untitled](pictures/Untitled%2010.png) ## 1.3 IP 地址 ### 1.3.1 IP 包头 ![Untitled](pictures/Untitled%2011.png) ### 1.3.2 IP 地址分类 ![Untitled](pictures/Untitled%2012.png) ### 1.2.3 子网掩码的使用 IP 和 子网掩码 不能单独使用,必须联合使用 - A类IP ![Untitled](pictures/Untitled%2013.png) - B类IP ![Untitled](pictures/Untitled%2014.png) - C类IP ![Untitled](pictures/Untitled%2015.png) 1. 标准的子网掩码 **A类:255.0.0.0 B类:255.255.0.0 C类:255.255.255.0** 2. 非标准子网掩码 只要’1‘连续就可以,如: 11111111.11110000.00000000.00000000 3. 变长子网掩码即子网规划 IP地址:172.16.2.121 子网掩码:255.255.255.0 网络地址 = IP地址 & 子网掩码 广播地址 = 网络地址[0:3] + !子网掩码[4] ![Untitled](pictures/Untitled%2016.png) ## 1.4 端口作用 - 端口号是什么? - 端口号有多少种分类? - 常见的端口号有哪些? ### 1.4.1 TCP协议包头 ![Untitled](pictures/Untitled%2017.png) ### 1.4.2 UDP协议包头 ![Untitled](pictures/Untitled%2018.png) ### 1.4.3 常见端口号 ![Untitled](pictures/Untitled%2019.png) ### 1.4.4 查看本机启用端口命令 netstat ```bash netstat -an 选项: -a: 查看所有连接和监听端口 -n: 显示IP地址和端口号,而不显示域名和服务名 # netstat -tunlp 用于显示 tcp,udp 的端口和进程等相关情况。 # netstat 查看端口占用语法格式: netstat -tunlp | grep 端口号 netstat -ntlp # 查看当前所有tcp端口 netstat -ntulp | grep 80 # 查看所有80端口使用情况 netstat -ntulp | grep 3306 # 查看所有3306端口使用情况 ``` ## 1.5 DNS作用 DNS(Domain Name System) 域名系统 → 名称解析 - 在互联网中,通过IP地址进行通信, IP地址使用数字表示、不便于记忆, 人对域名更加敏感 - hosts 文件: - 是做静态IP和域名对应 - hosts 文件的优先级高于DNS解析 Windows:C:\Windows\System32\drivers\etc\hosts Linux: /etc/hosts ### 1.5.1 从hosts文件到DNS - 早期Hosts文件解析域名 - 名称解析效能下降 - 主机维护困难 - DNS服务 - 层次性 - 分布性 ### 1.5.2 DNS服务的作用 - 将域名解析为IP地址 - 客户机向DNS服务发送域名查询请求 - DNS服务器告诉客户端域名的IP地址 - 客户机使用IP与web服务器通信 ![Untitled](pictures/Untitled%2020.png) ### 1.5.3 域名空间结构【完全合格域名】 ![Untitled](pictures/Untitled%2021.png) **三级域 + 二级域 + 顶级域 组成完整的域名空间 【全球唯一】** ### 1.5.4 DNS 查询过程 ![Untitled](pictures/Untitled%2022.png) ![Untitled](pictures/Untitled%2023.png) ## 1.6 网关作用 - 网关(GateWay)又称网间连接器、协议转换器 - 网关在网络层以上实现网络互联,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连 - 网关既可以用于广域网互连,也可以用于局域网互连 - 网关是一种充当转换重任的服务器或路由器 ### 1.6.1 网关示意图 ![Untitled](pictures/Untitled%2024.png) ### 1.6.2 网关的作用 1. 网关在所有内网计算机访问的不是本网段的数据报时使用 2. 网关负责将内网IP转换为公网IP, 公网IP转换为内网IP ![Untitled](pictures/Untitled%2025.png) ![Untitled](pictures/Untitled%2026.png) # 2. Linux网络配置 ```bash # Linux 虚拟网卡 [root@www net]# ls /sys/devices/virtual/net/ br-b6f9198ee54e lo veth1f918c0 veth3289ce6 veth48e1fdb veth553dce1 veth8ea3270 veth9dbf736 vethbb18c92 vethc7c422a vethfb50100 br-dbebd273b9c9 veth0c96a9f veth2545fb5 veth3a0e912 veth4eafa34 veth738707f veth8f23e29 veth9f78299 vethc393332 vethccb9d88 vethff2e9cc docker0 veth19b74d2 veth31c72a9 veth3edaccd veth501045f veth7718b7e veth9c27531 vetha168414 vethc5eb2e5 vethf2802ec ``` ```bash # Linux 所有网卡 [root@www net]# ls /sys/class/net/ br-b6f9198ee54e ens160 veth0c96a9f veth2545fb5 veth3a0e912 veth4eafa34 veth738707f veth8f23e29 veth9f78299 vethc393332 vethccb9d88 vethff2e9cc br-dbebd273b9c9 ens192 veth19b74d2 veth31c72a9 veth3edaccd veth501045f veth7718b7e veth9c27531 vetha168414 vethc5eb2e5 vethf2802ec docker0 lo veth1f918c0 veth3289ce6 veth48e1fdb veth553dce1 veth8ea3270 veth9dbf736 vethbb18c92 vethc7c422a vethfb50100 ``` ## 2.1 ifconfig 命令临时配置IP地址 - 局域网搭建DHCP服务器,就可以自动获取IP地址 ```bash ifconfig eth0 192.168.10.78 netmask 255.255.255.0 ``` ## 2.2 setup工具永久配置IP地址 - redhat 系列Linux系统支持setup工具 - 完成后重启网络: service network restart ## 2.3 修改网络配置文件 ### 2.3.1 网卡信息文件 ![Untitled](pictures/Untitled%2027.png) vi /etc/sysconfig/network-scripts/ifcfg-ens160 ```bash vi /etc/sysconfig/network-scripts/ifcfg-ens160 DEVICE=ens160 NAME=ens160 BOOTPROTO=static HWADDR=00:50:56:9a:59:ab NM_CONNTROLLED=yes ONBOOT=yes TYPE=Ethernet UUID="86f3bf38-054a-11ec-bfe3-acde48001122" IPADDR=192.168.10.78 NETMASK=255.255.255.0 GATEWAY=192.168.10.1 DNS1=114.114.114.114 IPV6INIT=no USERCTL=no ``` ### 2.3.2 主机名文件 ![Untitled](pictures/Untitled%2028.png) ```bash # 临时修改主机名 hostname guohewei # 永久修改,不需要重启 sudo hostnamectl set-hostname guohewei ``` ### 2.3.3 DNS 配置文件 ```bash [root@www network-scripts]# cat /etc/resolv.conf # Generated by NetworkManager search com # 如果没有写全域名,就会加上 该字段,组合成完整域名 nameserver 114.114.114.114 # 名称服务器 ``` ## 2.4 图形界面配置IP地址 ## 2.5 虚拟机网络参数配置 - 如何修改网卡的UUID ```bash # 1. vi /etc/sysconfig/network-scripts/ifcfg-ens160 # 删除MAC地址行 # 2. rm -rf /etc/udv/rules.d/70-persistent-net.rules # 删除网卡和MAC地址绑定文件 # 3. 重启系统 ``` - 桥接 NAT Host-only 的区别 **桥接** - 可以和局域网和公网通信 - 虚拟机和宿主机通信使用宿主机的真实网卡 **NAT** - 可以和公网通信,不能和局域网通信 - 虚拟机和宿主机通信,使用VMnet8 **Host-only** - 只能好宿主机通信,不能和局域网、公网通信 - 虚拟机和宿主机通信,使用VMnet1 ![Untitled](pictures/Untitled%2029.png) ![Untitled](pictures/Untitled%2030.png) # 3. Linux网络命令 ## 3.1 网络环境的查看命令 ### 3.1.1 ifconfig 命令 - 查看与配置网络状态命令 ### 3.1.2 关闭与启动网卡命令 ifdown ifup - 禁用网卡:ifdown <网卡设备名> - 启用网卡:ifup <网卡设备名> ### 3.1.3 查询网络状态 netstat 命令 ![Untitled](pictures/Untitled%2031.png) ```bash # netstat -tunlp 用于显示 tcp,udp 的端口和进程等相关情况。 # netstat 查看端口占用语法格式: netstat -tulnp | grep 端口号 netstat -ntlp # 查看当前所有tcp端口 netstat -tulnp | grep 80 # 查看所有80端口使用情况 netstat -tulnp | grep 3306 # 查看所有3306端口使用情况 netstat -an 查看所有连接 Windows 支持 netstat -an ``` ```bash [root@wnn ~]# netstat -an | grep ESTABLISHED tcp 0 36 192.168.10.46:22 172.16.10.1:55522 ESTABLISHED tcp 0 0 192.168.10.46:22 172.16.10.1:54563 ESTABLISHED tcp 0 0 192.168.10.46:22 172.16.10.1:53153 ESTABLISHED tcp6 0 0 192.168.10.46:9100 192.168.10.13:36466 ESTABLISHED [root@wnn ~]# [root@wnn ~]# netstat -an | grep ESTABLISHED | wc -l # 打印行数 4 ``` ### 3.1.4 查看路由和网关信息 [netstat -rn] [route -n] - netstat -rn 选项: -r: 列出路由列表,功能和route命令一致 - route -n 命令 查看路由列表(可以看到网关) - route add default gw 192.168.1.1 设定临时网关 - 在一台服务器里,连内网的网卡是不能设置网关的 - 删除临时网关:route del default gw 192.168.1.1 ```bash [root@wnn ~]# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 192.168.10.1 0.0.0.0 UG 0 0 0 ens160 0.0.0.0 192.168.10.1 0.0.0.0 UG 0 0 0 ens192 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0 172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-dbebd273b9c9 172.19.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-b6f9198ee54e 192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 ens160 192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 ens192 [root@wnn ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.10.1 0.0.0.0 UG 100 0 0 ens160 0.0.0.0 192.168.10.1 0.0.0.0 UG 101 0 0 ens192 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0 172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-dbebd273b9c9 172.19.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-b6f9198ee54e 192.168.10.0 0.0.0.0 255.255.255.0 U 100 0 0 ens160 192.168.10.0 0.0.0.0 255.255.255.0 U 101 0 0 ens192 ``` ```bash route add default gw 192.168.10.10 # 添加临时网关 route del default gw 192.168.10.10 # 删除临时网关 ``` ![Untitled](pictures/Untitled%2032.png) ### 3.1.5 域名解析命令 nslookup - 安装:yum install -y bind-utils - nslookup: 进行域名与IP地址解析(用来翻译域名对应那个IP) ```bash [root@wnn ~]# nslookup > server Default server: 114.114.114.114 Address: 114.114.114.114#53 ``` ```bash [root@wnn ~]# nslookup www.baidu.com Server: 114.114.114.114 Address: 114.114.114.114#53 Non-authoritative answer: www.baidu.com canonical name = www.a.shifen.com. Name: www.a.shifen.com Address: 110.242.68.3 Name: www.a.shifen.com Address: 110.242.68.4 ``` ## 3.2 网络测试命令 ### 3.2.1 ping 命令 - ping [选项] ip或域名 【探测指定IP或域名的网络状况】 选项: -c 次数:指定ping包的次数 ### 3.2.2 telnet 命令 - 远程管理(明文传输,已使用ssh代替了)与**端口探测**命令 - windows 也支持 - telnet [域名或IP] [端口] 如:telnet 192.168.0.252 80 ### 3.2.3 traceroute 命令 - 路由跟踪命令 - 安装:yum install -y traceroute - traceroute [选项] IP或域名 选项: -n:使用IP, 不使用域名,速度更快 ```bash [root@wnn ~]# traceroute www.imooc.com traceroute to www.imooc.com (115.182.41.163), 30 hops max, 60 byte packets 1 gateway (192.168.10.1) 0.352 ms 0.218 ms 0.175 ms 2 61.49.138.25 (61.49.138.25) 7.208 ms 7.303 ms 7.364 ms 3 * * * 4 61.49.182.53 (61.49.182.53) 1.546 ms 219.232.11.181 (219.232.11.181) 2.272 ms 61.49.182.41 (61.49.182.41) 1.409 ms 5 61.149.203.254 (61.149.203.254) 1.642 ms 61.149.203.190 (61.149.203.190) 1.498 ms 1.527 ms 6 220.206.192.134 (220.206.192.134) 2.020 ms 1.783 ms 1.981 ms 7 * * * 8 * * * 9 218.241.152.202 (218.241.152.202) 3.086 ms 2.892 ms 2.936 ms 10 * * * 11 * * * ``` ### 3.2.4 wget 命令 - 下载文件 : wget 文件地址 ### 3.2.5 tcpdump 命令 - 安装:yum install -y tcpdump ![Untitled](pictures/Untitled%2033.png) ```bash tcpdump -i eth0 -nnX port 21 ``` # 4. 远程登录 ## 4.1 SSH协议原理 ### 4.1.1 对称加密算法 ![Untitled](pictures/Untitled%2034.png) ### 4.1.2 非对称加密算法 ![Untitled](pictures/Untitled%2035.png) ![Untitled](pictures/Untitled%2036.png) ### 4.1.3 SSH 安全外壳协议 ![Untitled](pictures/Untitled%2037.png) ### 4.1.4 SSH 命令 - ssh 用户名@ip 远程管理指定Linux服务器 ```bash ssh root@192.168.10.48 -p 22 ``` - scp [-r] 用户名@ip:文件路径 本地路径 下载文件 ```bash scp -P 22 ~/prophetech/host.py root@192.168.10.48:/tmp ``` - scp [-r] 本地文件 用户名@ip:上传文件路径 上传文件 ```bash scp -P 22 root@192.168.10.48:/tmp/host.py ~/prophetech/host.py ``` ## 4.2 SecureCRT远程管理工具 ## 4.3 Xshell 工具和WinScp文件传输工具