<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      13_網絡管理進階:防火墻與監控

      網絡管理進階:防火墻與監控

      當 Linux 服務器需要對外提供服務(如 Web、數據庫),或出現 “帶寬莫名跑滿”“端口被占用” 等問題時,僅靠ip addrping已無法應對 —— 此時需要用防火墻管控流量、用監控工具定位異常。今天這篇文章,帶你掌握兩大核心能力:用 iptables/nftables 實現端口過濾與地址轉換,用 iftop/nload/netstat 監控流量與端口,再通過實戰解決端口轉發、帶寬跑滿、端口沖突等高頻問題,讓服務器網絡 “可控、可查、可排障”。

      一、防火墻進階:iptables/nftables 管控流量

      Linux 防火墻的核心是 “過濾或轉發網絡數據包”,傳統用 iptables,新一代用 nftables(性能更強、配置更簡潔)。兩者原理相通,重點掌握 “端口過濾”“SNAT/DNAT 地址轉換”,滿足企業 “對外服務管控”“內網共享上網”“端口轉發” 等需求。

      1. 先分清:iptables 與 nftables 的關系

      對比維度 iptables nftables(推薦) 關鍵差異
      定位 傳統防火墻工具(2001 年發布) 新一代防火墻工具(2014 年發布,替代 iptables) nftables 合并表結構、支持批量規則,性能提升 30%+
      配置文件 /etc/sysconfig/iptables(CentOS)、/etc/iptables/rules.v4(Ubuntu) /etc/nftables.conf nftables 配置更簡潔,支持變量和條件判斷
      依賴 依賴內核模塊(iptable_filter、iptable_nat 等) 僅依賴 nft 內核模塊 減少內核模塊加載,降低系統開銷
      適用場景 老系統兼容、簡單規則配置 新系統(CentOS 8+、Ubuntu 20.04+)、復雜規則 企業新部署服務器優先選 nftables

      注意:同一系統不要同時啟用 iptables 和 nftables,會導致規則沖突,推薦新系統直接用 nftables。

      2. 核心能力 1:端口過濾(允許 / 禁止特定端口訪問)

      端口過濾是防火墻最基礎的功能 —— 比如 “只允許外部訪問 80(HTTP)、443(HTTPS)端口,禁止訪問 22(SSH)端口(僅允許內網 IP 訪問)”。

      (1)用 iptables 配置端口過濾(CentOS 7 示例)

      \# 1. 清空現有規則(首次配置前執行,避免沖突)
      
      sudo iptables -F  # 清空filter表規則
      
      sudo iptables -t nat -F  # 清空nat表規則(地址轉換用)
      
      \# 2. 配置默認策略(先拒絕所有,再允許特定流量,遵循“最小權限”)
      
      sudo iptables -P INPUT DROP  # 默認拒絕所有入站流量
      
      sudo iptables -P OUTPUT ACCEPT  # 默認允許所有出站流量
      
      sudo iptables -P FORWARD DROP  # 默認拒絕轉發(非路由器場景)
      
      \# 3. 允許回環網卡(本地進程通信必需,如127.0.0.1)
      
      sudo iptables -A INPUT -i lo -j ACCEPT
      
      \# 4. 允許已建立的連接(避免已連接的SSH/HTTP會話被斷開)
      
      sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
      
      \# 5. 允許外部訪問80(HTTP)、443(HTTPS)端口
      
      sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
      
      sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
      
      \# 6. 僅允許內網IP(192.168.1.0/24)訪問22(SSH)端口
      
      sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT
      
      \# 7. 查看規則(驗證配置)
      
      sudo iptables -L -n  # -n:IP顯示為數字,不反向解析(更快)
      

      (2)用 nftables 配置端口過濾(CentOS 9 示例)

      nftables 用 “表 - 鏈 - 規則” 結構,配置更簡潔:

      \# 1. 清空現有規則并創建表(inet表示同時支持IPv4和IPv6)
      
      sudo nft flush ruleset
      
      sudo nft add table inet filter
      
      sudo nft add chain inet filter input { type filter hook input priority 0 \\; policy drop \\; }
      
      sudo nft add chain inet filter output { type filter hook output priority 0 \\; policy accept \\; }
      
      sudo nft add chain inet filter forward { type filter hook forward priority 0 \\; policy drop \\; }
      
      \# 2. 允許回環網卡和已建立連接
      
      sudo nft add rule inet filter input iifname lo accept
      
      sudo nft add rule inet filter input ct state established,related accept
      
      \# 3. 允許80、443端口,僅內網訪問22端口
      
      sudo nft add rule inet filter input tcp dport {80,443} accept
      
      sudo nft add rule inet filter input tcp dport 22 ip saddr 192.168.1.0/24 accept
      
      \# 4. 查看規則
      
      sudo nft list ruleset
      

      3. 核心能力 2:SNAT/DNAT 地址轉換(共享上網與端口轉發)

      地址轉換是企業組網的關鍵功能:SNAT(源地址轉換) 實現內網多設備共享一個公網 IP 上網,DNAT(目的地址轉換) 實現 “外部訪問公網 IP 的 80 端口,自動轉發到內網服務器的 8080 端口”(即端口轉發)。

      (1)SNAT 配置(內網共享公網 IP,iptables 示例)

      場景:內網 192.168.1.0/24 的設備,通過 Linux 服務器的公網網卡(eth0,IP:203.0.113.10)共享上網。

      \# 1. 開啟內核IP轉發(臨時生效)
      
      sudo echo 1 > /proc/sys/net/ipv4/ip\_forward
      
      \# 永久生效:編輯/etc/sysctl.conf,添加“net.ipv4.ip\_forward=1”,再執行sudo sysctl -p
      
      \# 2. 配置SNAT規則(將內網源IP轉換為公網IP)
      
      sudo iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 203.0.113.10
      

      (2)DNAT 配置(端口轉發,后續實戰會詳細用)

      場景:外部訪問公網 IP(203.0.113.10)的 80 端口,自動轉發到內網 Tomcat 服務器(192.168.1.100:8080)。

      \# iptables 配置DNAT
      
      sudo iptables -t nat -A PREROUTING -d 203.0.113.10 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:8080
      

      二、網絡監控工具:定位流量異常與端口問題

      當服務器出現 “帶寬跑滿導致服務卡頓”“端口被占用無法啟動服務” 時,需要用監控工具快速定位根源 —— 核心工具包括:iftop(看帶寬占用)、nload(實時流量)、netstat/lsof(查端口占用)。

      1. iftop:可視化查看帶寬占用(誰在 “偷” 帶寬?)

      iftop 能實時顯示 “各 IP 之間的帶寬占用”,適合定位 “哪個 IP / 端口占用過多帶寬”。

      (1)安裝與基礎用法

      \# Ubuntu安裝
      
      sudo apt install iftop -y
      
      \# CentOS安裝
      
      sudo dnf install iftop -y
      
      \# 啟動iftop(默認監控默認網卡,指定網卡加-i參數,如-i eth0)
      
      sudo iftop -i eth0
      

      (2)關鍵界面解讀(啟動后按h顯示幫助)

      界面元素 含義 異常判斷標準
      左側兩列 通信雙方 IP: 端口 某 IP 持續占用>50% 帶寬,且非業務 IP(如爬蟲、異常進程)
      中間列 實時帶寬(Rx:接收,Tx:發送) Rx/Tx 持續>100Mbps(超出服務器帶寬上限)
      右側列 累計帶寬與連接狀態 某連接累計帶寬遠超正常業務(如 1 小時內 100GB)

      (3)常用操作快捷鍵

      • s:切換顯示源 IP;

      • d:切換顯示目的 IP;

      • n:顯示 IP 而非主機名(避免反向解析卡頓);

      • q:退出 iftop。

      2. nload:實時監控網卡流量(上下行趨勢一目了然)

      nload 更側重 “網卡整體流量趨勢”,適合快速查看 “當前總帶寬使用情況”,界面簡潔易讀。

      (1)安裝與基礎用法

      \# Ubuntu安裝
      
      sudo apt install nload -y
      
      \# CentOS安裝
      
      sudo dnf install nload -y
      
      \# 啟動nload(默認監控所有網卡,指定網卡加網卡名,如nload eth0)
      
      sudo nload eth0
      

      (2)界面解讀

      • 上半部分:顯示 “Incoming(入站流量)”,包括實時速度(Curr)、平均速度(Avg)、峰值速度(Peak);

      • 下半部分:顯示 “Outgoing(出站流量)”,指標同上;

      • 右側:顯示網卡 IP 和總流量統計;

      • 操作:按左右箭頭切換網卡,按q退出。

      3. netstat/lsof:排查端口占用(誰占了 8080 端口?)

      當啟動服務時提示 “Address already in use”(端口被占用),用 netstat 或 lsof 能快速找到占用端口的進程 PID。

      (1)netstat 查端口占用(需安裝 net-tools 包)

      \# 安裝net-tools(部分系統默認未安裝)
      
      sudo apt install net-tools -y  # Ubuntu
      
      sudo dnf install net-tools -y  # CentOS
      
      \# 查8080端口的占用情況(-t:TCP端口,-u:UDP端口,-l:監聽中,-n:數字顯示,-p:顯示進程)
      
      sudo netstat -tlnp | grep 8080
      
      \# 輸出示例:tcp        0      0 0.0.0.0:8080            0.0.0.0:\*               LISTEN      1234/java
      
      \# 解讀:PID=1234的java進程(Tomcat)占用8080端口
      

      (2)lsof 查端口占用(功能更強,支持更多過濾)

      \# 安裝lsof(部分系統默認未安裝)
      
      sudo apt install lsof -y  # Ubuntu
      
      sudo dnf install lsof -y  # CentOS
      
      \# 查8080端口的占用進程
      
      sudo lsof -i :8080
      
      \# 輸出示例:COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
      
      \#          java    1234  ubuntu   42u  IPv6  12345      0t0  TCP \*:http-alt (LISTEN)
      
      \# 解讀:java進程(PID=1234)占用8080端口(http-alt是8080的默認服務名)
      

      三、實戰:解決 3 個高頻網絡問題

      結合企業真實場景,拆解端口轉發、帶寬監控、端口占用的完整解決流程。

      實戰 1:配置端口轉發(80 端口轉發到 8080 的 Tomcat)

      場景:內網 Tomcat 服務器(192.168.1.100:8080)需對外提供服務,但運營商封禁 8080 端口,需通過 Linux 網關(公網 IP:203.0.113.10)將 80 端口轉發到 8080。

      步驟 1:開啟內核 IP 轉發(必需)

      \# 臨時開啟
      
      sudo echo 1 > /proc/sys/net/ipv4/ip\_forward
      
      \# 永久開啟(重啟生效)
      
      sudo echo "net.ipv4.ip\_forward=1" >> /etc/sysctl.conf
      
      sudo sysctl -p  # 立即生效
      

      步驟 2:用 iptables 配置 DNAT 規則

      \# 1. 清空nat表現有規則(可選,避免沖突)
      
      sudo iptables -t nat -F
      
      \# 2. 配置DNAT:外部訪問203.0.113.10:80,轉發到192.168.1.100:8080
      
      sudo iptables -t nat -A PREROUTING -d 203.0.113.10 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:8080
      
      \# 3. 配置SNAT(可選,確保Tomcat響應能返回給外部)
      
      sudo iptables -t nat -A POSTROUTING -d 192.168.1.100 -p tcp --dport 8080 -j SNAT --to-source 192.168.1.1(網關內網IP)
      

      步驟 3:驗證轉發效果

      \# 1. 本地驗證(在網關服務器上執行)
      
      curl http://203.0.113.10  # 應返回Tomcat默認頁面(同訪問http://192.168.1.100:8080)
      
      \# 2. 外部驗證(用其他公網機器)
      
      curl http://203.0.113.10  # 同樣返回Tomcat頁面,說明轉發成功
      

      步驟 4:保存 iptables 規則(避免重啟丟失)

      \# CentOS系統
      
      sudo iptables-save > /etc/sysconfig/iptables
      
      \# Ubuntu系統
      
      sudo iptables-save > /etc/iptables/rules.v4
      
      \# 重啟后恢復規則(CentOS)
      
      sudo iptables-restore < /etc/sysconfig/iptables
      

      實戰 2:監控并解決 “帶寬跑滿” 問題

      場景:服務器帶寬為 100Mbps,近期頻繁跑滿,導致 Web 服務卡頓,需定位并處理。

      步驟 1:用 iftop 找到占帶寬的 IP / 端口

      \# 啟動iftop,監控公網網卡eth0
      
      sudo iftop -i eth0 -n  # -n:不解析主機名,速度更快
      

      假設發現 “IP=198.51.100.200” 持續占用 80Mbps 帶寬,且端口為 80(HTTP)。

      步驟 2:用 netstat 找到對應進程

      \# 查與198.51.100.200的80端口連接對應的進程
      
      sudo netstat -tlnp | grep :80
      
      \# 輸出:tcp        0      0 0.0.0.0:80            0.0.0.0:\*               LISTEN      4567/nginx
      
      \# 解讀:Nginx進程(PID=4567)處理80端口連接,198.51.100.200可能是爬蟲或異??蛻舳?

      步驟 3:分析 Nginx 日志,確認是否為異常訪問

      \# 查看Nginx訪問日志(假設日志路徑為/var/log/nginx/access.log)
      
      sudo grep "198.51.100.200" /var/log/nginx/access.log | wc -l
      
      \# 輸出:10000(1分鐘內有1萬次請求,遠超正常用戶,判定為惡意爬蟲)
      

      步驟 4:處理異常訪問(封禁 IP)

      \# 用iptables封禁198.51.100.200
      
      sudo iptables -A INPUT -s 198.51.100.200 -j DROP
      
      \# 驗證:iftop中該IP的帶寬占用降為0,服務器帶寬恢復正常
      

      實戰 3:排查 “Tomcat 端口被占用” 問題

      場景:啟動 Tomcat 時提示 “Failed to start connector [Connector [HTTP/1.1-8080]]: Address already in use”,需解決端口占用。

      步驟 1:用 lsof 找到占用 8080 端口的進程

      sudo lsof -i :8080
      
      \# 輸出:COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
      
      \#          java    7890  ubuntu   42u  IPv6  56789      0t0  TCP \*:http-alt (LISTEN)
      
      \# 解讀:PID=7890的java進程占用8080端口(可能是殘留的Tomcat進程)
      

      步驟 2:關閉占用進程(優先正常關閉,再強制關閉)

      \# 1. 嘗試正常關閉(發送15信號,讓進程保存數據后退出)
      
      sudo kill 7890
      
      \# 2. 等待3秒,驗證端口是否釋放
      
      sudo lsof -i :8080  # 若仍有輸出,執行強制關閉
      
      \# 3. 強制關閉(發送9信號,立即終止,慎用!)
      
      sudo kill -9 7890
      

      步驟 3:驗證端口釋放,重啟 Tomcat

      \# 確認8080端口已釋放
      
      sudo lsof -i :8080  # 無輸出,說明端口釋放
      
      \# 重啟Tomcat
      
      sudo /usr/local/tomcat/bin/startup.sh
      
      \# 驗證:訪問http://localhost:8080,能正常顯示Tomcat頁面
      

      四、進階技巧:保存規則與抓包分析

      1. 技巧 1:保存 iptables 規則(避免重啟丟失)

      不同 Linux 發行版的規則保存路徑不同,需針對性操作:

      系統類型 保存命令 恢復命令 配置文件路徑
      CentOS/RHEL sudo iptables-save > /etc/sysconfig/iptables sudo iptables-restore < /etc/sysconfig/iptables /etc/sysconfig/iptables
      Ubuntu/Debian sudo iptables-save > /etc/iptables/rules.v4 sudo iptables-restore < /etc/iptables/rules.v4 /etc/iptables/rules.v4

      自動化建議:寫定時任務(crontab)每小時保存一次規則,避免意外重啟丟失:

      \# 添加定時任務
      
      sudo crontab -e
      
      \# 添加一行:0 \* \* \* \* /usr/sbin/iptables-save > /etc/sysconfig/iptables  # 每小時保存一次(CentOS)
      

      2. 技巧 2:用 tcpdump 抓包分析異常網絡請求

      當遇到 “客戶端訪問服務超時,但端口通”“頻繁出現 RST 包” 等問題時,用 tcpdump 抓包分析數據包內容,定位異常原因。

      (1)基礎用法:抓 80 端口的 HTTP 請求

      \# 安裝tcpdump
      
      sudo apt install tcpdump -y  # Ubuntu
      
      sudo dnf install tcpdump -y  # CentOS
      
      \# 抓eth0網卡上80端口的TCP請求,保存到文件(便于后續分析)
      
      sudo tcpdump -i eth0 -n tcp port 80 -w http.pcap
      
      \# 選項解讀:
      
      \# -i eth0:監控eth0網卡;
      
      \# -n:不解析IP和端口名;
      
      \# tcp port 80:只抓TCP的80端口;
      
      \# -w http.pcap:保存到http.pcap文件(用Wireshark打開分析)
      

      (2)分析異常請求(如 SYN Flood 攻擊)

      SYN Flood 攻擊會發送大量 SYN 包(建立連接請求),但不回復 ACK,導致服務器連接隊列滿,無法處理正常請求。抓包驗證:

      \# 抓SYN包,統計數量
      
      sudo tcpdump -i eth0 -n tcp port 80 and 'tcp\[tcpflags] & tcp-syn != 0' | wc -l
      
      \# 輸出:5000(10秒內有5000個SYN包,遠超正常,判定為SYN Flood)
      
      \# 處理:開啟iptables的SYN Cookies防護(echo 1 > /proc/sys/net/ipv4/tcp\_syncookies)
      

      五、避坑指南:3 個常見網絡管理誤區

      1. 避坑 1:iptables 規則順序錯誤(先拒絕后允許)

      誤區:先配置 “拒絕所有” 規則,再配置 “允許 80 端口”,導致 80 端口也被拒絕。

      原理:iptables 規則按順序執行,匹配到第一條規則后不再執行后續規則。

      正確順序:先允許 “回環網卡、已建立連接、特定端口”,最后配置默認拒絕:

      \# 正確順序示例
      
      sudo iptables -A INPUT -i lo -j ACCEPT  # 先允許回環
      
      sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT  # 再允許已建立連接
      
      sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT  # 再允許80端口
      
      sudo iptables -P INPUT DROP  # 最后默認拒絕
      

      2. 避坑 2:netstat 提示 “command not found”

      誤區:直接執行netstat -tlnp,提示命令不存在,誤以為系統故障。

      原因:新系統(如 CentOS 8、Ubuntu 20.04)默認不安裝 net-tools 包(netstat 屬于該包)。

      解決:安裝 net-tools 或用 ss 命令(替代 netstat,系統自帶):

      \# 方法1:安裝net-tools
      
      sudo dnf install net-tools -y
      
      \# 方法2:用ss命令(功能類似netstat)
      
      sudo ss -tlnp | grep 8080  # 查8080端口占用
      

      3. 避坑 3:同時啟用 iptables 和 nftables

      誤區:認為 “多一層防火墻更安全”,同時啟用 iptables 和 nftables。

      后果:兩者規則沖突,導致部分流量被錯誤過濾(如 iptables 允許 80 端口,nftables 拒絕 80 端口,最終 80 端口無法訪問)。

      解決:二選一,新系統優先用 nftables,老系統用 iptables,禁用另一個:

      \# 禁用iptables(CentOS)
      
      sudo systemctl stop iptables
      
      sudo systemctl disable iptables
      
      \# 啟用nftables
      
      sudo systemctl start nftables
      
      sudo systemctl enable nftables
      

      總結:網絡管理進階的 “核心能力鏈”

      1. 防火墻管控:用 iptables/nftables 實現 “端口過濾(防非法訪問)、SNAT(內網共享上網)、DNAT(端口轉發)”,構建服務器安全邊界;

      2. 流量監控:iftop 定位 “誰占帶寬”,nload 看 “整體流量趨勢”,netstat/lsof 查 “端口占用”,快速定位異常;

      3. 問題解決:端口轉發靠 DNAT,帶寬跑滿靠 “iftop+iptables 封禁”,端口占用靠 “lsof+kill”,抓包分析靠 tcpdump;

      4. 避坑關鍵:規則順序 “先允許后拒絕”,工具缺失補安裝,防火墻二選一不沖突。

      掌握這些能力,你就能應對企業服務器的大部分網絡問題 —— 從 “被動排查” 變成 “主動管控”,讓服務器網絡既安全又高效。

      posted @ 2025-10-12 18:56  S&L·chuck  閱讀(24)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产亚洲精品2021自在线| 日韩福利片午夜免费观着| 亚洲精品一区二区三区小| 久久精品日日躁夜夜躁| 国产熟睡乱子伦视频在线播放| 日本无产久久99精品久久| 日韩在线视频网| 在线无码免费看黄网站| 亚洲国产青草衣衣一二三区| 亚洲欧洲∨国产一区二区三区| 国产AV无码专区亚洲AWWW| 国产成人精品性色av麻豆| 毛片av在线尤物一区二区| 西西午夜无码大胆啪啪国模| 精品无码成人片一区二区| 一亚洲一区二区中文字幕| 亚洲熟女乱综合一区二区三区| 日本韩国日韩少妇熟女少妇| 久久精品国产久精国产| 无码综合天天久久综合网| 岱山县| 日本亚洲一区二区精品久久| 欧美丰满熟妇xxxx性| 人妻精品动漫H无码中字| 亚洲国产精品线观看不卡| 2021av在线天堂网| 久久88香港三级台湾三级播放| 黄网站色视频免费观看| 国产综合色在线精品| 国产一区二区三区内射高清| 五月婷婷深开心五月天| 精品国产成人亚洲午夜福利| 久久精品高清一区二区三区| 国产粉嫩学生高清专区麻豆| 国产精品区一区第一页| 久久97人人超人人超碰超国产| 人妻少妇偷人精品免费看| 色猫咪av在线观看| 亚洲天堂领先自拍视频网| 日本高清在线观看WWW色| 人妻系列无码专区69影院|