Järjestelmässäni on eth0 (joka voi olla kytketty tai ei) ja modeemi ppp0: lla (joka voi aina olla ylös tai alas). Tapauksessa, jossa molemmat liitännät ovat ylöspäin ja oletusreitti ppp0, haluaisin löytää tavan määrittää yhdyskäytävän IP todellinen osoite eth0. Yritin ”netstat -rn”, mutta tässä kokoonpanossa lähtö on

 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 

Kuinka siis määritän eth0: n yhdyskäytävän osoitteen? Yllä olevassa tapauksessa yhdyskäytävän todellinen osoite on 192.168.98.1.

Kommentit

  • Mikä on " eth0 ' s yhdyskäytävän osoitteen " piti olla?
  • Liitännät don ' t: llä on yhdyskäytävän osoitteet, netblokeilla on. Yhdyskäytävän osoite kertoo ytimelle, mihin edelleen lähettää paketit, jotka on tarkoitettu jollekin isännälle jossakin verkossa. Jos osoite liittyy tiettyyn rajapintaan, kyseistä rajapintaa käytetään, mutta osoite on riippumaton käyttöliittymästä.
  • Joten minun on tarkoitus tehdä eth0: stä oletusyhdyskäytävä, jos sillä on yhteys. Mutta yhteyden tarkistamiseksi teen väliaikaisen reitin tunnetulle hyvälle palvelimelleni. Mutta tätä varten minun on tiedettävä eth0 ' yhdyskäytävän osoite. Joten miten voin selvittää tämän?
  • tarkista tämä: stackoverflow.com/a/15973156/1422630

vastaus

Oletetaan, että eth0 on DHCP-asiakasrajapinta.
Yksi vaihtoehto on tarkistaa DHCP-asiakkaan vuokratiedostot dhcpd.leasing
Paikka ja nimi riippuvat järjestelmästä; joissakin Fedora-järjestelmissä /var/lib/dhclient/ -kohdan tiedostot ovat vuokratiedostoja, joissa mielenkiintoinen merkkijono on sellainen:

 option routers 192.168.1.1; 

Toinen vaihtoehto, joka toimi minulle hauskanpitolaatikossa: dhcpcd -U eth0
tulostaa mukavan taulukon, joka on valmis lähdekoodiksi skripteistä

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 

Siellä on muita vaihtoehtoja, kuten dhcping, dhclient -n, google- ja manpages-sivujen mukaan, mutta ne epäonnistuvat laatikoissani, mutta voi toimia sinulle.

Vastaa

Virheesi on, että yhdistät netstat-tuloksen tiedot uudelleen käyttöliittymään Kohdeosoitteisiin voi liittyä yhdyskäytäviä. Kun määrität verkkoasi, liität liitännät ja yhdyskäytävät määränpääosoitteisiin – joten sinun on esitettävä kysymys ”mikä” on yhdyskäytävä kohteisiin 192.168.98 / 24? ”Vedonlyöntiä ei ole tarkoitus olla yksi, että laitteita th etäisyydellä on joko silloitettu tai kytketty suoraan kyseiseen ethernet-verkkoon.

Huomaa, että oletusreittisi on ppp0 (viimeinen rivi on jokerimerkki, peite on kaikki nollat, joten yhtään bittiä ei tosiasiallisesti verrata, joten kyseisten osoitteiden paketit lähetetään ppp0) kautta. Joten paketit mihin tahansa kohteeseen, joka ei ole kohdassa 127.xx.xx.xx tai 192.168.98.xx, vastaavat lopulta jokerimaskia ja lähetetään ppp0. Koska se on ”point-to-point” -protokolla, jokainen kyseisellä rajapinnalla lähetetty paketti menee ainoaan suoraan linkitettävään laitteeseen, joka on linkin toisessa päässä. Sille ei tarvitse määrittää yhdyskäytävää. koska jokainen paketti lähetetään kyseisen käyttöliittymän kautta, lähetetään kyseisen laitteen kautta riippumatta siitä, onko sen Internet-kohde kyseinen laite vai ei.

Nyt: jos sinulla on reititin, johon pääsee yli eth0 jota käytät kun voit, reitittimellä on melkein varmasti IP-osoite alueella 192.168.98.xx, ainakin yhtä todennäköisesti kuin ei 192.168.98.1, ja kun reitittimessä on virta ylös ja tosiasiallisesti yhteydessä Internetiin, jos haluat oletusreittisi, kaiken, joka ei ole suoraan yhteydessä paikalliseen verkkoon, olevan default via 192.168.98.1

Sinulla saattaa olla uudempi (tämä ”suhteellinen termi, se on ollut käytössä jo pitkään) ip -komento käytössä, kokeile ip route ja jos se antaa sinulle jonkin lähdön, kokeile . Muussa tapauksessa kokeile route help.


Joten eth0 -liittymässäsi ei yksinkertaisesti ole ”t yhdyskäytävän osoite. Tähän ethernet-verkkoon voi olla kytketty toinen laite tai useita laitteita, jotka haluavat toimia yhdyskäytävänä. Sanot, että verkossasi on sellainen, joka vastaa (puhtaasti tavanomaiseen) .1. Mikään laki ei sano, että sillä on oltava kyseinen osoite, eikä missään laissa sanota, että sen on ilmoitettava läsnäolostaan. On olemassa joitain yleisiä tapoja, joista yleisimpiä ovat reititysohjelmistoa käyttävät laatikot suorittamaan myös dhcp-palvelimia ja kertomaan kaikille, jotka puhuvat dhcp: stä itsestään tällä tavalla. MolbOrgin vastaus antaa melko tyypillisen maun asetukselle, mutta kaikki, mitä kukaan voi ehdottaa tässä vaiheessa, vastaavat vain enemmän tai vähemmän todennäköisesti sinun tietäsi verkko.

Kommentit

  • minun tapauksessani yhdyskäytävä päättyy .129: ään, mikä on melko hämmentävää .. se määritetään, kun usb-jako on käytössä, mutta sen jälkeen en näe mitään tapaa määrittää sitä (muille rajapinnoille) route -n -kohdan jälkeen (jossa yhdyskäytäviä ei ole määritetty (0.0.0.0). EDIT: löysi sen! stackoverflow.com/a/15973156/1422630

vastaus

Linux:

Sinun on avattava pääte. Linux-jakelustasi riippuen se voi sijaita näytön yläosassa tai alaosassa olevissa valikkokohteissa. Tässä esimerkissä , käytämme Fedoraa. Valitse Sovellukset > Järjestelmätyökalut > Pääte.

Kun pääte on avaa, kirjoita seuraava komento: ip route | grep default

Tämän ulostulon pitäisi näyttää tältä:

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

Tässä esimerkissä jälleen kerran 192.168.1.1 on oletusyhdyskäytävän (reitittimen) IP-osoite.

kirjoita kuvan kuvaus tähän

Lisätietoja tästä aiheesta miten yhdyskäytävän IP-osoite löytyy (linux / win / osx) .

Kommentit

  • Huolimatta siitä, ettei puhu " -palvelulle, kun se on ei oletusarvoinen yhdyskäytävä " kysymysosassa, tämä vastaus sisältää vihjeen, jota tarvitsin yhdyskäytävän IP-osoitteen saamiseksi eth0: lle bash-komentosarjassa: route -n | grep "^0\.0\.0\.0" | awk '{print $2}'

Vastaa

Saat oletusyhdyskäytävän NIC-nimen käyttämällä tätä komentoa:

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

Jos koneellasi on useita aktiivisia verkkokortteja, tämä komento auttaa sinua löytämään pääverkkokortin, jolla sillä on pääoletusyhdyskäytävä.

Kommentit

  • grep XX | awk '{ action }' voidaan yleensä yhdistää awk '/XX/ { action }'
  • Harkitse selittää mitä ja miten komentosi toimii
  • @ mattia.b89 päivitin vastaukseni.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *