1380 lines
589 KiB
HTML
1380 lines
589 KiB
HTML
|
<!DOCTYPE html>
|
|||
|
<html><head><title>Linux 网络管理</title><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta property="og:title" content="Linux 网络管理"/><meta property="og:description" content="Linux 网络配置管理."/><meta property="og:image" content="https://wiki.7wate.com/static/og-image.png"/><meta property="og:width" content="1200"/><meta property="og:height" content="675"/><link rel="icon" href="../../../../static/icon.png"/><meta name="description" content="Linux 网络配置管理."/><meta name="generator" content="Quartz"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com"/><script async src="https://umami.7wate.com/script.js" data-website-id="c061efdc-95dd-4d21-9d04-a1ffda0a85b9"></script><script>
|
|||
|
var _hmt = _hmt || [];
|
|||
|
(function() {
|
|||
|
var hm = document.createElement("script");
|
|||
|
hm.src = "https://hm.baidu.com/hm.js?94d8ccb156eb7c65abf317e6e01cdba9";
|
|||
|
var s = document.getElementsByTagName("script")[0];
|
|||
|
s.parentNode.insertBefore(hm, s);
|
|||
|
})();
|
|||
|
</script><script async src="https://www.googletagmanager.com/gtag/js?id=G-MHMEL0F832"></script><script>
|
|||
|
(function() {
|
|||
|
window.dataLayer = window.dataLayer || [];
|
|||
|
function gtag() {
|
|||
|
window.dataLayer.push(arguments);
|
|||
|
}
|
|||
|
gtag('js', new Date());
|
|||
|
gtag('config', 'G-MHMEL0F832');
|
|||
|
})();
|
|||
|
</script><link href="../../../../index.css" rel="stylesheet" type="text/css" spa-preserve/><link href="https://cdn.jsdelivr.net/npm/katex@0.16.0/dist/katex.min.css" rel="stylesheet" type="text/css" spa-preserve/><link href="https://fonts.googleapis.com/css2?family=IBM Plex Mono&family=Schibsted Grotesk:wght@400;700&family=Source Sans Pro:ital,wght@0,400;0,600;1,400;1,600&display=swap" rel="stylesheet" type="text/css" spa-preserve/><script src="../../../../prescript.js" type="application/javascript" spa-preserve></script><script type="application/javascript" spa-preserve>const fetchData = fetch(`../../../../static/contentIndex.json`).then(data => data.json())</script></head><body data-slug="Technology/OperatingSystem/Linux/6.网络管理/Linux-网络管理"><div id="quartz-root" class="page"><div id="quartz-body"><div class="left sidebar"><h1 class="page-title "><a href="../../../..">📚 X·Eden</a></h1><div class="spacer mobile-only"></div><div class="search "><div id="search-icon"><p>Search</p><div></div><svg tabIndex="0" aria-labelledby="title desc" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19.9 19.7"><title id="title">Search</title><desc id="desc">Search</desc><g class="search-path" fill="none"><path stroke-linecap="square" d="M18.5 18.3l-5.4-5.4"></path><circle cx="8" cy="8" r="7"></circle></g></svg></div><div id="search-container"><div id="search-space"><input autocomplete="off" id="search-bar" name="search" type="text" aria-label="Search for something" placeholder="Search for something"/><div id="results-container"></div></div></div></div><div class="darkmode "><input class="toggle" id="darkmode-toggle" type="checkbox" tabIndex="-1"/><label id="toggle-label-light" for="darkmode-toggle" tabIndex="-1"><svg xmlns="http://www.w3.org/2000/svg" xmlnsXlink="http://www.w3.org/1999/xlink" version="1.1" id="dayIcon" x="0px" y="0px" viewBox="0 0 35 35" style="enable-background:new 0 0 35 35;" xmlSpace="preserve"><title>Light mode</title><path d="M6,17.5C6,16.672,5.328,16,4.5,16h-3C0.672,16,0,16.672,0,17.5 S0.672,19,1.5,19h3C5.328,19,6,18.328,6,17.5z M7.5,26c-0.414,0-0.789,0.168-1.061,0.439l-2,2C4.168,28.711,4,29.086,4,29.5 C4,30.328,4.671,31,5.5,31c0.414,0,0.789-0.168,1.06-0.44l2-2C8.832,28.289,9,27.914,9,27.5C9,26.672,8.329,26,7.5,26z M17.5,6 C18.329,6,19,5.328,19,4.5v-3C19,0.672,18.329,0,17.5,0S16,0.672,16,1.5v3C16,5.328,16.671,6,17.5,6z M27.5,9 c0.414,0,0.789-0.168,1.06-0.439l2-2C30.832,6.289,31,5.914,31,5.5C31,4.672,30.329,4,29.5,4c-0.414,0-0.789,0.168-1.061,0.44 l-2,2C26.168,6.711,26,7.086,26,7.5C26,8.328,26.671,9,27.5,9z M6.439,8.561C6.711,8.832,7.086,9,7.5,9C8.328,9,9,8.328,9,7.5 c0-0.414-0.168-0.789-0.439-1.061l-2-2C6.289,4.168,5.914,4,5.5,4C4.672,4,4,4.672,4,5.5c0,0.414,0.168,0.789,0.439,1.06 L6.439,8.561z M33.5,16h-3c-0.828,0-1.5,0.672-1.5,1.5s0.672,1.5,1.5,1.5h3c0.828,0,1.5-0.672,1.5-1.5S34.328,16,33.5,16z M28.561,26.439C28.289,26.168,27.914,26,27.5,26c-0.828,0-1.5,0.672-1.5,1.5c0,0.414,0.168,0.789,0.439,1.06l2,2 C28.711,30.832,29.086,31,29.5,31c0.828,0,1.5-0.672,1.5-1.5c0-0.414-0.168-0.789-0.439-1.061L28.561,26.439z M17.5,29 c-0.829,0-1.5,0.672-1.5,1.5v3c0,0.828,0.671,1.5,1.5,1.5s1.5-0.672,1.5-1.5v-3C19,29.672,18.329,29,17.5,29z M17.5,7 C11.71,7,7,11.71,7,17.5S11.71,28,17.5,28S28,23.29,28,17.5S23.29,7,17.5,7z M17.5,25c-4.136,0-7.5-3.364-7.5-7.5 c0-4.136,3.364-7.5,7.5-7.5c4.136,0,7.5,3.364,7.5,7.5C25,21.636,21.636,25,17.5,25z"></path></svg></label><label id="toggle-label-dark" for="darkmode-toggle" tabIndex="-1"><svg xmlns="http://www.w3.org/2000/svg" xmlnsXlink="http://www.w3.org/1999/xlink" version="1.1" id="nightIcon" x="0px" y="0px" viewBox="0 0 100 100" style="enable-background='new 0 0 100 100'" xmlSpace="preserve"><title>Dark mode</title><path d="M96.76,66.458c-0.853-0.852-2.15-1.064-3.23-0.534c-6.063,2.991-12.858,4.571-19.655,4.571 C62.022,70.495,50.88,65.88,42.5,57.5C29.043,44.043,25.658,23.536,34.076,6.47c0.532-1.08,0.318-2.379-0.534-3.23 c-0.851-0.852-2.15-1.064-3.23-0.534c-4.918,2.427-9.375,5.619-13.246,9.491c-9.447,9.447-14.6
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<table><thead><tr><th>发行版</th><th>常用网络管理工具</th><th>网络配置文件路径</th></tr></thead><tbody><tr><td>Ubuntu</td><td>NetworkManager, systemd-networkd</td><td>/etc/netplan/</td></tr><tr><td>Debian</td><td>NetworkManager, systemd-networkd, ifupdown</td><td>/etc/network/interfaces</td></tr><tr><td>CentOS/RHEL</td><td>NetworkManager, systemd-networkd, ifcfg</td><td>/etc/sysconfig/network-scripts/ifcfg-*</td></tr><tr><td>Fedora</td><td>NetworkManager, systemd-networkd, ifcfg</td><td>/etc/sysconfig/network-scripts/ifcfg-*</td></tr><tr><td>Arch Linux</td><td>netctl</td><td>/etc/netctl/</td></tr><tr><td>openSUSE</td><td>NetworkManager, ifup</td><td>/etc/sysconfig/network/ifcfg-*</td></tr></tbody></table>
|
|||
|
<h3 id="网络概念">网络概念<a aria-hidden="true" tabindex="-1" href="#网络概念" class="internal"> §</a></h3>
|
|||
|
<ul>
|
|||
|
<li>**动态主机配置协议(DHCP):**DHCP 用于自动分配 IP 地址、子网掩码、默认网关等网络参数。</li>
|
|||
|
<li>**静态地址(Static IP):**静态 IP 是预先分配给设备的固定 IP 地址。</li>
|
|||
|
<li><strong>地址(IP)</strong>:网络设备的唯一标识符,用于在网络中进行通信。IPv4 地址格式为 <code>xxx.xxx.xxx.xxx</code>,例如 <code>192.168.1.10</code>。</li>
|
|||
|
<li><strong>子网掩码(NetMask)</strong>:用于划分 IP 地址的网络和主机部分。常见的子网掩码有 <code>255.255.255.0</code>,表示一个 C 类子网。</li>
|
|||
|
<li><strong>网关(Gateway)</strong>:连接不同网络的设备,通常是路由器。默认网关用于转发网络请求到其他网络段。</li>
|
|||
|
<li><strong>域名系统(DNS)</strong>:将域名解析为 IP 地址的服务。常见的 DNS 服务器有 Google 的 <code>8.8.8.8</code> 和 <code>8.8.4.4</code>。</li>
|
|||
|
</ul>
|
|||
|
<h3 id="ip">Ip<a aria-hidden="true" tabindex="-1" href="#ip" class="internal"> §</a></h3>
|
|||
|
<p><code>ip</code> 命令是 Linux 系统中用于管理网络设备、地址、路由等网络设置的一个强大工具。它是 iproute2 软件包的一部分,由 Alexey N. Kuznetsov 开发,首次发布于 1999 年。<strong><code>ip</code> 命令的设计目的是替代原有的 <code>ifconfig</code>、<code>route</code> 等传统网络配置工具,提供更灵活、功能强大的解决方案。</strong></p>
|
|||
|
<p>**<code>ip</code> 命令通过 Netlink 套接字与 Linux 内核通信,实现对网络设备、地址、路由等资源的管理。**Netlink 是一种用于在内核和用户空间之间传递信息的通信机制。通过 Netlink,<code>ip</code> 命令能够执行各种复杂的网络配置任务。</p>
|
|||
|
<p><em><strong>ip 命令的配置是临时的,仅在当前会话中有效。重启系统或网络服务后,这些配置将会丢失。</strong></em></p>
|
|||
|
<h4 id="生命周期">生命周期<a aria-hidden="true" tabindex="-1" href="#生命周期" class="internal"> §</a></h4>
|
|||
|
<pre><code class="mermaid">flowchart LR
|
|||
|
A[1. 开始] --> B[2. 显示网络接口信息]
|
|||
|
B --> C[ip addr show]
|
|||
|
B --> D[ip link show]
|
|||
|
B --> E[ip route show]
|
|||
|
|
|||
|
A --> F[3. 添加 IP 地址]
|
|||
|
F --> G[ip addr add <IP>/<PREFIX> dev <DEVICE>]
|
|||
|
|
|||
|
A --> H[4. 删除 IP 地址]
|
|||
|
H --> I[ip addr del <IP>/<PREFIX> dev <DEVICE>]
|
|||
|
|
|||
|
A --> J[5. 修改网络接口状态]
|
|||
|
J --> K[5.1 启用接口]
|
|||
|
K --> L[ip link set dev <DEVICE> up]
|
|||
|
J --> M[5.2 禁用接口]
|
|||
|
M --> N[ip link set dev <DEVICE> down]
|
|||
|
|
|||
|
A --> O[6. 添加路由]
|
|||
|
O --> P[ip route add <ROUTE> via <GATEWAY>]
|
|||
|
|
|||
|
A --> Q[7. 删除路由]
|
|||
|
Q --> R[ip route del <ROUTE>]
|
|||
|
|
|||
|
A --> S[8. 管理邻居条目]
|
|||
|
S --> T[8.1 显示邻居表]
|
|||
|
T --> U[ip neigh show]
|
|||
|
S --> V[8.2 添加邻居条目]
|
|||
|
V --> W[ip neigh add <IP> lladdr <MAC> dev <DEVICE>]
|
|||
|
S --> X[8.3 删除邻居条目]
|
|||
|
X --> Y[ip neigh del <IP> dev <DEVICE>]
|
|||
|
|
|||
|
A --> Z[9. 刷新 IP 地址]
|
|||
|
Z --> AA[ip addr flush dev <DEVICE>]
|
|||
|
|
|||
|
A --> AB[10. 监控网络事件]
|
|||
|
AB --> AC[ip monitor all]
|
|||
|
|
|||
|
A --> AD[11. 显示网络设备统计信息]
|
|||
|
AD --> AE[ip -s link]
|
|||
|
|
|||
|
A --> AF[12. 查看或设置 MTU 值]
|
|||
|
AF --> AG[12.1 查看 MTU]
|
|||
|
AG --> AH[ip link show dev <DEVICE>]
|
|||
|
AF --> AI[12.2 设置 MTU]
|
|||
|
AI --> AJ[ip link set dev <DEVICE> mtu <MTU>]
|
|||
|
|
|||
|
A --> AK[13. 显示和修改路由规则]
|
|||
|
AK --> AL[13.1 显示路由规则]
|
|||
|
AL --> AM[ip rule show]
|
|||
|
AK --> AN[13.2 添加路由规则]
|
|||
|
AN --> AO[ip rule add from <SOURCE> table <TABLE>]
|
|||
|
AK --> AP[13.3 删除路由规则]
|
|||
|
AP --> AQ[ip rule del from <SOURCE> table <TABLE>]
|
|||
|
|
|||
|
A --> AR[14. 创建和管理虚拟接口]
|
|||
|
AR --> AS[14.1 创建虚拟接口]
|
|||
|
AS --> AT[ip link add link <PARENT> name <NAME> type vlan id <ID>]
|
|||
|
AR --> AU[14.2 删除虚拟接口]
|
|||
|
AU --> AV[ip link del <NAME>]
|
|||
|
</code></pre>
|
|||
|
<h4 id="常用命令">常用命令<a aria-hidden="true" tabindex="-1" href="#常用命令" class="internal"> §</a></h4>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<table><thead><tr><th>命令</th><th>说明</th></tr></thead><tbody><tr><td><code>ip addr show</code></td><td>显示网络接口的地址信息</td></tr><tr><td><code>ip addr add</code></td><td>为网络接口添加 IP 地址</td></tr><tr><td><code>ip addr del</code></td><td>删除网络接口的 IP 地址</td></tr><tr><td><code>ip link show</code></td><td>显示网络接口状态</td></tr><tr><td><code>ip link set</code></td><td>修改网络接口属性</td></tr><tr><td><code>ip route show</code></td><td>显示路由表</td></tr><tr><td><code>ip route add</code></td><td>添加路由</td></tr><tr><td><code>ip route del</code></td><td>删除路由</td></tr><tr><td><code>ip neigh show</code></td><td>显示邻居表(ARP 缓存)</td></tr><tr><td><code>ip neigh add</code></td><td>添加邻居条目</td></tr><tr><td><code>ip neigh del</code></td><td>删除邻居条目</td></tr></tbody></table>
|
|||
|
<h4 id="常用选项">常用选项<a aria-hidden="true" tabindex="-1" href="#常用选项" class="internal"> §</a></h4>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<table><thead><tr><th>选项</th><th>说明</th></tr></thead><tbody><tr><td><code>show</code></td><td>显示指定类型的网络对象(如地址、链接、路由等)</td></tr><tr><td><code>add</code></td><td>添加指定类型的网络对象</td></tr><tr><td><code>del</code></td><td>删除指定类型的网络对象</td></tr><tr><td><code>set</code></td><td>修改指定类型的网络对象的属性</td></tr><tr><td><code>list</code></td><td>列出指定类型的网络对象</td></tr><tr><td><code>flush</code></td><td>清除指定类型的网络对象</td></tr><tr><td><code>monitor</code></td><td>监控网络事件</td></tr><tr><td><code>-4</code></td><td>仅处理 IPv4 地址和路由</td></tr><tr><td><code>-6</code></td><td>仅处理 IPv6 地址和路由</td></tr><tr><td><code>-s</code></td><td>输出简化版信息</td></tr><tr><td><code>-brief</code></td><td>以简洁的格式输出信息</td></tr><tr><td><code>-json</code></td><td>以 JSON 格式输出信息</td></tr><tr><td><code>-details</code></td><td>输出详细信息</td></tr><tr><td><code>-family</code></td><td>指定地址族(如 inet、inet6、link 等)</td></tr><tr><td><code>-dynamic</code></td><td>设置动态属性(如动态路由等)</td></tr><tr><td><code>-permanent</code></td><td>设置永久属性(如永久地址等)</td></tr></tbody></table>
|
|||
|
<h4 id="操作示例">操作示例<a aria-hidden="true" tabindex="-1" href="#操作示例" class="internal"> §</a></h4>
|
|||
|
<ol>
|
|||
|
<li>
|
|||
|
<p>查看当前网络接口信息</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-function);">$</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ip</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">route</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">show</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">192.168.101.0/24</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">dev</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ens32</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">proto</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">kernel</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">scope</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">link</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">src</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">192.168</span><span style="color:var(--shiki-token-string);">.101.177</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">$</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ip</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">link</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">show</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">1:</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">lo:</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-keyword);"><</span><span style="color:var(--shiki-token-string);">LOOPBACK,UP,LOWER_U</span><span style="color:var(--shiki-color-text);">P</span><span style="color:var(--shiki-token-keyword);">></span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">mtu</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">65536</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">qdisc</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">noqueue</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">state</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">UNKNOWN</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">mode</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">DEFAULT</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">group</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">default</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">qlen</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">1000</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">link/loopback</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">00</span><span style="color:var(--shiki-token-string);">:00:00:00:00:00</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">brd</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">00</span><span style="color:var(--shiki-token-string);">:00:00:00:00:00</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">2:</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ens32:</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-keyword);"><</span><span style="color:var(--shiki-token-string);">BROADCAST,MULTICAST,UP,LOWER_U</span><span style="color:var(--shiki-color-text);">P</span><span style="color:var(--shiki-token-keyword);">></span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">mtu</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">1500</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">qdisc</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">pfifo_fast</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">state</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">UP</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">mode</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">DEFAULT</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">group</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">default</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">qlen</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">1000</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">link/ether</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">00</span><span style="color:var(--shiki-token-string);">:0c:29:99:2f:75</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">brd</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ff:ff:ff:ff:ff:ff</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">altname</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">enp2s0</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">$</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ip</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">addr</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">show</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">1:</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">lo:</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-keyword);"><</span><span style="color:var(--shiki-token-string);">LOOPBACK,UP,LOWER_U</span><span style="color:var(--shiki-color-text);">P</span><span style="color:var(--shiki-token-keyword);">></span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">mtu</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">65536</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">qdisc</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">noqueue</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">state</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">UNKNOWN</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">group</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">default</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">qlen</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">1000</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">link/loopback</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">00</span><span style="color:var(--shiki-token-string);">:00:00:00:00:00</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">brd</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">00</span><span style="color:var(--shiki-token-string);">:00:00:00:00:00</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">inet</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">127.0</span><span style="color:var(--shiki-token-string);">.0.1/8</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">scope</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">host</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">lo</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">valid_lft</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">forever</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">preferred_lft</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">forever</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">inet6</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">::1/128</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">scope</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">host</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">valid_lft</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">forever</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">preferred_lft</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">forever</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">2:</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ens32:</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-keyword);"><</span><span style="color:var(--shiki-token-string);">BROADCAST,MULTICAST,UP,LOWER_U</span><span style="color:var(--shiki-color-text);">P</span><span style="color:var(--shiki-token-keyword);">></span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">mtu</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">1500</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">qdisc</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">pfifo_fast</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">state</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">UP</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">group</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">default</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">qlen</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">1000</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">link/ether</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">00</span><span style="color:var(--shiki-token-string);">:0c:29:99:2f:75</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">brd</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ff:ff:ff:ff:ff:ff</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">altname</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">enp2s0</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">inet</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">192.168</span><span style="color:var(--shiki-token-string);">.101.177/24</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">scope</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">global</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ens32</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">valid_lft</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">forever</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">preferred_lft</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">forever</span></span></code></pre></div>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p>关闭指定网络接口</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-function);">$</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ip</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">link</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">set</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">dev</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ens32</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">down</span></span></code></pre></div>
|
|||
|
<p><em>注意:如果通过 SSH 连接,执行此操作会导致连接断开。</em></p>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p>配置静态 IP 地址</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-function);">$</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ip</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">addr</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">add</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">192.168</span><span style="color:var(--shiki-token-string);">.101.222/24</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">dev</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ens32</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">$</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ip</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">addr</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">show</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">1:</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">lo:</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-keyword);"><</span><span style="color:var(--shiki-token-string);">LOOPBACK,UP,LOWER_U</span><span style="color:var(--shiki-color-text);">P</span><span style="color:var(--shiki-token-keyword);">></span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">mtu</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">65536</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">qdisc</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">noqueue</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">state</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">UNKNOWN</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">group</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">default</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">qlen</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">1000</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">link/loopback</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">00</span><span style="color:var(--shiki-token-string);">:00:00:00:00:00</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">brd</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">00</span><span style="color:var(--shiki-token-string);">:00:00:00:00:00</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">inet</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">127.0</span><span style="color:var(--shiki-token-string);">.0.1/8</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">scope</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">host</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">lo</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">valid_lft</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">forever</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">preferred_lft</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">forever</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">inet6</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">::1/128</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">scope</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">host</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">valid_lft</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">forever</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">preferred_lft</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">forever</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">2:</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ens32:</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-keyword);"><</span><span style="color:var(--shiki-token-string);">BROADCAST,MULTICAST,UP,LOWER_U</span><span style="color:var(--shiki-color-text);">P</span><span style="color:var(--shiki-token-keyword);">></span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">mtu</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">1500</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">qdisc</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">pfifo_fast</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">state</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">UP</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">group</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">default</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">qlen</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">1000</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">link/ether</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">00</span><span style="color:var(--shiki-token-string);">:0c:29:99:2f:75</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">brd</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ff:ff:ff:ff:ff:ff</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">altname</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">enp2s0</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">inet</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">192.168</span><span style="color:var(--shiki-token-string);">.101.177/24</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">scope</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">global</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ens32</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">valid_lft</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">forever</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">preferred_lft</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">forever</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">inet</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">192.168</span><span style="color:var(--shiki-token-string);">.101.222/24</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">scope</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">global</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">secondary</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ens32</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">valid_lft</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">forever</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">preferred_lft</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">forever</span></span></code></pre></div>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p>配置网关地址</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-function);">$</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ip</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">route</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">add</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">default</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">via</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">192.168</span><span style="color:var(--shiki-token-string);">.101.1</span></span></code></pre></div>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p>配置 DNS 服务器地址</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-function);">$</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">echo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string-expression);">"nameserver 8.8.8.8"</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-keyword);">></span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">/etc/resolv.conf</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">$</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">echo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string-expression);">"nameserver 8.8.4.4"</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-keyword);">>></span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">/etc/resolv.conf</span></span></code></pre></div>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p>启用网络接口</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-function);">$</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ip</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">link</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">set</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">dev</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ens32</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">up</span></span></code></pre></div>
|
|||
|
</li>
|
|||
|
</ol>
|
|||
|
<h3 id="networkmanager">NetworkManager<a aria-hidden="true" tabindex="-1" href="#networkmanager" class="internal"> §</a></h3>
|
|||
|
<p>**NetworkManager 是由 Red Hat 公司开发的一款用于管理 Linux 操作系统上网络连接的软件。**自 2004 年首次发布以来,它迅速成为 Linux 操作系统中最流行的网络管理工具之一。在 NetworkManager 诞生之前,Linux 中的网络管理通常需要通过手动配置网络文件完成,这一过程不仅繁琐且易出错,但随着 NetworkManager 的出现,这一切都变得简单和直观。</p>
|
|||
|
<p>NetworkManager 展现了其在管理网络连接和网络接口方面的核心能力,提供了**一整套综合工具,大大简化了网络设置的复杂性。**用户得以轻松添加、修改、启用或禁用各类网络连接,包括有线和无线网络,乃至虚拟私人网络(VPN)。其核心由负责监控和管理网络的后台守护进程、提供直观操作的图形界面以及功能强大的命令行界面组成,还包括管理设备驱动和处理连接请求的高效后端服务。</p>
|
|||
|
<p>在用户进行网络设置调整时,<strong>NetworkManager 自动更新相关配置文件</strong>,确保网络设置的一致性和准确性得到坚实保障。借助灵活的插件体系和高效的 D-Bus 通信机制,NetworkManager 能够轻松处理多种类型的网络连接,将配置和管理过程自动化,从而提供了一个无缝、直观且高度可靠的网络管理解决方案。</p>
|
|||
|
<h4 id="nmcli">Nmcli<a aria-hidden="true" tabindex="-1" href="#nmcli" class="internal"> §</a></h4>
|
|||
|
<p><strong><code>nmcli</code> 是 NetworkManager 的命令行界面</strong>,提供了全面的功能来管理网络。用户可以通过它快速创建、修改和监控网络连接。无论是列出网络设备状态,管理网络连接,设置静态 IP,还是管理 VPN 和其他特殊连接,<code>nmcli</code> 都能提供强大支持。</p>
|
|||
|
<h4 id="nmtui">Nmtui<a aria-hidden="true" tabindex="-1" href="#nmtui" class="internal"> §</a></h4>
|
|||
|
<p>对于那些偏好图形界面或在终端中工作的用户,<code>nmtui</code> 提供了一个简单直观的解决方案。这个<strong>交互式的文本界面</strong>应用使得配置 NetworkManager 控制的网络设置变得轻松。它的直观操作和无需鼠标的特性,使得 <code>nmtui</code> 成为 SSH 会话和终端窗口中理想的网络管理工具。</p>
|
|||
|
<h4 id="生命周期-1">生命周期<a aria-hidden="true" tabindex="-1" href="#生命周期-1" class="internal"> §</a></h4>
|
|||
|
<pre><code class="mermaid">flowchart LR
|
|||
|
A[1. 开始] --> B[2. 添加新设备]
|
|||
|
B --> C[3. NetworkManager 识别设备]
|
|||
|
C --> D[4. 查看设备状态]
|
|||
|
D --> E[nmcli device show]
|
|||
|
|
|||
|
C --> F[5. 配置网络连接]
|
|||
|
F --> G[5.1 配置 DHCP]
|
|||
|
G --> H[nmcli connection modify <connection-name> ipv4.method auto]
|
|||
|
F --> I[5.2 配置静态 IP]
|
|||
|
I --> J[nmcli connection modify <connection-name> ipv4.addresses <ip-address>/<subnet-mask> ipv4.gateway <gateway-address> ipv4.dns <dns-address> ipv4.method manual]
|
|||
|
|
|||
|
F --> K[5.3 配置 Wi-Fi]
|
|||
|
K --> L[5.3.1 扫描 Wi-Fi 网络]
|
|||
|
L --> M[nmcli device wifi rescan]
|
|||
|
K --> N[5.3.2 显示 Wi-Fi 网络]
|
|||
|
N --> O[nmcli device wifi list]
|
|||
|
K --> P[5.3.3 连接 Wi-Fi 网络]
|
|||
|
P --> Q[nmcli device wifi connect <SSID> password <password>]
|
|||
|
|
|||
|
C --> R[6. 激活网络连接]
|
|||
|
R --> S[nmcli connection up <connection-name>]
|
|||
|
|
|||
|
C --> T[7. 管理现有连接]
|
|||
|
T --> U[7.1 查看现有连接]
|
|||
|
U --> V[nmcli connection show]
|
|||
|
T --> W[7.2 修改现有连接]
|
|||
|
W --> X[nmcli connection modify <connection-name> ...]
|
|||
|
T --> Y[7.3 删除现有连接]
|
|||
|
Y --> Z[nmcli connection delete <connection-name>]
|
|||
|
|
|||
|
C --> AA[8. 监控和调试]
|
|||
|
AA --> AB[8.1 监控网络状态]
|
|||
|
AB --> AC[nmcli general status]
|
|||
|
AA --> AD[8.2 监控连接状态]
|
|||
|
AD --> AE[nmcli connection show --active]
|
|||
|
|
|||
|
C --> AF[9. 禁用设备]
|
|||
|
AF --> AG[nmcli device disconnect <device-name>]
|
|||
|
|
|||
|
AG --> AH[10. 设备生命周期结束]
|
|||
|
</code></pre>
|
|||
|
<h4 id="常用命令-1">常用命令<a aria-hidden="true" tabindex="-1" href="#常用命令-1" class="internal"> §</a></h4>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<table><thead><tr><th>命令</th><th>说明</th></tr></thead><tbody><tr><td>nmcli dev show</td><td>显示所有网络设备的信息</td></tr><tr><td>nmcli conn show</td><td>显示所有网络连接的信息</td></tr><tr><td>nmcli conn up</td><td>启用指定的网络连接</td></tr><tr><td>nmcli conn down</td><td>禁用指定的网络连接</td></tr><tr><td>nmcli conn add</td><td>添加一个新的网络连接</td></tr><tr><td>nmcli conn modify</td><td>修改一个已有的网络连接</td></tr><tr><td>nmcli conn delete</td><td>删除一个已有的网络连接</td></tr><tr><td>nmcli connection edit</td><td>编辑一个已有的网络连接</td></tr><tr><td>nmcli device wifi</td><td>显示所有 Wi-Fi 网络及其相关信息</td></tr><tr><td>nmcli device wifi rescan</td><td>重新扫描 Wi-Fi 网络列表</td></tr><tr><td>nmcli device wifi connect</td><td>连接指定的 Wi-Fi 网络</td></tr></tbody></table>
|
|||
|
<h4 id="常用选项-1">常用选项<a aria-hidden="true" tabindex="-1" href="#常用选项-1" class="internal"> §</a></h4>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<table><thead><tr><th>选项</th><th>说明</th></tr></thead><tbody><tr><td>-f,—format</td><td>指定输出格式(例如 csv、json、tabular 等)</td></tr><tr><td>-t,—terse</td><td>指定分隔符</td></tr><tr><td>-m,—mode</td><td>指定最大输出宽度(用于长文本的换行)</td></tr><tr><td>-p,—set-property</td><td>指定要修改的属性</td></tr><tr><td>-a,—add</td><td>添加新的属性</td></tr><tr><td>-r,—remove</td><td>删除一个属性</td></tr><tr><td>-e,—enable</td><td>激活一个属性</td></tr><tr><td>-d,—disable</td><td>禁用一个属性</td></tr><tr><td>-v,—verbose</td><td>输出详细信息</td></tr><tr><td>-i,—ignore-case</td><td>忽略大小写</td></tr></tbody></table>
|
|||
|
<h4 id="操作实例">操作实例<a aria-hidden="true" tabindex="-1" href="#操作实例" class="internal"> §</a></h4>
|
|||
|
<ol>
|
|||
|
<li>
|
|||
|
<p>查看当前网络接口信息</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-comment);"># 显示所有网络设备的信息</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">nmcli</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">device</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">show</span></span></code></pre></div>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p>配置静态 IP 地址</p>
|
|||
|
<p>注意:如果当前已经有一个 DHCP 分配的 IP 地址,则需要首先释放该地址。</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-comment);"># 释放 DHCP 分配的 IP 地址</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">nmcli</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">connection</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">modify</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ens160</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ipv4.method</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">auto</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 为指定网络接口配置静态 IP 地址</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">nmcli</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">connection</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">modify</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ens160</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ipv4.addresses</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">192.168</span><span style="color:var(--shiki-token-string);">.101.123/24</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ipv4.gateway</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">192.168</span><span style="color:var(--shiki-token-string);">.101.1</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ipv4.dns</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">114.114</span><span style="color:var(--shiki-token-string);">.114.114</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ipv4.method</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">manual</span></span></code></pre></div>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p>激活新的网络配置</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-comment);"># 激活新的网络配置</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">nmcli</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">connection</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">up</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ens160</span></span></code></pre></div>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p>连接到 Wi-Fi 网络</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-comment);"># 重新扫描 Wi-Fi 网络列表</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">nmcli</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">device</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">wifi</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">rescan</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 显示所有 Wi-Fi 网络及其相关信息</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">nmcli</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">device</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">wifi</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">list</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 连接指定的 Wi-Fi 网络</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">nmcli</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">device</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">wifi</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">connect</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-keyword);"><</span><span style="color:var(--shiki-token-string);">SSI</span><span style="color:var(--shiki-color-text);">D</span><span style="color:var(--shiki-token-keyword);">></span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">password</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-keyword);"><</span><span style="color:var(--shiki-token-string);">passwor</span><span style="color:var(--shiki-color-text);">d</span><span style="color:var(--shiki-token-keyword);">></span></span></code></pre></div>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p>添加新的网络连接</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-comment);"># 添加一个新的以太网连接</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">nmcli</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">connection</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">add</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">type</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ethernet</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ifname</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">eth0</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">con-name</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">static-eth0</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">autoconnect</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">yes</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ip4</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">192.168</span><span style="color:var(--shiki-token-string);">.1.100/24</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">gw4</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">192.168</span><span style="color:var(--shiki-token-string);">.1.1</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ipv4.dns</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">8.8</span><span style="color:var(--shiki-token-string);">.8.8</span></span></code></pre></div>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p>删除网络连接</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-comment);"># 删除一个已有的网络连接</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">nmcli</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">connection</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">delete</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">static-eth0</span></span></code></pre></div>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p>查看和管理 VPN 连接</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-comment);"># 显示活动的 VPN 连接</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">nmcli</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">connection</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">show</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--active</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 添加一个新的 OpenVPN 连接</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">nmcli</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">connection</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">import</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">type</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">openvpn</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">file</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-keyword);"><</span><span style="color:var(--shiki-token-string);">path-to-ovpn-fil</span><span style="color:var(--shiki-color-text);">e</span><span style="color:var(--shiki-token-keyword);">></span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 激活 VPN 连接</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">nmcli</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">connection</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">up</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-keyword);"><</span><span style="color:var(--shiki-token-string);">vpn-connection-nam</span><span style="color:var(--shiki-color-text);">e</span><span style="color:var(--shiki-token-keyword);">></span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 禁用 VPN 连接</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">nmcli</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">connection</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">down</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-keyword);"><</span><span style="color:var(--shiki-token-string);">vpn-connection-nam</span><span style="color:var(--shiki-color-text);">e</span><span style="color:var(--shiki-token-keyword);">></span></span></code></pre></div>
|
|||
|
</li>
|
|||
|
</ol>
|
|||
|
<h2 id="网络管理">网络管理<a aria-hidden="true" tabindex="-1" href="#网络管理" class="internal"> §</a></h2>
|
|||
|
<h3 id="iptables">Iptables<a aria-hidden="true" tabindex="-1" href="#iptables" class="internal"> §</a></h3>
|
|||
|
<p><code>iptables</code> 是 Linux 系统中的一个命令行防火墙工具,它允许系统管理员配置内核防火墙(netfilter)规则。它主要用于数据包过滤、网络地址转换(NAT)和数据包修改。由于 <code>iptables</code> 在内核空间运行,能够为内核提供强大的防火墙和网络处理功能。</p>
|
|||
|
<p><code>iptables</code> 由 Rusty Russell 在 1998 年创建,最初作为 <code>ipchains</code> 的替代品发布。它是 netfilter 项目的一部分,该项目的目标是提供一套丰富且可靠的防火墙和路由工具。</p>
|
|||
|
<h4 id="架构图">架构图<a aria-hidden="true" tabindex="-1" href="#架构图" class="internal"> §</a></h4>
|
|||
|
<p>在 <code>iptables</code> 的规则体系中,存在<strong>一个重要的概念叫做四表五链</strong>。这些表和链提供了 <code>iptables</code> 进行包过滤和处理的基础架构。</p>
|
|||
|
<pre><code class="mermaid">graph TB
|
|||
|
subgraph 四表
|
|||
|
A[filter]
|
|||
|
B[nat]
|
|||
|
C[mangle]
|
|||
|
D[raw]
|
|||
|
end
|
|||
|
|
|||
|
subgraph 五链
|
|||
|
E[INPUT]
|
|||
|
F[OUTPUT]
|
|||
|
G[FORWARD]
|
|||
|
H[PREROUTING]
|
|||
|
I[POSTROUTING]
|
|||
|
end
|
|||
|
|
|||
|
A --> E
|
|||
|
A --> F
|
|||
|
A --> G
|
|||
|
|
|||
|
B --> H
|
|||
|
B --> F
|
|||
|
B --> I
|
|||
|
|
|||
|
C --> H
|
|||
|
C --> E
|
|||
|
C --> G
|
|||
|
C --> F
|
|||
|
C --> I
|
|||
|
|
|||
|
D --> H
|
|||
|
D --> F
|
|||
|
</code></pre>
|
|||
|
<h4 id="四表">四表<a aria-hidden="true" tabindex="-1" href="#四表" class="internal"> §</a></h4>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<table><thead><tr><th>表名</th><th>用途</th><th>关联的链</th></tr></thead><tbody><tr><td>filter</td><td>数据包过滤</td><td>INPUT、FORWARD、OUTPUT</td></tr><tr><td>nat</td><td>网络地址转换(NAT)</td><td>PREROUTING、OUTPUT、POSTROUTING</td></tr><tr><td>mangle</td><td>数据包修改</td><td>PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING</td></tr><tr><td>raw</td><td>配置连接追踪豁免</td><td>PREROUTING、OUTPUT</td></tr></tbody></table>
|
|||
|
<h4 id="五链">五链<a aria-hidden="true" tabindex="-1" href="#五链" class="internal"> §</a></h4>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<table><thead><tr><th>链名</th><th>用途</th></tr></thead><tbody><tr><td>INPUT</td><td>处理进入本机的数据包</td></tr><tr><td>OUTPUT</td><td>处理本机产生的数据包</td></tr><tr><td>FORWARD</td><td>处理经过本机转发的数据包</td></tr><tr><td>PREROUTING</td><td>在路由决策之前处理进入系统的数据包</td></tr><tr><td>POSTROUTING</td><td>在路由决策之后处理离开系统的数据包</td></tr></tbody></table>
|
|||
|
<p>尽管 <code>iptables</code> 强大且灵活,但也有一些缺点。例如,<strong><code>iptables</code> 的配置较为复杂</strong>,需要花费较多的时间学习和理解。</p>
|
|||
|
<p>此外,<code>iptables</code> 的<strong>性能与网络流量和规则数量成正比</strong>,大量的规则和网络流量可能会导致性能下降。然而,通过深入理解和恰当配置,管理员可以充分利用 <code>iptables</code> 来建立强大且灵活的网络防火墙。</p>
|
|||
|
<p>随着时间的推移,<strong><code>iptables</code> 已经不再是 Linux 系统中唯一的防火墙解决方案</strong>。在最近的 Linux 发行版中,<code>nftables</code> 开始替代 <code>iptables</code> 成为默认的防火墙工具。<code>nftables</code> 提供了与 <code>iptables</code> 类似的功能,但具有更优的性能和更简洁的语法。</p>
|
|||
|
<p>尽管如此,<code>iptables</code> 仍然广泛用于很多系统中,并且由于其强大和灵活的特性,仍然是许多系统管理员的首选工具。</p>
|
|||
|
<h4 id="常用命令-2">常用命令<a aria-hidden="true" tabindex="-1" href="#常用命令-2" class="internal"> §</a></h4>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-comment);"># 列出所有防火墙规则</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">iptables</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">-L</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 添加一条新的规则</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">iptables</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">-A</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">INPUT</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">-p</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">tcp</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--dport</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">22</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">-j</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ACCEPT</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 删除一条规则</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">iptables</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">-D</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">INPUT</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">1</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 清空所有规则</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">iptables</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">-F</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 设置默认策略</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">iptables</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">-P</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">INPUT</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">DROP</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 创建新的链</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">iptables</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">-N</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">LOGGING</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 删除一个空链</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">iptables</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">-X</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">LOGGING</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 在链中插入一条规则</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">iptables</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">-I</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">INPUT</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">1</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">-p</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">tcp</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--dport</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">22</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">-j</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ACCEPT</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 替换链中的一条规则</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">iptables</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">-R</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">INPUT</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">1</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">-p</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">tcp</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--dport</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">80</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">-j</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ACCEPT</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 列出所有规则的详细信息</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">iptables</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">-S</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 列出规则,不解析服务名称</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">iptables</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">-n</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">-L</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 保存 iptables 规则</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">iptables-save</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-keyword);">></span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">/etc/iptables/rules.v4</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 恢复 iptables 规则</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">iptables-restore</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-keyword);"><</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">/etc/iptables/rules.v4</span></span></code></pre></div>
|
|||
|
<h3 id="nftables">Nftables<a aria-hidden="true" tabindex="-1" href="#nftables" class="internal"> §</a></h3>
|
|||
|
<p><strong><code>nftables</code> (Netfilter tables) 是一种 Linux 内核的包过滤框架,它是 <code>iptables</code>、<code>ip6tables</code>、<code>arptables</code>、<code>ebtables</code> 等工具的替代品</strong>,旨在提供单一、统一的解决方案,以简化包过滤和防火墙的配置。<code>nftables</code> 提供了一个新的、更高级的语法,用于更简洁、更直观地定义和管理规则。</p>
|
|||
|
<p><code>nftables</code> 于 2014 年作为 Linux 内核 3.13 的一部分首次发布。它由同样也是 <code>iptables</code> 创建者的 Netfilter 项目团队开发,主要目的是解决 <code>iptables</code> 在易用性和性能上的一些问题。新的框架是为了改善和扩展现有的过滤系统,提供更强大的网络数据包处理能力。</p>
|
|||
|
<h4 id="架构图-1">架构图<a aria-hidden="true" tabindex="-1" href="#架构图-1" class="internal"> §</a></h4>
|
|||
|
<pre><code class="mermaid">graph TD
|
|||
|
A[Netfilter框架] --> B[nftables核心]
|
|||
|
B --> C[用户空间工具nft]
|
|||
|
B --> D[Netlink接口]
|
|||
|
B --> E[内核模块nftables]
|
|||
|
C --> F[命令行接口]
|
|||
|
C --> G[规则定义文件]
|
|||
|
D --> H[配置和管理]
|
|||
|
E --> I[数据包处理]
|
|||
|
I --> J[规则匹配]
|
|||
|
I --> K[动作执行]
|
|||
|
J --> L[过滤]
|
|||
|
J --> M[网络地址转换NAT]
|
|||
|
J --> N[数据包修改]
|
|||
|
K --> O[接受]
|
|||
|
K --> P[丢弃]
|
|||
|
K --> Q[重定向]
|
|||
|
|
|||
|
subgraph "用户空间"
|
|||
|
F
|
|||
|
G
|
|||
|
end
|
|||
|
|
|||
|
subgraph "内核空间"
|
|||
|
H
|
|||
|
I
|
|||
|
L
|
|||
|
M
|
|||
|
N
|
|||
|
O
|
|||
|
P
|
|||
|
Q
|
|||
|
end
|
|||
|
</code></pre>
|
|||
|
<p><code>nftables</code> 提供了一种新的、基于 Netlink 的接口,用于配置网络过滤规则。它还提供了一种新的语法,用于定义过滤规则。这种语法更加简洁、直观,比 <code>iptables</code> 的语法更易于学习和使用。与 <code>iptables</code> 相比,<code>nftables</code> 还有一些其他的优点。例如,它能更高效地处理大量的规则,支持更多的数据类型和操作符,提供更强大的过滤和分类功能,支持动态更新规则等等。</p>
|
|||
|
<h4 id="核心特性">核心特性<a aria-hidden="true" tabindex="-1" href="#核心特性" class="internal"> §</a></h4>
|
|||
|
<ol>
|
|||
|
<li><strong>更简洁、更直观的语法</strong>:<code>nftables</code> 的语法比 <code>iptables</code> 的语法更简洁、更直观,更易于学习和使用。</li>
|
|||
|
<li><strong>更高的性能</strong>:<code>nftables</code> 能更高效地处理大量的规则,对性能的影响较小。</li>
|
|||
|
<li><strong>更强大的功能</strong>:<code>nftables</code> 支持更多的数据类型和操作符,提供更强大的过滤和分类功能,支持动态更新规则。</li>
|
|||
|
<li><strong>替代多种工具</strong>:<code>nftables</code> 可以替代 <code>iptables</code>、<code>ip6tables</code>、<code>arptables</code>、<code>ebtables</code> 等工具,提供一个统一的解决方案。</li>
|
|||
|
<li><strong>使用新技术</strong>:作为一种新的包过滤框架,<code>nftables</code> 使用了许多新的技术和接口,这可能需要一些学习和适应。</li>
|
|||
|
</ol>
|
|||
|
<p>尽管 <code>nftables</code> 在许多方面都优于 <code>iptables</code>,但它也存在一些问题。例如,它的<strong>语法和接口与 <code>iptables</code> 不兼容</strong>,这可能导致一些旧的脚本和工具无法正常工作。此外,由于 <code>nftables</code> 是相对较新的技术,可能还存在一些 bug 或不稳定的问题。</p>
|
|||
|
<p>总的来说,<code>nftables</code> 是一种强大而灵活的网络过滤框架,它提供了许多 <code>iptables</code> 所不具备的特性和优点。它的目标是简化网络过滤和防火墙的配置,提供更高的性能,支持更多的功能,使得网络管理员能够更有效地管理他们的网络。</p>
|
|||
|
<h4 id="常用的命令">常用的命令<a aria-hidden="true" tabindex="-1" href="#常用的命令" class="internal"> §</a></h4>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-comment);"># 显示当前已定义的所有表</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">nft</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">list</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">tables</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 添加一个新表,表名为 "mytable",表类型为 "ip"</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">nft</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">add</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">table</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ip</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">mytable</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 列出在表 "mytable" 下的 "mychain" 中定义的所有链</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">nft</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">list</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">chain</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ip</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">mytable</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">mychain</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 在表 "mytable" 下添加一个新链 "mychain",并设置链的类型为 "filter",hook 为 "input",优先级为 0</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">nft</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">add</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">chain</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ip</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">mytable</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">mychain</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">{</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">type</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">filter</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">hook</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">input</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">priority</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">0</span><span style="color:var(--shiki-color-text);"> \; </span><span style="color:var(--shiki-token-string);">}</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 在 "mychain" 中添加一个新规则,如果源 IP 地址是 192.0.2.1,则丢弃该包</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">nft</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">add</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">rule</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ip</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">mytable</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">mychain</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ip</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">saddr</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">192.0</span><span style="color:var(--shiki-token-string);">.2.1</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">drop</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 列出所有已定义的规则集</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">nft</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">list</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ruleset</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 删除在 "mychain" 中的 handle 是 1 的规则</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">nft</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">delete</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">rule</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ip</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">mytable</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">mychain</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">handle</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">1</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 清空指定链 "mychain" 中的所有规则</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">nft</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">flush</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">chain</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ip</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">mytable</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">mychain</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 删除指定链 "mytable" 中的 "mychain"</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">nft</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">delete</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">chain</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ip</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">mytable</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">mychain</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 删除指定表 "mytable"</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">nft</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">delete</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">table</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ip</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">mytable</span></span></code></pre></div>
|
|||
|
<h3 id="ufw">Ufw<a aria-hidden="true" tabindex="-1" href="#ufw" class="internal"> §</a></h3>
|
|||
|
<p><strong><code>ufw</code>(Uncomplicated Firewall)是一种简洁的防火墙配置工具,专门为 Linux 设计。</strong> 该工具的主要目标是简化 <code>iptables</code> 防火墙配置的复杂性,并提供一个用户友好的界面,以便于用户进行操作和管理。UFW 是由 Ubuntu 开发的,但它也能在其他的 Linux 发行版上使用。</p>
|
|||
|
<p>UFW 的功能主要是通过控制网络流量来提供安全防护。用户可以设置防火墙规则,来允许或拒绝某个 IP 地址、端口或服务的入站或出站流量。同时,UFW 也支持 IPv6,这样可以满足现代网络环境的需求。</p>
|
|||
|
<h4 id="架构图-2">架构图<a aria-hidden="true" tabindex="-1" href="#架构图-2" class="internal"> §</a></h4>
|
|||
|
<pre><code class="mermaid">graph TD
|
|||
|
subgraph ufw
|
|||
|
A[UFW Command Line Interface]
|
|||
|
B[UFW Configuration]
|
|||
|
C[Backend]
|
|||
|
C --> D[iptables/nftables]
|
|||
|
E[Logging]
|
|||
|
F[Applications]
|
|||
|
end
|
|||
|
A --> B
|
|||
|
A --> C
|
|||
|
A --> E
|
|||
|
A --> F
|
|||
|
</code></pre>
|
|||
|
<ol>
|
|||
|
<li><strong>UFW Command Line Interface</strong>:UFW 提供了一个简单的命令行界面,通过该界面用户可以方便地管理防火墙规则。</li>
|
|||
|
<li><strong>UFW Configuration</strong>:配置文件存储了 UFW 的规则和策略,用户可以编辑这些文件以自定义防火墙行为。</li>
|
|||
|
<li><strong>Backend(后端)</strong>:UFW 支持两种主要的后端:iptables 和 nftables。后端负责实际执行防火墙规则。</li>
|
|||
|
<li><strong>Logging(日志)</strong>:UFW 支持日志记录功能,用户可以配置日志级别以监控网络活动。</li>
|
|||
|
<li><strong>Applications(应用)</strong>:UFW 支持预配置的应用规则,使用户能够方便地管理常见应用的防火墙规则。</li>
|
|||
|
</ol>
|
|||
|
<h4 id="工作流程">工作流程<a aria-hidden="true" tabindex="-1" href="#工作流程" class="internal"> §</a></h4>
|
|||
|
<pre><code class="mermaid">flowchart TD
|
|||
|
A[启动 UFW] --> B[加载配置文件]
|
|||
|
B --> C[设置初始防火墙规则]
|
|||
|
C --> D{用户交互}
|
|||
|
D -->|添加规则| E[更新配置文件]
|
|||
|
D -->|删除规则| F[更新配置文件]
|
|||
|
D -->|修改规则| G[更新配置文件]
|
|||
|
E --> H[应用新规则]
|
|||
|
F --> H[应用新规则]
|
|||
|
G --> H[应用新规则]
|
|||
|
H --> I[日志记录]
|
|||
|
I --> J[监控网络活动]
|
|||
|
</code></pre>
|
|||
|
<ol>
|
|||
|
<li><strong>启动</strong>:当 UFW 启用时,它会加载配置文件,并根据这些配置文件设置初始的防火墙规则。</li>
|
|||
|
<li><strong>规则管理</strong>:用户可以通过 CLI(命令行界面)与 UFW 进行交互,添加、删除或修改防火墙规则。</li>
|
|||
|
<li><strong>应用规则</strong>:UFW 支持预配置的应用规则,用户可以通过简单的命令添加或删除这些规则。</li>
|
|||
|
<li><strong>日志记录</strong>:用户可以配置 UFW 的日志记录级别,以便监控和调试网络活动。</li>
|
|||
|
<li><strong>持久性配置</strong>:UFW 的配置文件存储在系统中,可以在重启后自动加载。</li>
|
|||
|
</ol>
|
|||
|
<h4 id="常用命令-3">常用命令<a aria-hidden="true" tabindex="-1" href="#常用命令-3" class="internal"> §</a></h4>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-comment);"># 启用 UFW</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ufw</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">enable</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 禁用 UFW</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ufw</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">disable</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 显示 UFW 状态和规则</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ufw</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">status</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 允许特定端口或服务的流量</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ufw</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">allow</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">22</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 拒绝特定端口或服务的流量</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ufw</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">deny</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">22</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 删除特定规则</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ufw</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">delete</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">allow</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-constant);">22</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 设置默认的入站或出站策略</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ufw</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">default</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">deny</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">incoming</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 显示预配置的应用规则</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ufw</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">app</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">list</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 显示特定应用的规则信息</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ufw</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">app</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">info</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string-expression);">'Apache'</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 设置日志记录级别</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ufw</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">logging</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">medium</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 重新加载 UFW 规则,无需重启防火墙服务</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ufw</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">reload</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 重置 UFW 配置为默认状态</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">ufw</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">reset</span></span></code></pre></div>
|
|||
|
<h3 id="firewalld">Firewalld<a aria-hidden="true" tabindex="-1" href="#firewalld" class="internal"> §</a></h3>
|
|||
|
<p>firewalld 是一个用于管理 Linux 发行版的防火墙的动态守护程序。主要用于 IPv4、IPv6 防火墙规则以及以太网桥的管理,**firewalld 基于 nftables 或 iptables 实现网络包过滤。**相较于传统的防火墙管理方式,firewalld 采用动态管理,能够让你在无需重启防火墙的情况下实时更新策略和规则。</p>
|
|||
|
<p>**firewalld 使用区域(zones)来定义不同网络接口或连接的安全级别和防火墙规则。**每个区域都有一组默认规则,可以允许或拒绝特定类型的流量。区域的设计目的是根据网络信任度对网络流量进行分区管理。这使你能够为信任的网络接口、设备和服务定义区域,实现更加灵活的防火墙管理。</p>
|
|||
|
<h4 id="架构图-3">架构图<a aria-hidden="true" tabindex="-1" href="#架构图-3" class="internal"> §</a></h4>
|
|||
|
<pre><code class="mermaid">graph TD
|
|||
|
subgraph firewalld
|
|||
|
A[firewalld Daemon]
|
|||
|
B[D-Bus Interface]
|
|||
|
C[Backend]
|
|||
|
C --> D[iptables/nftables]
|
|||
|
E[Zones]
|
|||
|
E --> drop[Drop]
|
|||
|
E --> block[Block]
|
|||
|
E --> public[Public]
|
|||
|
E --> external[External]
|
|||
|
E --> dmz[DMZ]
|
|||
|
E --> work[Work]
|
|||
|
E --> home[Home]
|
|||
|
E --> internal[Internal]
|
|||
|
F[Services]
|
|||
|
end
|
|||
|
A -->|Communicates via| B
|
|||
|
A --> C
|
|||
|
A --> E
|
|||
|
A --> F
|
|||
|
</code></pre>
|
|||
|
<ol>
|
|||
|
<li><strong>firewalld Daemon</strong>:firewalld 是一个常驻内存的守护进程,负责管理防火墙规则。它通过 D-Bus 接口提供与外部交互的能力,可以动态加载和卸载规则,而不需要重启防火墙服务。</li>
|
|||
|
<li><strong>D-Bus Interface</strong>:D-Bus 是一个消息总线系统,firewalld 通过它与其他系统组件和应用程序进行通信。用户和管理工具可以通过 D-Bus 与 firewalld 交互,查询状态、修改规则等。</li>
|
|||
|
<li><strong>Backend(后端)</strong>:firewalld 支持两种主要的后端:iptables 和 nftables。后端是实际执行防火墙规则的地方,firewalld 负责将用户定义的规则翻译成适当的后端命令并执行。</li>
|
|||
|
<li><strong>Zones(区域)</strong>:区域是 firewalld 管理规则的一种方式。每个网络接口或连接可以分配到一个区域,区域定义了特定的信任级别和规则集。常见的区域包括 <code>public</code>、<code>home</code>、<code>work</code> 和 <code>internal</code> 等。</li>
|
|||
|
<li><strong>Services(服务)</strong>:服务定义了一组预定义的规则,这些规则允许或拒绝特定的网络流量。例如,HTTP 服务允许 TCP 端口 80 的流量。通过添加或删除服务,用户可以方便地管理复杂的防火墙规则。</li>
|
|||
|
</ol>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<table><thead><tr><th>区域</th><th>描述</th><th>默认行为</th><th>适用场景</th></tr></thead><tbody><tr><td>drop</td><td>丢弃所有传入的网络包,不回应任何请求。</td><td>丢弃所有传入流量</td><td>高度安全需求,伪装系统离线</td></tr><tr><td>block</td><td>拒绝所有传入的连接,返回拒绝信息。</td><td>拒绝所有传入流量</td><td>完全信任的网络连接</td></tr><tr><td>public</td><td>对外部网络的默认配置,允许有限的传入连接。</td><td>允许有限的传入流量</td><td>公共网络连接,最低信任级别</td></tr><tr><td>external</td><td>用于外部网关,启用网络地址转换(NAT),保护内部网络。</td><td>启用 NAT,限制传入流量</td><td>外部网络网关,保护内部网络</td></tr><tr><td>dmz</td><td>非军事区(DMZ),允许对公众开放的服务,同时保护内部网络。</td><td>允许特定服务的传入流量</td><td>公共服务的隔离区,保护内部网络</td></tr><tr><td>work</td><td>适用于工作环境,信任网络较高,允许更多的传入连接。</td><td>允许更多的传入流量</td><td>工作环境,较高信任级别</td></tr><tr><td>home</td><td>适用于家庭网络,信任网络较高,允许更多的传入连接。</td><td>允许更多的传入流量</td><td>家庭网络,高信任级别</td></tr><tr><td>internal</td><td>适用于完全信任的内部网络,允许所有传入的连接。</td><td>允许所有传入流量</td><td>完全信任的内部网络</td></tr></tbody></table>
|
|||
|
<h4 id="工作流程-1">工作流程<a aria-hidden="true" tabindex="-1" href="#工作流程-1" class="internal"> §</a></h4>
|
|||
|
<pre><code class="mermaid">flowchart TD
|
|||
|
A[启动 firewalld] --> B[加载默认配置文件]
|
|||
|
B --> C[设置初始防火墙规则]
|
|||
|
C --> D{用户交互}
|
|||
|
D -->|添加规则| E[更新规则]
|
|||
|
D -->|删除规则| F[更新规则]
|
|||
|
D -->|修改规则| G[更新规则]
|
|||
|
E --> H[应用新规则]
|
|||
|
F --> H[应用新规则]
|
|||
|
G --> H[应用新规则]
|
|||
|
H --> I[日志记录]
|
|||
|
I --> J[监控网络活动]
|
|||
|
H --> K{持久性配置}
|
|||
|
K -->|临时规则| L[临时规则加载,重启后丢失]
|
|||
|
K -->|永久规则| M[永久规则保存到配置文件]
|
|||
|
</code></pre>
|
|||
|
<ol>
|
|||
|
<li><strong>启动 firewalld</strong>:当 firewalld 守护进程启动时,开始加载默认配置文件。</li>
|
|||
|
<li><strong>加载默认配置文件</strong>:从系统中读取默认的防火墙配置文件。</li>
|
|||
|
<li><strong>设置初始防火墙规则</strong>:根据配置文件设置初始的防火墙规则。</li>
|
|||
|
<li><strong>用户交互</strong>:用户通过 CLI(命令行界面)或 GUI(图形用户界面)与 firewalld 进行交互,执行添加、删除或修改规则的操作。这些命令通过 D-Bus 接口传递给 firewalld 守护进程。</li>
|
|||
|
<li><strong>更新规则</strong>:根据用户的操作,更新防火墙规则。</li>
|
|||
|
<li><strong>应用新规则</strong>:根据更新后的配置文件,立即应用新的防火墙规则,而不需要重启服务。</li>
|
|||
|
<li><strong>日志记录</strong>:firewalld 支持日志记录功能,记录防火墙的操作和网络活动。</li>
|
|||
|
<li><strong>监控网络活动</strong>:通过日志,用户可以监控和分析网络活动及安全事件。</li>
|
|||
|
<li>**持久性配置:**firewalld 提供两种规则管理模式:
|
|||
|
<ul>
|
|||
|
<li><strong>临时规则</strong>:这些规则在系统重启后会丢失。</li>
|
|||
|
<li><strong>永久规则</strong>:这些规则会保存到配置文件中,在系统重启后自动加载。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
</ol>
|
|||
|
<h4 id="常用命令-4">常用命令<a aria-hidden="true" tabindex="-1" href="#常用命令-4" class="internal"> §</a></h4>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-comment);"># 启动 firewalld</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">systemctl</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">start</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">firewalld</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 停止 firewalld</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">systemctl</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">stop</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">firewalld</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 在启动时启用 firewalld</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">systemctl</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">enable</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">firewalld</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 查看 firewalld 状态</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">firewall-cmd</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--state</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 列出所有区域</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">firewall-cmd</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--get-zones</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 查看某个区域的详细信息</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">firewall-cmd</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--zone=public</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--list-all</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 更改默认区域</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">firewall-cmd</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--set-default-zone=home</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 将接口分配到特定区域</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">firewall-cmd</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--zone=home</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--change-interface=eth0</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 永久分配接口到特定区域</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">firewall-cmd</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--permanent</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--zone=home</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--add-interface=eth0</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 添加源地址到区域</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">firewall-cmd</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--zone=public</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--add-source=192.168.1.0/24</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 永久添加源地址到区域</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">firewall-cmd</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--permanent</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--zone=public</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--add-source=192.168.1.0/24</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 列出所有默认防火墙规则</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">firewall-cmd</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--list-all</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 添加服务到防火墙</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">firewall-cmd</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--permanent</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--add-service=http</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 删除服务</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">firewall-cmd</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--permanent</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--remove-service=http</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 开放端口</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">firewall-cmd</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--permanent</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--add-port=8080/tcp</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 移除端口</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">firewall-cmd</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--permanent</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--remove-port=8080/tcp</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 重新载入防火墙规则</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">firewall-cmd</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--reload</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 列出所有区域</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">firewall-cmd</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--get-zones</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 查看某个区域的详细信息</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">firewall-cmd</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--zone=public</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--list-all</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 更改默认区域</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">firewall-cmd</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--set-default-zone=home</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 将接口分配到特定区域</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">firewall-cmd</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--zone=home</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--change-interface=eth0</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 永久分配接口到特定区域</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">firewall-cmd</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--permanent</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--zone=home</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--add-interface=eth0</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 添加源地址到区域</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">firewall-cmd</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--zone=public</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--add-source=192.168.1.0/24</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 永久添加源地址到区域</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">firewall-cmd</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--permanent</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--zone=public</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--add-source=192.168.1.0/24</span></span></code></pre></div>
|
|||
|
<h3 id="iptablesnftablesufwfirewalld-对比">iptables、nftables、UFW、firewalld 对比<a aria-hidden="true" tabindex="-1" href="#iptablesnftablesufwfirewalld-对比" class="internal"> §</a></h3>
|
|||
|
<p>在 Linux 环境下,<code>iptables</code>,<code>nftables</code>,<code>ufw</code> 和 <code>firewalld</code> 都是常用的防火墙工具,每种工具都有其独特的优点和使用场景:</p>
|
|||
|
<p>在 Linux 环境下,<code>iptables</code>,<code>nftables</code>,<code>ufw</code> 和 <code>firewalld</code> 都是常用的防火墙工具,每种工具都有其独特的优点和使用场景:</p>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<table><thead><tr><th>特性</th><th>iptables</th><th>nftables</th><th>ufw</th><th>firewalld</th></tr></thead><tbody><tr><td>发布日期</td><td>1998</td><td>2014</td><td>2008</td><td>2011</td></tr><tr><td>操作复杂度</td><td>高</td><td>中</td><td>低</td><td>中</td></tr><tr><td>基于</td><td>netfilter</td><td>netfilter</td><td>iptables</td><td>iptables/nftables</td></tr><tr><td>内建于内核</td><td>是</td><td>是</td><td>否</td><td>否</td></tr><tr><td>GUI</td><td>否</td><td>否</td><td>否</td><td>是</td></tr><tr><td>基于区域的过滤</td><td>否</td><td>否</td><td>否</td><td>是</td></tr><tr><td>直接规则</td><td>是</td><td>是</td><td>否</td><td>是</td></tr><tr><td>规则集合</td><td>否</td><td>是</td><td>否</td><td>是</td></tr><tr><td>协议支持</td><td>IPv4/IPv6</td><td>IPv4/IPv6</td><td>IPv4/IPv6</td><td>IPv4/IPv6</td></tr><tr><td>适用于</td><td>服务器、桌面</td><td>服务器、桌面</td><td>桌面、新手</td><td>服务器、桌面</td></tr><tr><td>跨平台</td><td>是</td><td>是</td><td>是</td><td>是</td></tr><tr><td>语法复杂度</td><td>高</td><td>低</td><td>低</td><td>中</td></tr><tr><td>动态规则修改</td><td>否</td><td>是</td><td>否</td><td>是</td></tr><tr><td>日志记录</td><td>是</td><td>是</td><td>是</td><td>是</td></tr><tr><td>应用配置支持</td><td>否</td><td>否</td><td>是</td><td>是</td></tr><tr><td>持久性配置</td><td>是</td><td>是</td><td>是</td><td>是</td></tr></tbody></table>
|
|||
|
<ul>
|
|||
|
<li><strong>初学者和基本防火墙需求</strong>:<code>ufw</code> 是最好的选择,因其简易性和用户友好性。</li>
|
|||
|
<li><strong>高级用户和复杂配置</strong>:<code>iptables</code> 提供了最细致的控制,适合需要高度自定义和复杂配置的环境。</li>
|
|||
|
<li><strong>现代化和简化管理</strong>:<code>nftables</code> 提供了更简洁的语法和规则集合功能,是 iptables 的现代替代品。</li>
|
|||
|
<li><strong>动态和区域管理</strong>:<code>firewalld</code> 结合了强大功能和易用性,适合需要动态管理和基于区域的过滤需求的环境。</li>
|
|||
|
</ul>
|
|||
|
<p>**总的来说,应该根据特定需求和技能水平选择最适合的防火墙工具。**对于初学者和只需要基本防火墙功能的用户来说,<code>ufw</code> 可能是最好的选择。对于需要进行精细控制和高级配置的用户,<code>iptables</code> 和 <code>nftables</code> 可能更合适。如果您需要一种同时提供强大功能和易用性的防火墙工具,那么 <code>firewalld</code> 可能是最好的选择。</p>
|
|||
|
<h2 id="网络优化">网络优化<a aria-hidden="true" tabindex="-1" href="#网络优化" class="internal"> §</a></h2>
|
|||
|
<h3 id="网络带宽管理">网络带宽管理<a aria-hidden="true" tabindex="-1" href="#网络带宽管理" class="internal"> §</a></h3>
|
|||
|
<p>网络带宽管理是一种在 Linux 系统上优化网络性能和响应时间的方法。它允许管理员控制和分配网络带宽,从而为不同的应用程序和服务提供最佳性能。</p>
|
|||
|
<ul>
|
|||
|
<li><strong>tc (Traffic Control)</strong>:Linux 内核的一部分,用于实现复杂的带宽管理和流量控制策略。</li>
|
|||
|
<li><strong>HTB (Hierarchical Token Bucket)</strong>:一个基于 tc 的流量整形工具,允许管理员创建多层次的带宽限制和优先级分配策略。</li>
|
|||
|
</ul>
|
|||
|
<h3 id="网络质量管理qos">网络质量管理(QoS)<a aria-hidden="true" tabindex="-1" href="#网络质量管理qos" class="internal"> §</a></h3>
|
|||
|
<p>网络质量管理(Quality of Service,QoS)是一种用于分配网络带宽的技术,确保网络资源的公平使用和最佳利用。通过 QoS,管理员可以根据应用程序的需求和优先级分配网络带宽,从而优化网络性能。</p>
|
|||
|
<ul>
|
|||
|
<li><strong>tc (Traffic Control)</strong>:用于实现复杂的 QoS 策略和流量控制。</li>
|
|||
|
<li><strong>Wondershaper</strong>:一个基于 tc 的简单 QoS 工具,允许管理员轻松设置带宽限制和优先级策略。</li>
|
|||
|
</ul>
|
|||
|
<h3 id="负载均衡">负载均衡<a aria-hidden="true" tabindex="-1" href="#负载均衡" class="internal"> §</a></h3>
|
|||
|
<p>负载均衡是在多个服务器之间分配负载的技术,以提高应用程序的性能和可靠性。在 Linux 系统上,可以使用软件负载均衡器和硬件负载均衡器来实现负载均衡。</p>
|
|||
|
<ul>
|
|||
|
<li><strong>HAProxy</strong>:一个高性能、高可用性的软件负载均衡器,支持 TCP 和 HTTP 协议。</li>
|
|||
|
<li><strong>Nginx</strong>:一个功能强大的 Web 服务器,也可以作为负载均衡器和反向代理服务器。</li>
|
|||
|
<li><strong>LVS (Linux Virtual Server)</strong>:一个基于 Linux 内核的负载均衡解决方案,支持多种负载均衡算法。</li>
|
|||
|
</ul>
|
|||
|
<h3 id="数据压缩">数据压缩<a aria-hidden="true" tabindex="-1" href="#数据压缩" class="internal"> §</a></h3>
|
|||
|
<p>数据压缩技术可以减少网络传输的数据量,从而提高网络带宽利用率和传输效率。Linux 系统提供了多种压缩工具和库,支持不同的压缩算法。</p>
|
|||
|
<ul>
|
|||
|
<li><strong>gzip</strong>:一种广泛使用的文件压缩工具,基于 DEFLATE 压缩算法。</li>
|
|||
|
<li><strong>bzip2</strong>:一个基于 Burrows-Wheeler 算法的文件压缩工具,提供较高的压缩率。</li>
|
|||
|
<li><strong>lz4</strong>:一种快速的无损压缩算法,适用于实时场景和大数据处理。</li>
|
|||
|
</ul>
|
|||
|
<h3 id="缓存服务">缓存服务<a aria-hidden="true" tabindex="-1" href="#缓存服务" class="internal"> §</a></h3>
|
|||
|
<p>缓存服务用于在网络上存储和提供数据,以提高访问速度和响应时间。Linux 系统上有多种缓存服务可用,包括 Web 缓存、DNS 缓存和内容分发网络(CDN)。</p>
|
|||
|
<ul>
|
|||
|
<li><strong>Squid</strong>:一个成熟的 Web 缓存代理服务器,可以用来缓存网站内容和优化网络访问速度。</li>
|
|||
|
<li><strong>Unbound</strong>:一个轻量级的 DNS 缓存服务器,用于加速 DNS 解析请求和提高域名解析性能。</li>
|
|||
|
<li><strong>Varnish</strong>:一个高性能的 HTTP 加速器和缓存服务器,广泛用于 Web 应用程序的性能优化。</li>
|
|||
|
</ul>
|
|||
|
<h3 id="tcpip-优化">TCP/IP 优化<a aria-hidden="true" tabindex="-1" href="#tcpip-优化" class="internal"> §</a></h3>
|
|||
|
<p>TCP/IP 优化包括调整 TCP 拥塞控制算法、修改最大传输单元(MTU)、调整 Nagle 算法等,以提高网络性能和传输速度。Linux 系统提供了多种工具和设置来优化 TCP/IP 性能。</p>
|
|||
|
<ul>
|
|||
|
<li><strong>修改内核参数</strong>:通过调整 <code>/proc/sys/net/ipv4/</code> 目录下的内核参数,如 <code>tcp_wmem</code>、<code>tcp_rmem</code> 和 <code>tcp_congestion_control</code>,以优化 TCP 性能。</li>
|
|||
|
<li><strong>调整 MTU</strong>:修改网卡的 MTU 设置,以适应网络环境和提高传输效率。</li>
|
|||
|
<li><strong>禁用 Nagle 算法</strong>:通过设置 <code>TCP_NODELAY</code> 选项,关闭 Nagle 算法以减小传输延迟。</li>
|
|||
|
</ul>
|
|||
|
<h3 id="cdn内容分发网络">CDN(内容分发网络)<a aria-hidden="true" tabindex="-1" href="#cdn内容分发网络" class="internal"> §</a></h3>
|
|||
|
<p>内容分发网络(CDN)是一种用于分发静态内容的技术,通过在全球范围内部署多个数据中心,将内容缓存到离用户最近的节点,从而提高访问速度和减轻源服务器负担。CDN 广泛应用于 Web 应用程序和大型网站,以提供优质的用户体验。</p>
|
|||
|
<ul>
|
|||
|
<li><strong>Akamai</strong>:全球最大的 CDN 服务商,提供广泛的网络加速和安全解决方案。</li>
|
|||
|
<li><strong>Cloudflare</strong>:一家提供 CDN 和网络安全服务的公司,帮助网站加速和保护其内容。</li>
|
|||
|
<li><strong>Amazon CloudFront</strong>:亚马逊提供的全球内容分发服务,与其他 AWS 服务紧密集成。</li>
|
|||
|
</ul>
|
|||
|
<h2 id="网络安全">网络安全<a aria-hidden="true" tabindex="-1" href="#网络安全" class="internal"> §</a></h2>
|
|||
|
<h3 id="网络故障排查与诊断">网络故障排查与诊断<a aria-hidden="true" tabindex="-1" href="#网络故障排查与诊断" class="internal"> §</a></h3>
|
|||
|
<p>Linux 系统提供了一系列工具来帮助用户进行网络故障排查与诊断,包括 <code>ping</code>、<code>traceroute</code>、<code>mtr</code>、<code>nslookup</code>、<code>dig</code> 和 <code>whois</code> 等。</p>
|
|||
|
<ul>
|
|||
|
<li><strong>ping</strong>:用于检测网络连接和延迟,通过发送 ICMP 数据包来检测目标主机是否可达。</li>
|
|||
|
<li><strong>traceroute</strong>:用于显示数据包从源主机到目标主机经过的路由路径。</li>
|
|||
|
<li><strong>mtr</strong>:结合了 <code>ping</code> 和 <code>traceroute</code> 功能的网络诊断工具,提供实时路由分析。</li>
|
|||
|
<li><strong>nslookup</strong>:用于查询 DNS 服务器以获取域名解析信息。</li>
|
|||
|
<li><strong>dig</strong>:功能强大的 DNS 查询工具,可以获取详细的 DNS 记录信息。</li>
|
|||
|
<li><strong>whois</strong>:用于查询域名注册信息和 IP 地址分配信息。</li>
|
|||
|
</ul>
|
|||
|
<h3 id="安全隔离">安全隔离<a aria-hidden="true" tabindex="-1" href="#安全隔离" class="internal"> §</a></h3>
|
|||
|
<p>安全隔离是网络安全的重要概念,可以防止潜在的网络攻击和数据泄露。主要实现技术包括 VLAN、DMZ 和容器网络隔离。</p>
|
|||
|
<ul>
|
|||
|
<li><strong>VLAN (Virtual Local Area Network)</strong>:通过在网络交换机上配置 VLAN,可以将物理网络划分为多个逻辑子网,实现网络资源的安全隔离。</li>
|
|||
|
<li><strong>DMZ (Demilitarized Zone)</strong>:一种网络安全策略,通过在内部网络和外部网络之间建立一个隔离区域,保护内部网络资源免受外部攻击。</li>
|
|||
|
<li><strong>容器网络隔离</strong>:通过使用容器技术(如 Docker、Kubernetes)和虚拟网络(如 Calico、Flannel)来实现应用程序的安全隔离。</li>
|
|||
|
</ul>
|
|||
|
<h3 id="ssh-安全配置">SSH 安全配置<a aria-hidden="true" tabindex="-1" href="#ssh-安全配置" class="internal"> §</a></h3>
|
|||
|
<p>SSH 是远程登录和管理 Linux 系统的常用协议。正确配置 SSH 可以提高系统的安全性。</p>
|
|||
|
<ul>
|
|||
|
<li><strong>密钥认证</strong>:使用公钥/私钥对进行身份验证,替代密码认证,提高安全性。</li>
|
|||
|
<li><strong>端口改变</strong>:将 SSH 服务端口从默认的 22 更改为其他端口,降低被扫描和攻击的风险。</li>
|
|||
|
<li><strong>禁止 root 登录</strong>:禁止直接通过 SSH 以 root 身份登录,减少被攻击者利用的可能性。</li>
|
|||
|
<li><strong>防止暴力破解</strong>:通过限制登录尝试次数、使用防火墙规则或安装防暴力破解软件(如 Fail2Ban)来防止暴力破解攻击。</li>
|
|||
|
</ul>
|
|||
|
<h3 id="虚拟化网络">虚拟化网络<a aria-hidden="true" tabindex="-1" href="#虚拟化网络" class="internal"> §</a></h3>
|
|||
|
<p>虚拟化网络是在物理网络基础上创建虚拟网络资源的技术,包括虚拟网卡、虚拟交换机、网桥和 SDN(软件定义网络)等。</p>
|
|||
|
<ul>
|
|||
|
<li><strong>虚拟网卡</strong>:在虚拟机和容器中模拟的网络接口,与物理网卡类似,可用于建立虚拟网络连接。</li>
|
|||
|
<li><strong>虚拟交换机</strong>:在虚拟环境中实现网络连接和数据包转发的虚拟设备。</li>
|
|||
|
<li><strong>网桥</strong>:用于连接虚拟网络和物理网络,实现虚拟机与外部网络通信。</li>
|
|||
|
<li><strong>SDN</strong>:一种将网络控制平面与数据平面分离的技术,允许通过软件实现网络资源的动态配置和管理。</li>
|
|||
|
</ul>
|
|||
|
<h3 id="网络监测和分析">网络监测和分析<a aria-hidden="true" tabindex="-1" href="#网络监测和分析" class="internal"> §</a></h3>
|
|||
|
<p>网络监测和分析工具可以帮助管理员实时监控网络状况、发现异常行为和安全威胁。常用工具包括 <code>tcpdump</code>、<code>Wireshark</code>、<code>netstat</code>、<code>nmap</code>、<code>sniffing</code>、<code>IDS</code> 和 <code>NMS</code> 等。</p>
|
|||
|
<ul>
|
|||
|
<li><strong>tcpdump</strong>:用于捕获和分析网络数据包的命令行工具。</li>
|
|||
|
<li><strong>Wireshark</strong>:一个图形界面的网络协议分析器。</li>
|
|||
|
<li><strong>netstat</strong>:用于显示网络连接状态和监听端口的命令行工具。</li>
|
|||
|
<li><strong>nmap</strong>:一款强大的网络扫描和安全审计工具。</li>
|
|||
|
</ul>
|
|||
|
<h3 id="网络入侵检测系统ids">网络入侵检测系统(IDS)<a aria-hidden="true" tabindex="-1" href="#网络入侵检测系统ids" class="internal"> §</a></h3>
|
|||
|
<p>网络入侵检测系统(Intrusion Detection System,IDS)可以检测网络中的恶意行为和攻击活动。常见的 IDS 工具包括 Snort、Suricata、OSSEC 和 Bro/Zeek。</p>
|
|||
|
<ul>
|
|||
|
<li><strong>Snort</strong>:一款开源的网络入侵检测和防御系统,基于规则匹配和异常检测来识别恶意流量。</li>
|
|||
|
<li><strong>Suricata</strong>:一个高性能的开源 IDS/IPS/NSM(网络安全监控)引擎,支持实时流量分析和威胁防御。</li>
|
|||
|
<li><strong>OSSEC</strong>:一个开源的主机入侵检测系统,用于监控文件系统、日志文件和网络活动。</li>
|
|||
|
<li><strong>Bro/Zeek</strong>:一款强大的网络安全监控平台,支持实时流量分析、协议解析和异常检测。</li>
|
|||
|
</ul>
|
|||
|
<h3 id="网络安全监控系统nms">网络安全监控系统(NMS)<a aria-hidden="true" tabindex="-1" href="#网络安全监控系统nms" class="internal"> §</a></h3>
|
|||
|
<p>网络安全监控系统(Network Monitoring System,NMS)用于实时监控网络设备和服务的运行状况,发现性能问题和安全威胁。常见的 NMS 工具包括 Nagios、Zabbix、Cacti、Prometheus 和 Grafana。</p>
|
|||
|
<ul>
|
|||
|
<li><strong>Nagios</strong>:一款功能强大的开源网络监控系统,支持多种插件和扩展,用于监控网络设备、服务和应用程序。</li>
|
|||
|
<li><strong>Zabbix</strong>:一种企业级的开源监控解决方案,提供分布式监控、报警和报表功能。</li>
|
|||
|
<li><strong>Cacti</strong>:一个基于 RRDtool 的网络图形监控工具,用于绘制网络设备性能图表。</li>
|
|||
|
<li><strong>Prometheus</strong>:一个开源的监控和告警系统,广泛用于监控微服务和容器化应用程序。</li>
|
|||
|
<li><strong>Grafana</strong>:一个流行的开源监控数据可视化工具,支持多种数据源,如 Prometheus、InfluxDB 和 Elasticsearch 等。</li>
|
|||
|
</ul>
|
|||
|
<h3 id="网络安全审计系统">网络安全审计系统<a aria-hidden="true" tabindex="-1" href="#网络安全审计系统" class="internal"> §</a></h3>
|
|||
|
<p>网络安全审计系统用于评估网络设备和应用程序的安全性,发现潜在的漏洞和配置问题。常见的安全审计工具包括 OSSEC、Tripwire、AIDE、OpenSCAP 和 Lynis。</p>
|
|||
|
<ul>
|
|||
|
<li><strong>OSSEC</strong>:一个开源的主机入侵检测系统,也可以用于安全审计和配置检查。</li>
|
|||
|
<li><strong>Tripwire</strong>:一款用于文件完整性检查和安全审计的工具,可以检测文件的变更和潜在的安全问题。</li>
|
|||
|
<li><strong>AIDE (Advanced Intrusion Detection Environment)</strong>:一个用于文件完整性检查和入侵检测的开源工具。</li>
|
|||
|
<li><strong>OpenSCAP (Open Security Content Automation Protocol)</strong>:一个开源的安全配置和漏洞管理框架,基于 SCAP 标准实现。</li>
|
|||
|
<li><strong>Lynis</strong>:一个开源的安全审计和硬化工具,用于检查 Linux 系统的配置和安全性。</li>
|
|||
|
</ul>
|
|||
|
<h3 id="网络加密技术">网络加密技术<a aria-hidden="true" tabindex="-1" href="#网络加密技术" class="internal"> §</a></h3>
|
|||
|
<p>网络加密技术用于保护数据在传输过程中的隐私和完整性。主要的网络加密技术包括 SSL/TLS、IPSec、SSH 等。</p>
|
|||
|
<ul>
|
|||
|
<li><strong>SSL/TLS</strong>:安全套接层(Secure Sockets Layer,SSL)和传输层安全(Transport Layer Security,TLS)是应用于网络传输层的加密技术,用于保护 Web 浏览、电子邮件和其他应用程序的数据安全。</li>
|
|||
|
<li><strong>IPSec</strong>:Internet 协议安全(IP Security,IPSec)是一个用于保护 IP 数据包传输安全的协议套件,提供加密、认证和完整性保护功能。IPSec 广泛应用于 VPN 技术中。</li>
|
|||
|
<li><strong>SSH</strong>:安全外壳(Secure Shell,SSH)是一种加密网络协议,用于在不安全的网络环境中实现安全的远程登录、文件传输和其他网络服务。</li>
|
|||
|
</ul>
|
|||
|
<h3 id="安全认证和授权">安全认证和授权<a aria-hidden="true" tabindex="-1" href="#安全认证和授权" class="internal"> §</a></h3>
|
|||
|
<p>安全认证和授权技术用于验证用户身份和控制用户访问权限。主要技术包括 RADIUS、TACACS+、LDAP、Kerberos 等。</p>
|
|||
|
<ul>
|
|||
|
<li><strong>RADIUS</strong>:远程认证拨号用户服务(Remote Authentication Dial-In User Service,RADIUS)是一个用于 AAA(认证、授权和计费)的网络协议,广泛应用于网络接入和 VPN 服务中。</li>
|
|||
|
<li><strong>TACACS+</strong>:终端访问控制器访问控制系统 +(Terminal Access Controller Access-Control System+,TACACS+)是一种用于网络设备管理的 AAA 协议,主要应用于路由器、交换机等网络设备的远程管理。</li>
|
|||
|
<li><strong>LDAP</strong>:轻型目录访问协议(Lightweight Directory Access Protocol,LDAP)是一种用于访问和维护分布式目录信息服务的协议,常用于企业网络的用户认证和组织结构管理。</li>
|
|||
|
<li><strong>Kerberos</strong>:一种基于票据的网络认证协议,用于实现单点登录(Single Sign-On,SSO)和安全的跨域认证。</li>
|
|||
|
</ul>
|
|||
|
<h3 id="网络安全策略和最佳实践">网络安全策略和最佳实践<a aria-hidden="true" tabindex="-1" href="#网络安全策略和最佳实践" class="internal"> §</a></h3>
|
|||
|
<p>为了提高网络安全,企业和组织需要制定和实施合适的网络安全策略,并遵循最佳实践。</p>
|
|||
|
<ul>
|
|||
|
<li>制定并执行网络安全政策:明确网络资源的访问控制、数据保护和应急响应等方面的要求。</li>
|
|||
|
<li>定期进行安全审计和漏洞扫描:检查网络设备和应用程序的安全配置,发现并修复潜在的安全漏洞。</li>
|
|||
|
<li>提高员工安全意识:通过培训和教育,提高员工对网络安全的认识,防止误操作和内部威胁。</li>
|
|||
|
</ul></article></div><div class="right sidebar"><div class="graph "><h3>Graph View</h3><div class="graph-outer"><div id="graph-container" data-cfg="{"drag":true,"zoom":true,"depth":1,"scale":1.1,"repelForce":0.5,"centerForce":0.3,"linkDistance":30,"fontSize":0.6,"opacityScale":1,"showTags":true,"removeTags":[]}"></div><svg version="1.1" id="global-graph-icon" xmlns="http://www.w3.org/2000/svg" xmlnsXlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 55 55" fill="currentColor" xmlSpace="preserve"><path d="M49,0c-3.309,0-6,2.691-6,6c0,1.035,0.263,2.009,0.726,2.86l-9.829,9.829C32.542,17.634,30.846,17,29,17
|
|||
|
s-3.542,0.634-4.898,1.688l-7.669-7.669C16.785,10.424,17,9.74,17,9c0-2.206-1.794-4-4-4S9,6.794,9,9s1.794,4,4,4
|
|||
|
c0.74,0,1.424-0.215,2.019-0.567l7.669,7.669C21.634,21.458,21,23.154,21,25s0.634,3.542,1.688,4.897L10.024,42.562
|
|||
|
C8.958,41.595,7.549,41,6,41c-3.309,0-6,2.691-6,6s2.691,6,6,6s6-2.691,6-6c0-1.035-0.263-2.009-0.726-2.86l12.829-12.829
|
|||
|
c1.106,0.86,2.44,1.436,3.898,1.619v10.16c-2.833,0.478-5,2.942-5,5.91c0,3.309,2.691,6,6,6s6-2.691,6-6c0-2.967-2.167-5.431-5-5.91
|
|||
|
v-10.16c1.458-0.183,2.792-0.759,3.898-1.619l7.669,7.669C41.215,39.576,41,40.26,41,41c0,2.206,1.794,4,4,4s4-1.794,4-4
|
|||
|
s-1.794-4-4-4c-0.74,0-1.424,0.215-2.019,0.567l-7.669-7.669C36.366,28.542,37,26.846,37,25s-0.634-3.542-1.688-4.897l9.665-9.665
|
|||
|
C46.042,11.405,47.451,12,49,12c3.309,0,6-2.691,6-6S52.309,0,49,0z M11,9c0-1.103,0.897-2,2-2s2,0.897,2,2s-0.897,2-2,2
|
|||
|
S11,10.103,11,9z M6,51c-2.206,0-4-1.794-4-4s1.794-4,4-4s4,1.794,4,4S8.206,51,6,51z M33,49c0,2.206-1.794,4-4,4s-4-1.794-4-4
|
|||
|
s1.794-4,4-4S33,46.794,33,49z M29,31c-3.309,0-6-2.691-6-6s2.691-6,6-6s6,2.691,6,6S32.309,31,29,31z M47,41c0,1.103-0.897,2-2,2
|
|||
|
s-2-0.897-2-2s0.897-2,2-2S47,39.897,47,41z M49,10c-2.206,0-4-1.794-4-4s1.794-4,4-4s4,1.794,4,4S51.206,10,49,10z"></path></svg></div><div id="global-graph-outer"><div id="global-graph-container" data-cfg="{"drag":true,"zoom":true,"depth":-1,"scale":0.9,"repelForce":0.5,"centerForce":0.3,"linkDistance":30,"fontSize":0.6,"opacityScale":1,"showTags":true,"removeTags":[]}"></div></div></div><div class="toc desktop-only"><button type="button" id="toc" class><h3>Table of Contents</h3><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="fold"><polyline points="6 9 12 15 18 9"></polyline></svg></button><div id="toc-content"><ul class="overflow"><li class="depth-0"><a href="#网络配置" data-for="网络配置">网络配置</a></li><li class="depth-1"><a href="#网络概念" data-for="网络概念">网络概念</a></li><li class="depth-1"><a href="#ip" data-for="ip">Ip</a></li><li class="depth-1"><a href="#networkmanager" data-for="networkmanager">NetworkManager</a></li><li class="depth-0"><a href="#网络管理" data-for="网络管理">网络管理</a></li><li class="depth-1"><a href="#iptables" data-for="iptables">Iptables</a></li><li class="depth-1"><a href="#nftables" data-for="nftables">Nftables</a></li><li class="depth-1"><a href="#ufw" data-for="ufw">Ufw</a></li><li class="depth-1"><a href="#firewalld" data-for="firewalld">Firewalld</a></li><li class="depth-1"><a href="#iptablesnftablesufwfirewalld-对比" data-for="iptablesnftablesufwfirewalld-对比">iptables、nftables、UFW、firewalld 对比</a></li><li class="depth-0"><a href="#网络优化" data-for="网络优化">网络优化</a></li><li class="depth-1"><a href="#网络带宽管理" data-for="网络带宽管理">网络带宽管理</a></li><li class="depth-1"><a href="#网络质量管理qos" data-for="网络质量管理qos">网络质量管理(QoS)</a></li><li class="depth-1"><a href="#负载均衡" data-for="负载均衡">负载均衡</a></li><li class="depth-1"><a href="#数据压缩" data-for="数据压缩">数据压缩</a></li><li class="depth-1"><a href="#缓存服务" data-for="缓存服务">缓存服务</a></li><li class="depth-1"><a href="#tcpip-优化" data-for="tcpip-优化">TCP/IP 优化</a></li><li class="depth-1"><a href="#cdn内容分发网络" data-for="cdn内容分发网络">CDN(内容分发网络)</a></li><li class="depth-0"><a href="#网络安全" data-for="网络安全">网络安全</a></li><li class="depth-1"><a href="#网络故障排查与诊断" data-for="网络故障排查与诊断">网络故障排查与诊断</a></li><li class="depth-1"><a href="#安全隔离" data-for="安全隔离">安全隔离</a></li><li class="depth-1"><a href="#ssh-安全配置" data-for="ssh-安全配置">SSH 安全配置</a></li><li class="depth-1"><a href="#虚拟化网络" data-for="虚拟化网络">虚拟化网络</a></li><li class="depth-1"><a href="#网络监测和分析" data-for="网络监测和分析">网络监测和分析</a></li><li class="depth-1"><a href="#网络入侵检测系统ids" data-for="网络入侵检测系统ids">网络入侵检测系统(IDS)</a></li><li class="depth-1"><a href="#网络安全监控系统nms" data-for="网络安全监控系统nms">网络安全监控系统(NMS)</a></li><li class="depth-1"><a href="#网络安全审计系统" data-for="网络安全审计系统">网络安全审计系统</a></li><li class="depth-1"><a href="#网络加密技术" data-for="网络加密技术">网络加密技术</a></li><li class="depth-1"><a href="#安全认证和授权" data-for="安全认证和授权">安全认证和授权</a></li><li class="depth-1"><a href="#网络安全策略和最佳实践" data-for="网络安全策略和最佳实践">网络安全策略和最佳实践</a></li></ul></div></div><div class="backlinks "><h3>Backlinks</h3><ul class="overflow"><li>No backlinks found</li></ul></div
|
|||
|
function toggleCallout() {
|
|||
|
const outerBlock = this.parentElement;
|
|||
|
outerBlock.classList.toggle(`is-collapsed`);
|
|||
|
const collapsed = outerBlock.classList.contains(`is-collapsed`);
|
|||
|
const height = collapsed ? this.scrollHeight : outerBlock.scrollHeight;
|
|||
|
outerBlock.style.maxHeight = height + `px`;
|
|||
|
let current = outerBlock;
|
|||
|
let parent = outerBlock.parentElement;
|
|||
|
while (parent) {
|
|||
|
if (!parent.classList.contains(`callout`)) {
|
|||
|
return;
|
|||
|
}
|
|||
|
const collapsed2 = parent.classList.contains(`is-collapsed`);
|
|||
|
const height2 = collapsed2 ? parent.scrollHeight : parent.scrollHeight + current.scrollHeight;
|
|||
|
parent.style.maxHeight = height2 + `px`;
|
|||
|
current = parent;
|
|||
|
parent = parent.parentElement;
|
|||
|
}
|
|||
|
}
|
|||
|
function setupCallout() {
|
|||
|
const collapsible = document.getElementsByClassName(
|
|||
|
`callout is-collapsible`
|
|||
|
);
|
|||
|
for (const div of collapsible) {
|
|||
|
const title = div.firstElementChild;
|
|||
|
if (title) {
|
|||
|
title.removeEventListener(`click`, toggleCallout);
|
|||
|
title.addEventListener(`click`, toggleCallout);
|
|||
|
const collapsed = div.classList.contains(`is-collapsed`);
|
|||
|
const height = collapsed ? title.scrollHeight : div.scrollHeight;
|
|||
|
div.style.maxHeight = height + `px`;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
document.addEventListener(`nav`, setupCallout);
|
|||
|
window.addEventListener(`resize`, setupCallout);
|
|||
|
</script><script type="module">
|
|||
|
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.esm.min.mjs';
|
|||
|
const darkMode = document.documentElement.getAttribute('saved-theme') === 'dark'
|
|||
|
mermaid.initialize({
|
|||
|
startOnLoad: false,
|
|||
|
securityLevel: 'loose',
|
|||
|
theme: darkMode ? 'dark' : 'default'
|
|||
|
});
|
|||
|
document.addEventListener('nav', async () => {
|
|||
|
await mermaid.run({
|
|||
|
querySelector: '.mermaid'
|
|||
|
})
|
|||
|
});
|
|||
|
</script><script src="https://cdn.jsdelivr.net/npm/katex@0.16.7/dist/contrib/copy-tex.min.js" type="application/javascript"></script><script src="../../../../postscript.js" type="module"></script></html>
|