Linux 網橋實現和網路診斷工具

来源:https://www.cnblogs.com/heyongshen/archive/2022/07/09/16461801.html
-Advertisement-
Play Games

網橋:和交換機工作原理一樣的一個硬體。 網橋內部有一個緩存,裡面放了介面和mac地址的對應關係。 橋接、NAT和僅主機模式: NAT網卡(vmnet8):相當於一個虛擬的集線器(Vmnet8),兩台使用nat模式的虛擬機能夠通信,是因為它都連接到了這個集線器(hub)上面。windows裡面本省就生 ...


網橋:和交換機工作原理一樣的一個硬體。
網橋內部有一個緩存,裡面放了介面和mac地址的對應關係。

橋接、NAT和僅主機模式:

NAT網卡(vmnet8):相當於一個虛擬的集線器(Vmnet8),兩台使用nat模式的虛擬機能夠通信,是因為它都連接到了這個集線器(hub)上面。windows裡面本省就生成了一個交割vmnet8的網卡,vmnet8上面的地址是第一個ip地址。這個虛擬的網卡和虛擬的hub也是連接在一起的。所以windows和虛擬機、虛擬機和虛擬機之間能通信。
image

僅主機網卡(vmnet1):配置了僅主機模式的虛擬機都會連接到僅主機這個hub上面。windows裡面也有一個虛擬的網卡(vmnet1)(首地址)。
image

僅主機不能連通外網。(虛擬機之間和物理機之間通信)

橋接網卡(vmnet0):也相當於一個hub,物理機上有一個本地的物理網卡(真正的網卡),上面配了一個地址,這個網卡連接到vmnet0這個hub上面,如果有網卡是橋接模式,那麼他就會連接到這個hub上面。
image

橋接:

把兩個網路用網橋把他們連接起來。

環境準備:

image

圖中兩個交換機之間沒有任何連接的話,是無法保證通信的。
現在連接一個電腦,電腦兩端都有網卡,此時A和B之間也無法通信,因為這不是一個hub或交換機。因為電腦收到數據報文後,發現目標地址不是他,就直接丟棄了。

讓A和B通信的方法:

方法一:

把這個電腦配置為路由器(但是左右兩邊的網段一樣,所以不行。路由器是連接兩個不同網段的)

方法二:

把電腦想象成一個網橋或交換機。所以把這個電腦配置成網橋或者交換機便可實現通信。
這個電腦配地址的原因:是為了方便我們進行管理,並不是為了實現A和B的通信需要配地址。(傻瓜交換機,插電即用)

把某台電腦配置為網橋的方法:

#通過命令配置的網橋是臨時生效
#1. 安裝對應工具包
yum install bridge-utils (只用centos6、7上面有,8上面已經淘汰了)

#2. 添加網橋
brctl addbr br0
#3.把對應的網卡加入到網橋裡面去

#3. 添加網橋中網卡
brctl addif br0 eth0(物理網卡)
brctl addif br0 eth1(物理網卡)

#4. 啟動這個網橋
ifconfig br0 up 或 ip link set br0 up  #預設br0 是down,必須啟用
#刪除橋接
brctl a delbr br0


nmcli命令創建軟體網橋

#1創建網橋
nmcli con add type bridge con-name br0 ifname br0
#給網橋加地址可以不加,不過為了方便管理加上了地址
nmcli connection modify br0 ipv4.addresses 10.0.0.100/24 ipv4.method manual  
#啟用這個網橋
nmcli con up br0


#2加入物理網卡到網橋裡面
nmcli  con add type bridge-slave con-name br0-port0 ifname eth0 master br0 
nmcli  con add type bridge-slave con-name br0-port1 ifname eth1 master br0 

nmcli  con up br0-port0 #啟動物理網卡
nmcli  con up br0-port1 #啟動物理網卡

#3 會自動在網卡配置文件裡面生成若幹個配置
cat  /etc/sysconfig/network-scripts/ifcfg-br0 DEVICE=br0
STP=yes
TYPE=Bridge
BOOTPROTO=static
IPADDR=10.0.0.100
PREFIX=24

cat /etc/sysconfig/network-scripts/ifcfg-br0-port0 TYPE=Ethernet
NAME=br0-port0
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0
UUID=23f41d3b-b57c-4e26-9b17-d5f02dafd12d

#啟用STP
brctl stp br0 on

網路測試診斷工具

#測試網路連通性
ping 
#顯示正確的路由表
ip route
route
#跟蹤路由
traceroute
tracepath
mtr
#確定名稱伺服器使用
nslookup
host
dig
#抓包工具
tcpdump 
wireshark
#安全掃描工具
nmap
netcat :網路界的瑞士軍刀,即nc

fping:測試網路通暢的一個工具。ping命令的增強版。

tcpdump:抓包工具。

支持針對網路層、協議、主機、網路或埠的過濾。並提供and、or、not等邏輯語句幫助去除無用的信息。

選項:

  • -i<網路介面> 表示對哪個網卡進行抓包

  • -n 以數字方式顯示,不把ip地址轉換成名字(顯示ip而不是主機名)

  • -nn 不把協議和埠號轉化成名字(比如22埠,不屑nn顯示的就是ssh)

  • -t 不顯示每個數據包前面的時間戳

  • -c 指定一共要抓幾個數據包

關鍵字:

  • dst IP:表示要抓取目標地址是xxx的包

  • src IP:抓取源地址是xx的數據包

  • host ip:抓取指定主機發送或者接收的數據包

  • port xx:抓取指定埠的數據包

  • udp:抓取協議類型是udp的包

  • tcp:抓取協議類型是tcp的包

  • icmp:抓取協議類型是icmp的包

tcpdump使用範例

#查看網卡的信息:
tcpdump -D

#如果不加任何參數,則檢測的是第一塊網卡上流經的數據包
tcpdump

#監聽指定的網卡
ecpdump -i 網卡名

#監聽指定主機的數據包
#例如:監聽主機10.0.0.100 的通信包,註意:出、入的包都會被監聽
tcpdump host 10.0.0.100


#特定來源地址的通信
tcpdump src host hostname
#特定目標地址的通信
tcpdump dst host hostname
#如果不指定src跟dst,那麼來源或者目標是hostname的通信都會被監聽
tcpdump host hostname

#監聽特定埠
tcpdump port 3000

#監聽TCP/UDP的數據包
tcpdump tcp或 tcpdump udp

#監聽特定主機之間的通信
tcpdump ip host 10.0.0.101 and 10.0.0.102

nmap:探測網路的連通性

#查看主機當前開放的埠
nmap localhost 

#探測目標主機開放的埠
nmap -PS 10.0.0.1

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 作為一項古老的智力游戲,千百年來迷宮都散髮著迷人的魅力。但是,手工設計迷宮費時又耗(腦)力,於是,我們有必要製作一個程式:迷宮生成器…… 好吧,我編不下去了。但是,從上面的文字中,我們可以看出,我們此次的主題是:用Python實現一個迷宮生成器。 首先展示一下效果圖: 我們先分析一下所需的庫: 既然 ...
  • ReentrantLock 1 這篇還是接著ReentrantLock的公平鎖,沒看過第0篇的可以先去看上一篇https://www.cnblogs.com/sunankang/p/16456342.html 這篇就以問題為導向,先提出問題,然後根據問題去看代碼 確保能喚醒排隊的線程? A,B兩線程 ...
  • 輸入與輸出 讀取輸入 要想通過控制台進行輸入,首先需要構造一個與"標準輸入流"System.in關聯的Scanner對象。 // 創建輸入流對象 Scanner in = new Scanner(System.in); 現在,就可以使用Scanner類的各種方法讀取輸入了。例如,nextLine方法 ...
  • string常用庫函數 string的庫函數非常多,若全部掌握是非常耗時間的,但是我們只需要掌握常用,重要的庫函數即可,不常用的只需瞭解下即可,需要時,上C++標準官方庫查找。 這裡列舉出本篇說明的函數 insert、erase、swap、c_str、find、rfind、substr、getlin ...
  • 緊接上文,我們分析了Nacos的客戶端代碼, 今天我們再來試一下服務端 ,至此就可以Nacos源碼就告一段落,歡迎大家品鑒。 nacos服務端 註冊中心服務端的主要功能包括,接收客戶端的服務註冊,服務發現,服務下線的功能,但是除了這些和客戶端的交互之外,服務端還要做一些更重要的事情,就是我們常常會在 ...
  • 1. mysql的資料庫連接 step1:首先需要在代碼中添加Mysql.Data的代碼依賴。如果添加失敗則需要去搜索下載安裝!如下圖:代碼導入using MySql.Data.MySqlClient; step2:建立連接//設置連接基本參數 string connStr = "server = ...
  • .NET中間件以及VUE攔截器聯合使用 工作中遇見的問題,邊學邊弄,記錄一下 Vue的UI庫使用的是antvue 3.2.9版本的。 業務邏輯 特性 //特性 public class ModelEsignNameAttribute : Attribute { public ModelEsignNa ...
  • 主機名 查看主機名: hostname cat /etc/hostname 。。。 修改主機名: hostnamectl set-hostname xxx (和centos7、8一樣), #主機名最終存放在`/etc/hostname`下麵。 網卡名稱 命名方式和centos7的命名方式類似。 修改 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...