1. 程式人生 > >記一次Multicast DNS(mdns)的問題-(linux 下ifconfig)

記一次Multicast DNS(mdns)的問題-(linux 下ifconfig)

前言:近期在查詢mdns的問題過程一波三折,問題總結下來可以分為三塊,都是比較基礎性的問題:

1.閘道器ifconfig查詢地址

2.多個程式同時佔用一個埠號佔用編碼問題

3.mdns協議及實現原始碼

mdns是用於區域網發現的一種協議,閘道器搭載的linux系統,首先得確定其使用的是哪個地址作為通訊,說一個最簡單的指令:ifconfig,雖然早就知道這個指令,但是其實這個指令包含比較多的基礎知識。

用我使用的openwrt路由器輸入ifconfig:

br-lan    Link encap:Ethernet  HWaddr 04:A1:51:9A:03:67  
          inet addr:198.100.100.1  Bcast:198.100.100.255  Mask:255.255.255.0
          inet6 addr: fdbb:e076:9029::1/60 Scope:Global
          inet6 addr: fe80::6a1:51ff:fe9a:367/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:37358673 errors:0 dropped:0 overruns:0 frame:0
          TX packets:49805372 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:10001210378 (9.3 GiB)  TX bytes:49536338006 (46.1 GiB)

eth0      Link encap:Ethernet  HWaddr BE:7F:7D:5D:09:D9  
          inet6 addr: fe80::bc7f:7dff:fe5d:9d9/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:71274265 errors:0 dropped:0 overruns:383 frame:0
          TX packets:67972711 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:23375869 (22.2 MiB)  TX bytes:4047624223 (3.7 GiB)
          Interrupt:4 

eth0.1    Link encap:Ethernet  HWaddr BE:7F:7D:5D:09:D9  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:27485423 errors:0 dropped:0 overruns:0 frame:0
          TX packets:32246955 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:8388027931 (7.8 GiB)  TX bytes:32142311436 (29.9 GiB)

eth0.2    Link encap:Ethernet  HWaddr 04:A1:51:9A:03:68  
          inet addr:193.168.1.125  Bcast:193.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::6a1:51ff:fe9a:368/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:43788842 errors:0 dropped:0 overruns:0 frame:0
          TX packets:35727507 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:46186987470 (43.0 GiB)  TX bytes:10288278423 (9.5 GiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:10489 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10489 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1066479 (1.0 MiB)  TX bytes:1066479 (1.0 MiB)

wlan0     Link encap:Ethernet  HWaddr 04:A1:51:9A:03:67  
          inet6 addr: fe80::6a1:51ff:fe9a:367/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4839004 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5852922 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:670518236 (639.4 MiB)  TX bytes:1589348208 (1.4 GiB)

wlan1     Link encap:Ethernet  HWaddr 04:A1:51:9A:03:69  
          inet6 addr: fe80::6a1:51ff:fe9a:369/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5443036 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9474688 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1115674576 (1.0 GiB)  TX bytes:1268032438 (1.1 GiB)

此處br-lan,eth0,eth0.1…代表的是什麼意思呢?


通過查閱(此處推薦片尾部落格),知道了其實在系統檔案(network ,wireless)中針對有線和無線早有配置。

[email protected]:/etc/config# cat network 

config interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option ula_prefix 'fdbb:e076:9029::/48'

config interface 'lan'
        option ifname 'eth0.1'
        option force_link '1'
        option type 'bridge'
        option proto 'static'
        option netmask '255.255.255.0'
        option ip6assign '60'
        option macaddr '04:a1:51:9a:03:67'
        option ipaddr '198.100.100.1'

config interface 'wan'
        option ifname 'eth0.2'
        option proto 'dhcp'
        option macaddr '04:a1:51:9a:03:68'

config interface 'wan6'
        option ifname 'eth0.2'
        option proto 'dhcpv6'

config switch
        option name 'switch0'
        option reset '1'
        option enable_vlan '1'

config switch_vlan
        option device 'switch0'
        option vlan '1'
        option ports '0t 1 2 3 4'

config switch_vlan
        option device 'switch0'
        option vlan '2'
        option ports '0t 5'

[email protected]
:/etc/config# cat wireless config wifi-device 'radio0' option type 'mac80211' option hwmode '11g' option path 'platform/ar934x_wmac' option htmode 'HT20' option txpower '22' option country 'US' option channel '6' config wifi-device 'radio1' option type 'mac80211' option channel '36' option hwmode '11a' option path 'pci0000:00/0000:00:00.0' option htmode 'HT20' option txpower '14' option country 'US' config wifi-iface option device 'radio1' option network 'lan' option mode 'ap' option ssid 'jthlw-cj5G' option encryption 'psk-mixed' option key '11223344' config wifi-iface option device 'radio0' option mode 'ap' option network 'lan' option ssid 'jthlw-cj' option encryption 'psk-mixed' option key 'cjcjcj12345'

首先貼上一張盜版的openwrt的架構:


閘道器的兩個網絡卡:eth0,eht2分別為一個有線一個無線網絡卡,這是兩個真實的網絡卡,是有對應的mac地址的。

通過配置

config interface 'lan'

       option ifname 'eth0.1'

       option force_link '1'

       option type 'bridge'

       option proto 'static'

       option netmask '255.255.255.0'

       option ip6assign '60'

       option macaddr '04:a1:51:9a:03:67'

       option ipaddr '198.100.100.1'

 

config interface 'wan'

       option ifname 'eth0.2'

       option proto 'dhcp'

       option macaddr '04:a1:51:9a:03:68'

可以看出:eth0是有線網絡卡,eth0.1,eth0.2從上面通過switch虛擬出來,eth0.1對應LAN口,eth0.2對應WAN口,其地址都可以手動修改。

而radio0, radio1對應的是無線網絡卡(2.4G ,5G)

而br-lan是虛擬出來的,用於統一管理LAN

[email protected]:/etc/config# brctl show
bridge name     bridge id               STP enabled     interfaces
br-lan          7fff.04a1519a0367       no              eth0.1
                                                        wlan1
                                                        wlan0

所以可以看出,eth0.2用於WAN口,其上一級的IP為:193.168.1.125;eth0.1用於管理LAN口,子LAN口的IP都由198.100.100.1進行分配。

(以上只是自己對閘道器很淺的一些認識,更多的可以關注下面引用的部落格,並且諸如防火牆(firewall的設定可以參見:、etc/config 下面的firewall檔案)))

參考:


相關推薦

Multicast DNS(mdns)的問題-(linux ifconfig)

前言:近期在查詢mdns的問題過程一波三折,問題總結下來可以分為三塊,都是比較基礎性的問題:1.閘道器ifconfig查詢地址2.多個程式同時佔用一個埠號佔用編碼問題3.mdns協議及實現原始碼mdns是用於區域網發現的一種協議,閘道器搭載的linux系統,首先得確定其使用的

高並發場景.net監控程序數據上報的性能調優

埋點 異步 上下 沒有 表現 上線 部分 技術 求和 最近在和小夥伴們做充電與通信程序的架構遷移。遷移前的架構是,通信程序負責接收來自充電集控設備的數據實時數據,通過Thrift調用後端的充電服務,充電服務收到響應後放到進程的Queue中,然後在管理線程的調度下,啟

grpc arm-hisiv400-linux交叉編譯

時間緊,先大概說明一下,有時間了再補充詳細的說明 grpc 交叉編譯 需要先編譯出pc版的protobuff 和 grpc,安裝到指定的路徑,在做交叉編譯時需要protoc 和grpc_cpp_plugin工具。這兩個工具也也是在編譯時會生成,交叉編譯過程中要遮蔽掉使用交叉

MongoDB效能問題+Linux記憶體管理學習筆記--實體記憶體分配

最近忙著把一個專案從MySQL遷移到MongoDB,在匯入舊資料的過程中,遇到了些許波折,犯了不少錯誤,但同時也學到了不少知識,遂記錄下來。 公司為這個專案專門配備了幾臺高效能務器,清一色的雙路四核超執行緒CPU,外加32G記憶體,運維人員安裝好MongoDB後,就交我手裡了,我習慣於在使用新伺服器前先看

LinuxJavaWeb環境的搭建

上傳 部署 x64 blog 兩個 family cif 解壓 啟動   今天重裝了騰訊雲VPS的系統,那麽幾乎所有運行環境都要重新部署了。過程不難懂,但是也比較繁瑣,這次就寫下來,方便他人也方便自己日後參考參考。   我采用的是JDK+Tomcat的形式來進行Java

linux用git安裝fastadmin的過程

1.安裝寶塔面板,阿里雲配置對應的安全組.在軟體管理介面下載mysql,php,apache,pm2管理器,phpmyadmin.(php版本最好只安裝一個,不然你需要確定你安裝的擴充套件是否安裝在你所選擇的php版本,php -v可以檢視當前預設的php版本) 2.進入網站目錄,clone

問題,linux的檔案格式的問題

今天做的一個功能,需要將mysql中的資料,存入redis中去,使用了管道的命令,將需要儲存的欄位,拼接為redis命令的檔案,然後,利用linux的管道命令,將資料存入redis中去。   cat redis_commend.txt | redis-cli -p 9600

linux串列埠資料丟包解決過程

專案中兩個晶片之間用串列埠進行通訊,由於傳輸格式中有校驗位,在資料量很大的時候總是校驗失敗。於是花了很長的時間最終解決了這個問題。 首先串列埠丟資料有兩種情況(明顯排除傳送端傳送的資料不對),第一種是通道也就是串列埠線或者連線口不行,無法承受很高的波特率(我使用的波特率是9

Linux安裝pyspider的過程

首先執行pip install pyspider此時系統提示Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-Lau0Qp/pycurl/ You are using p

愚蠢的linux環境 nginx apache2 中文路徑亂碼問題 mediawiki中文檔名亂碼

1 使用winscp登入檢視發現檔名稱是中文 沒亂碼配置nginx apache無論什麼都不行,統統亂碼 網上的各種方法都試了 什麼配置charset Lang 等等,都不行場景:把本地檔案通過winscp上傳還是中文這到底怎麼回事?於是編寫java 放伺服器上 列印檔名稱,

linux運維面試問題~l

以及 負載均衡 可執行文件 記錄 固定 lin 公司 比較 均衡 簡介:群友在面試一家公司中,公司出了這樣的一個問題:我有兩組機器,A組機器地址為10.0.1.10到10.0.1.30,B組機器地址為10.0.1.60到10.0.1.90 把本地一個aaa的可執行文件,上傳

LINUX-CRONTAB失敗的排查案例

一段時間 執行 linu linux-c 權限 排查 左右 完成 進行 在LINUX中,使用crontab來做計劃任務是一件很常見的事。本文記錄一次排查過程 故障描述 在crontab 設置計劃任務,每天淩晨3點執行腳本 conrtab(3點)tomcat用戶--執行腳本

糾結的虛擬機Linux網絡配置

ping mysql 目錄修改 安裝 fun 會有 登錄 頁面 sha 要說到為什麽會有這一次網絡配置的問題,還要從配置DNF(遊戲登錄器)開始說,由於Linux服務器是用的別人架設好的端,外網訪問又需要配置PHP網關訪問頁面, 無奈電腦是個人電腦,處於電信分配的大型內網中

Linux系統安裝的異常(AMI配置)

pos 網卡配置 software blog let 一次 war win 版本 一、背景 安裝Linux系統(Debian 8.8),老是失敗,卡在Install Software (12%的位置) 二、解決? 網上搜到的解決方法 1. 安裝過程中不要拔網線(我沒拔)

清理緩存的小事情(chrome) chrome清理緩存不生效的問題

選擇 遇到 image 細節 後來 前端開發 bubuko 開發 技術 記一次清理緩存的小事情(chrome) chrome下清理緩存不生效的問題 前端開發中會經常涉及清理緩存的事情. 在一次開發後, 需要清理緩存,一個哥們怎麽清理都不生效, 於是向我求救. 在我看了下後,

springboot訪問linux的mysql數據庫

enable rac boot data jar expire 訪問權限 默認 登錄 今天使用springboot連接linux的mysql,期間一直報錯,這裏簡單記錄一下過程。 工具:idea-2017,linux-7.x,mysql-5.6.40。 首先說一下這幾個註解

多臺linux搭建zookeeper集群

tables hive sam conf accept keep server 查看 地方 自己搭建了zookeeper集群,使用了三臺linux,搭建三節點的集群,這裏記錄一下。 在linux上可以使用wget+網址+版本號,wget和網址之間有個空格,就可以直接在lin

手動清理Linux挖礦病毒

pan fff 殺毒軟件 win10 ado top 根據 部門 enter 時間:2018年5月16日起因:某公司的運維人員在綠盟的IPS上監測到有挖"門羅幣"的惡意事件,受影響的機器為公司的大數據服務器以及其他Linux服務器。我也是趕鴨子上架第一次

iphone更換電池難以取舊電池解決辦法

幫朋友第一次更換iphone的電池,抱著android手機用電池鏟解決的思路,在iphone的嚴苛工藝下,毫無用處,電池紋絲不動。 前面略過…… 如圖在紅圈內,有兩個標籤,切記用手亂拽,不然掉了就尷尬了,最正確的做法是: 用鑷子找到一點後,就直接卷,不停的卷,而不

在64位Ubuntu 16.04成功安裝arm-none-eabi-gcc交叉編譯器的過程

2018.07.28 剛開始在網上找了很多教程,都是大同小異的步驟: 在官網下載arm-none-eabi-gcc的.tar.bz2壓縮包 解壓到自定義目錄 開啟.bashrc和.profie新增環境變數和路徑 生效更改 查詢編譯器是否配置成功 上面的安