Bir ağ arabiriminin fiziksel (aygıt) veya sanal (takma ad) olup olmadığını nasıl anlarım?


17

OpenWrt (yönlendiriciler için gömülü Linux tür) çalışan küçük bir ev yönlendirici var. It aşağıdaki Ağ Arayüzleri uyarınca tanımlamıştır 4'e beş Ethernet portu, bir etiketlenmiş WAN ve dört labeld LAN 1 sahiptir ifconfig:

root@TIBERIUS: ~ > ifconfig | grep Link
br-lan    Link encap:Ethernet  HWaddr 00:23:CD:20:C3:B0
eth0      Link encap:Ethernet  HWaddr 00:23:CD:20:C3:B0
lan1      Link encap:Ethernet  HWaddr 00:23:CD:20:C3:B0
lan2      Link encap:Ethernet  HWaddr 00:23:CD:20:C3:B0
lan3      Link encap:Ethernet  HWaddr 00:23:CD:20:C3:B0
lan4      Link encap:Ethernet  HWaddr 00:23:CD:20:C3:B0
lo        Link encap:Local Loopback
pppoe-wan Link encap:Point-to-Point Protocol
wan       Link encap:Ethernet  HWaddr 00:23:CD:20:C3:B0
wlan0     Link encap:Ethernet  HWaddr 00:23:CD:20:C3:B0

Gördüğünüz gibi, çok sayıda cihaz, ancak sadece bir MAC adresi.

Bu cihazlardan bazılarının sanal olduğunu anlıyorum. Bir kenara bırakalım love pppoe-wanbu geri döngü cihazı ve PPPoE Bağlantım. Ama bunların geri kalanı için, fiziksel ya da sanal olduklarını nasıl anlarım? Sanal Arayüzleri etiketlemek için bir adlandırma kuralı olduğunu anlıyorum eth0.1, ancak bu açıkça buna bağlı değil. ifconfigBu arayüzlerden ikisinin çıktısını görelim :

root@TIBERIUS: ~ > ifconfig wan
wan       Link encap:Ethernet  HWaddr 00:23:CD:20:C3:B0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:15007 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12055 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:13341276 (12.7 MiB)  TX bytes:1831757 (1.7 MiB)

root@TIBERIUS: ~ > ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:23:CD:20:C3:B0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:25799 errors:0 dropped:0 overruns:23 frame:0
          TX packets:25294 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:15481996 (14.7 MiB)  TX bytes:15160380 (14.4 MiB)
          Interrupt:4

Belirsiz bir ayrıntıya sahip txqueuelenolmanın belirsiz ayrıntısının yanı sıra eth0, tek çarpıcı fark, bildiğim kadarıyla bir Donanım Özelliği olan eth0bir Interruptgirişe sahip olmasıdır . Öyleyse, bir Ağ Arabirimi'ne bir Interruptgiriş arayarak fiziksel olup olmadığını nasıl söylersiniz ifconfig? Yoksa daha iyi bir yol var mı? Bir ağ cihazının fiziksel mi sanal mı olduğunu anlamanın basit ve anlaşılır bir yolu mu?

İlgili bir soru olduğunu unutmayın, ancak kabul edilen bir cevabı olsa da, kesin değildir.

Güncelleme

Derobert cevabına yanıt olarak, burada bilgi ls -l /sys/class/net:

br-lan      -> ../../devices/virtual/net/br-lan
eth0        -> ../../devices/platform/ag71xx.0/net/eth0
lan1        -> ../../devices/platform/dsa.0/net/lan1
lan2        -> ../../devices/platform/dsa.0/net/lan2
lan3        -> ../../devices/platform/dsa.0/net/lan3
lan4        -> ../../devices/platform/dsa.0/net/lan4
lo          -> ../../devices/virtual/net/lo
pppoe-wan   -> ../../devices/virtual/net/pppoe-wan
wan         -> ../../devices/platform/dsa.0/net/wan

[Bu listeye ek: wlan0aynı zamanda görünecekti wlan0 -> ../../devices/platform/ath9k/net/wlan0, ancak yukarıdaki listeyi kopyaladığımda WLAN'ı devre dışı bıraktım, bu yüzden görünmedi.]

eth0Tek cihaz olduğunu söyleyebilirim . Ne dsa.0olduğu belli değil .

Ve Bryan Agee'nin cevabına cevap olarak:

root@TIBERIUS: ~ > cat /etc/config/network

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

config interface 'eth'
        option ifname 'eth0'
        option proto 'none'

config interface 'lan'
        option ifname 'lan1 lan2 lan3 lan4'
        option type 'bridge'
        option proto 'static'
        option ipaddr '192.168.33.1'
        option netmask '255.255.255.0'

config interface 'wan'
        option ifname 'wan'
        option proto 'pppoe'
        option username '…'
        option password '…'

Kendi sorunuzu zaten cevapladınız (IRQ, txqueue, ... gibi donanıma özgü öğeleri arayın). Bana gelen soru şudur: bunu kullanım durumunuzda neden farklılaştırmanız gerekiyor?
Nils

@Nils, üzerine OpenWrt yazdıktan sonra yönlendirici cihazımdaki ağ yapılandırmasını net bir şekilde kavramadım. Ben iyice kafa karıştırıcı buluyorum. Proje dokümanları ve forumu bazı yardımları sağladı, ancak yeterli değil ve temel soruları cevapsız bıraktı. Bu sorulardan biri burada ortaya atılan soru. Bana öyle geliyor ki, iki tane olduğundan emin olduğumda yönlendiricimin sadece bir NIC'si var. Ayrıntıları netleştirmek karışıklığı azaltır. Bu yüzden.
Lumi

Bu yönlendirici için küçük bir fotoğraf veya bir fotoğraf / belge bağlantısı koyabilir misiniz? Gerçek MAC'leri gizleyen yapıştırma / köprüleme / NATting gibi şeyler olabilir ...
Nils

Kullanarak daha iyi ayrıntıları ve ihtiyacınız olanları görebilmelisinizlshw -class network
Nathan V

@Nils, işte gidiyorsunuz: wiki.openwrt.org/toh/tp-link/tl-wr941nd - @Nathan, sadece 4 MB flash ile kutu oldukça kısıtlı ve lshwpaket listesinde değil. Bilgili ve kararlı bir adam, dev araçlarını kurmayı başarabilir tmpfs, ancak buna değer mi? Standart bir PC aracılığıyla Linux ağ iletişimi konusundaki anlayışımı daha da ileriye taşıyacağım. Bu daha kolay olacak. Bu yönlendirici yapılandırmasını düzgün bir şekilde anlamasam da iyi çalışıyor. Yardımın için teşekkürler.
Lumi

Yanıtlar:


19

Kontrol edebilirsiniz /sys:

anthony@Zia:/sys/class/net$ ls -l /sys/class/net/
total 0
lrwxrwxrwx 1 root root 0 Dec 11 15:38 br0 -> ../../devices/virtual/net/br0
lrwxrwxrwx 1 root root 0 Dec 11 15:38 lan -> ../../devices/pci0000:00/0000:00:1e.0/0000:07:01.0/net/lan
lrwxrwxrwx 1 root root 0 Dec 11 15:38 lo -> ../../devices/virtual/net/lo
lrwxrwxrwx 1 root root 0 Dec 11 15:38 tun0 -> ../../devices/virtual/net/tun0

Dolayısıyla, gerçek cihazlar / sys / class / net içinde gösterilir. Diğer adların (lan: 0 gibi) olmadığını unutmayın (böylece hangilerinin takma ad olduğunu söyleyebilirsiniz). Ve hangilerinin gerçek donanım (lan) hangilerinin olmadığını (br0, lo, tun0) açıkça görebilirsiniz.

Netleştirmek için

Hangisinin gerçek olduğunu söyleyebilirsiniz, çünkü sanal olanların hepsi sanaldır. Ve lan PCI veriyolunda.

Sizin durumunuzda altı tane var: eth0, wan ve lan1–4. Toplamda sadece beş portunuz olduğunu söylediğiniz için bu oldukça garip. Sanırım eth0 aslında bir switch-ish çipine bağlı ve diğer 5 port o switch üzerindeki portlar. wlan0 da / sys'de görünmese de muhtemelen (kablosuz adaptör olurdu) de gerçektir.

Yani, tüm pratik amaçlar için, gerçek limanlarınızın wan, lan1-4 ve wlan0 olduğunu söyleyebilirim. br-lan, 4 lan bağlantı noktalarının tümünü anahtar olarak işlev görecek şekilde ayarlanmış bir köprüdür (böylece bu anahtarı bölebilirsiniz).


Teşekkürler. Soruma benzer çıktılar ekledim. PCI veri yolu veya burada görünmeyenler ile burada gösterdiğiniz çıktı kadar net değil; çıktıyı gerçekten anlamasam da donanım tanıtıcılarına benzediğini kabul ediyorum Çıktılarımın yukarıda gönderilmesi durumunda, bunun bir varlığı ag71xxbana donanım olduğunu düşündürüyor, çünkü bir sürücü gibi görünüyor.
Lumi

@Lumi cevap vermeye çalışmak için düzenlendi.
derobert

Bu muhtemelen benim yanıtımdan daha pratik.
Bryan Agee

Teşekkürler. Not , listeyi kopyaladığımda etkinleştirildiği şapka wlan0altındaki cihaz listesinde mevcut olurdu /sys/class/net. :) Şimdi yukarıda ekledim. Size cihaz sayısı konusunda katılmıyorum, sanırım sadece iki tane var, LAN ve WLAN. Ama bu küçük bir nokta… iyi cevap, kabul, teşekkürler!
Lumi

@Lumi brctrl delif br-lan lan1bir bağlantı noktasını köprüden çıkarmak için (veya benzeri) kullanın. O zaman ayrı bir bağlantı noktası (LAN anahtarının bir parçası değil) olarak çalışacağından şüpheleniyorum.
derobert

5

Arayüz MAC adresinizin sahte olmadığını varsayarsak, ethtool'u kullanmayı deneyebilirsiniz :

ethtool -P {Network interface name}

" Kalıcı adres: 00: 00: 00: 00: 00: 00 " bunun bir sanal ağ arayüzü olduğunu gösterecektir.

Aşağıdaki bash döngüsü, tüm ağ arabirimleri için MAC adresini görüntüler:

for i in $(ip -o link show | awk -F': ' '{print $2}'); \
do mac=$(ethtool -P $i) \
&& printf '%-10s %-10s\n' "$i" "$mac"; \
done

lo         Permanent address: 00:00:00:00:00:00
enp5s0f0   Permanent address: 44:1e:a1:73:39:c8
enp4s0f0   Permanent address: 00:9c:02:b0:ef:20
enp5s0f1   Permanent address: 44:1e:a1:73:39:c9
enp4s0f1   Permanent address: 00:9c:02:b0:ef:24
virbr1     Permanent address: 00:00:00:00:00:00
virbr1-nic Permanent address: 00:00:00:00:00:00
virbr0     Permanent address: 00:00:00:00:00:00
virbr0-nic Permanent address: 00:00:00:00:00:00
vnet0      Permanent address: 00:00:00:00:00:00
vnet1      Permanent address: 00:00:00:00:00:00

2

Bakarak başlardım /etc/network/config; dağıtımların çoğunda ağ aygıtlarını tanımlamak ve yapılandırmak için benzer bir dosya bulunur. Debian / Ubuntu'da, / etc / network / arayüzleridir. Eğer bunun içeriğini yayınlayacak olsaydınız, takma ad, tahvil ve köprü girişlerini belirleyebiliriz; gerisi fiziksel cihazlarınız olacaktır.

Çıktıya bakarak, ifconfigkesintileri (IRQ) olan cihazlardan (bahsettiğiniz gibi) söyleyebilirsiniz; birçoğu da atanmış hafızaya sahiptir, ki bunlar sanal arayüzlerde yoktur.

Bağlar ( bağlantı toplama ) tek tek cihazların mac'unu geçersiz kılacağından köprüler de aynı şeyi kullanacağından, yalnızca mac adreslerine göre yargılayamazsınız . Dolayısıyla, bağlı ve köprülenmiş iki cihazınız varsa - HA sanal ana bilgisayarları ve yönlendiricileri için ortak bir yapılandırma - aynı mac'a sahip dört cihaz olacaktır:

eth0  - physical device 1
eth1  - physical device 2
bond0 - the virtual device that uses either or both of the above
br0   - the bridge that uses bond0 and allows sharing/forwarding across bond0

Açık bir şekilde openwrt içinde kullanılan takma adlar yukarıdaki olanlar değildir, ancak kavram geçerlidir; Bunları kullandım çünkü bunlar standart bir uygulamadır.


Bu, diğer yollarla oluşturulan, 'standart' /etcyol etrafında çalışan arayüzleri hesaba katmaz . Örneğin, NetworkManager tarafından oluşturulan arabirimler burada belirtilmez.
gertvdijk

@gertvdijk Bu, openwrt NetworkManager'ı bu 4MB'ye paketlemese de, tüm arabirimlerin yapılandırmada olması gerekir.
Bryan Agee

-3

Sadece değerinin /sys/class/net/<interface>/type1 (ARPHRD_ETHER) olup olmadığını kontrol etmenin, cihazın fiziksel bir değer olup olmadığını anlamak için yeterli olması gerektiğini düşünüyorum.

http://lxr.linux.no/linux+v3.0/include/linux/if_arp.h#L30

Örneğin. basename $ (dizin adı grep -l ^1$ /sys/class/net/*/type)


Birçok arabirim için 1 görüyorum (eth, kablosuz, köprü ve vlan bir köprüden
sarkıyor
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.