A rendszeremben van eth0 (ami lehet csatlakoztatva vagy nem) és egy modem a ppp0-n (ami mindig lehet fent vagy lent). Abban az esetben, ha mindkét interfész fent van, és a ppp0 az alapértelmezett útvonal, szeretnék megtalálni a módját az eth0 átjáró IP tényleges címének meghatározására. Megpróbáltam a “netstat -rn” -t, de ebben a konfigurációban a kimenet:

 Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface xx.xx.xxx.xxx 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0 192.168.98.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo 0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 ppp0 

Tehát hogyan határozhatom meg az eth0 átjáró címét? A fenti esetben az átjáró tényleges címe 192.168.98.1.

Megjegyzések

  • Mi az a " eth0 ' s átjáró címe " állítólag?
  • Felületek don ' nincs átjáró címe, a netblokkoknak van. Az átjáró címe megmondja a kernelnek, hová továbbítsa a csomagokat, amelyek valamelyik gazda számára valamely hálózatban vannak. Ha a cím egy adott interfészhez van társítva, akkor azt az interfészt fogják használni, de a cím független az interfésztől.
  • Tehát az alkalmazásomban állítólag az eth0-t kell az alapértelmezett átjáróként beállítanom, ha rendelkezik kapcsolattal. De a kapcsolat ellenőrzéséhez ideiglenes utat teszek az ismert jó szerveremhez. De ehhez tudnom kell az eth0 ' átjáró címét. Tehát hogyan állapíthatom meg ezt?
  • ellenőrizze ezt: stackoverflow.com/a/15973156/1422630

Válasz

Tegyük fel, hogy a eth0 a DHCP kliens felülete.
Az egyik lehetőség a DHCP-ügyféllízing fájlok dhcpd.leasing
A hely és a név a rendszertől függ; egyes Fedora rendszereken a /var/lib/dhclient/ alatt található fájlok bérleti fájlok, ahol az érdekes karakterlánc így hangzik:

 option routers 192.168.1.1; 

Egy másik lehetőség, ami nekem egy szórakoztató doboznál működött: dhcpcd -U eth0
szép táblázatot nyomtat, készen áll a szkriptek forrásaira

broadcast_address=192.168.1.255 dhcp_lease_time=86400 dhcp_message_type=5 dhcp_server_identifier=192.168.1.1 domain_name_servers="192.168.1.1 192.168.1.101" ip_address=192.168.1.101 network_number=192.168.1.0 routers=192.168.1.1 subnet_cidr=24 subnet_mask=255.255.255.0 

Vannak más lehetőségek, például dhcping, dhclient -n, a google és a manpages szerint, de nem sikerülnek a boxaimban, de működhet az Ön számára.

Válasz

A hibája az, hogy újból összekapcsolja a netstat kimeneten lévő információkat az interfésszel A célcímekhez társított átjárók tartozhatnak. A hálózat konfigurálásakor az interfészeket és átjárókat célcímkészletekkel társítja – tehát a feltett kérdés az, hogy mi az átjáró a célállomásokhoz 192.168.98 / 24? “Fogadok, hogy nem feltételezhetõ, hogy egy ilyen eszköz van a tartományban vagy áthidalva vannak, vagy közvetlenül kapcsolódnak az adott Ethernet-hez.

Figyelje meg, hogy az alapértelmezett útvonal a ppp0 útvonalon keresztül történik (az utolsó sor helyettesítő karakteres útvonal, a maszk mind a nulla, tehát valójában egyetlen bitet sem hasonlítanak össze, ezért az ezekhez a címekhez tartozó csomagokat a ppp0 útján küldik. Tehát a 127.xx.xx.xx vagy az 192.168.98.xx nem rendeltetési helyhez tartozó csomagok végül megegyeznek a helyettesítő maszkkal, és a ppp0. Mivel ez pont-pont protokoll, minden, az interfészen küldött csomag az egyetlen linken közvetlenül címezhető eszközhöz megy, a másik végén lévőhez. Nincs szükség átjáróra. mert minden csomagot az adott interfészen keresztül küldenek, az eszközön keresztül, függetlenül attól, hogy az internet-e az adott eszköz-e vagy sem.

Most: ha van egy útválasztója, amely a eth0 amelyet akkor használ, amikor csak teheti, az útválasztónak szinte biztosan IP-címe van a 192.168.98.xx tartományban, legalább olyan valószínű, mint nem 192.168.98.1, és amikor az útválasztó áramellátását biztosítja fel, és ténylegesen csatlakozik az internethez, ha azt szeretné, hogy az alapértelmezett útvonala legyen az, ami mindenhez nem kapcsolódik közvetlenül a helyi hálózathoz, default via 192.168.98.1

Lehet, hogy újabb (ez a “relatív kifejezés, ez már nagyon régóta létezik) ip parancsot használ, próbálkozzon ip route és ha ez ad némi kimenetet, próbálkozzon . Ellenkező esetben próbálja meg a route help alkalmazást.


Tehát a eth0 kezelőfelülete egyszerűen nem rendelkezik “t átjáró címe. Lehet, hogy az ethernethez csatlakozik egy másik eszköz vagy több eszköz, amely hajlandó átjáróként szolgálni. Azt mondja, hogy a hálózata rendelkezik olyanval, amely válaszol a (pusztán hagyományos) .1. Egyetlen törvény sem mondja, hogy meg kell adnia ezt a címet, és egyetlen törvény sem mondja, hogy hirdetnie kell jelenlétét. Van néhány általános módszer, amelyek közül a leggyakoribb, hogy az útválasztó szoftvert futtató dobozok futtatják a dhcp szervereket is, és elmondják mindenkinek, aki így beszél magáról.A MolbOrg válasza meglehetősen tipikus ízt ad a beállításnak, de bármi, amit bárki javasolhat ezen a ponton, csak többé-kevésbé valószínű, hogy megfelel az adott hálózat.

Megjegyzések

  • esetemben az átjáró .129-gyel végződik, ami meglehetősen zavaró .. akkor kerül meghatározásra, ha az usb-tethering engedélyezve van, de utána nem látom módját annak megállapítására (a többi interfész esetében) egy route -n után (ahol az átjárók nincsenek konfigurálva (0.0.0.0). EDIT: megtalálta! stackoverflow.com/a/15973156/1422630

Válasz

Linux:

Meg kell nyitnia egy terminált. A Linux disztribúciójától függően ez megtalálható a képernyő tetején vagy alján található menüelemekben. Ebben a példában , a Fedorát fogjuk használni. Kattintson az Alkalmazások > Rendszereszközök > Terminál elemre.

Amikor a terminál nyissa meg, írja be a következő parancsot: ip route | grep default

Ennek a kimenetének a következőképpen kell kinéznie:

joe$ ip route | grep default default via 192.168.1.1 dev eth0 proto static 

Ebben a példában ismét a 192.168.1.1 az alapértelmezett átjáró (útválasztó) IP-cím.

ide írja be a kép leírását

További információ erről a témáról az átjáró IP-jének megkeresése (linux / win / osx) .

Megjegyzések

  • Annak ellenére, hogy nem beszéltek a " vel, amikor nem a kérdés alapértelmezett átjáró " része, ez a válasz tartalmazza az átjáró IP-címének megszerzéséhez szükséges tippet (route -n) az eth0 esetében egy bash szkriptben: route -n | grep "^0\.0\.0\.0" | awk '{print $2}'

Válasz

Az alapértelmezett átjárónak megfelelő NIC név megszerzéséhez használja ezt a parancsot:

netstat -rn | grep -m 1 UG | awk "{print $8}" 

Ha több aktív NIC van a gépen, akkor ez a parancs segít megtalálni a fő NIC-t, amelyben a fő alapértelmezett átjáró található.

Megjegyzések

  • grep XX | awk '{ action }' általában egyesíthető awk '/XX/ { action }'
  • Kérjük, fontolja meg, hogy elmagyarázza, mi és hogyan teljesíti a parancsod
  • @ mattia.b89 Frissítettem a válaszomat.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük