Como determinar o endereço do gateway eth0 quando não é o gateway padrão?

4

No meu sistema eu tenho eth0 (que pode ou não estar conectado) e um modem no ppp0 (que pode estar sempre ativo ou inativo). O caso em que ambas as interfaces estão ativas e ppp0 é a rota padrão, eu gostaria de encontrar uma maneira de determinar o endereço real do IP do gateway de eth0. Eu tentei "netstat -rn", mas nesta configuração a saída é:

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

Então, como determino o endereço de gateway da eth0? No caso acima, o endereço real do gateway é 192.168.98.1.

    
por fred basset 11.04.2014 / 18:41

3 respostas

1

Suponha que eth0 é a interface do cliente dhcp.
Uma das opções é verificar arquivos de concessão de clientes dhcp dhcpd.leases
Lugar e nome dependem do sistema, alguma caixa do fedora sob / var / lib / dhclient / são arquivos de aluguel, onde uma string interessante é assim:

  option routers 192.168.1.1;

Outra opção, que funcionou para mim na caixa funtoo: dhcpcd -U eth0
imprime boa mesa, pronta para fonte em scripts

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

Há também outras opções como dhcping , dhclient -n de acordo com o google e manpages, mas elas falham em minhas caixas, mas podem funcionar para você.

    
por 11.04.2014 / 22:20
4

Seu erro é que você está associando as informações na saída do netstat com a interface em vez do destino. Endereços de destino podem ter gateways associados. Ao configurar sua rede, você está associando interfaces e gateways a conjuntos de endereços de destino - portanto, a pergunta que você precisa fazer é "qual é o gateway para destinos em 192.168.98 / 24?" Estou apostando que não deve haver um, que os dispositivos nesse intervalo sejam conectados ou conectados diretamente a essa rede.

Observe que sua rota padrão é via ppp0 (a última linha é uma rota curinga, a máscara é toda zero, portanto, nenhum bit é realmente comparado, portanto, os pacotes desses endereços são enviados por ppp0 ). Portanto, os pacotes para qualquer destino que não seja em 127.xx.xx.xx ou 192.168.98.xx eventualmente corresponderão à máscara curinga e serão enviados por ppp0 . Agora, como é um protocolo ponto-a-ponto, todos os pacotes enviados nessa interface vão para o único dispositivo diretamente endereçável nesse link, aquele no outro extremo. Não há necessidade de especificar um gateway para ele porque o pacote todo é enviado por meio da interface enviada por esse dispositivo, independentemente de seu destino da Internet ser esse dispositivo ou não.

Agora: se você tiver um roteador acessível sobre eth0 que você usa quando puder, esse roteador quase certamente tem um endereço IP no intervalo 192.168.98.xx, pelo menos tão provável quanto 192.168.98.1, e quando esse roteador estiver ligado e realmente conectado à Internet, você deseja que sua rota padrão, aquela para tudo que não está diretamente conectado a uma rede local, seja default via 192.168.98.1

Você pode ter o mais recente (que é um termo relativo, já existe há muito tempo) ip comando em uso, tente ip route e se isso lhe der alguma saída tente ip route help . Caso contrário, tente route help .

Portanto, a interface eth0 simplesmente não tem um endereço de gateway. Pode haver outro dispositivo ou vários dispositivos conectados a essa rede, dispostos a servir como um gateway. Você diz que sua rede tem uma que responde no (puramente convencional) .1 . Nenhuma lei diz que tem que ter esse endereço, e nenhuma lei diz que tem que anunciar sua presença. Existem algumas maneiras comuns, sendo que a mais comum delas é que as caixas que executam o software de roteamento também executem servidores dhcp e digam a qualquer pessoa que fale dhcp sobre elas mesmas dessa maneira. A resposta da MolbOrg dá um sabor bastante típico da configuração, mas qualquer coisa que alguém possa sugerir neste momento só vai ser mais ou menos provável de corresponder à sua rede específica.

    
por 11.04.2014 / 20:12
1
Linux:

    You'll need to open a Terminal. Depending on your Linux distribution, it can be located in the menu items at the top, or at the bottom of your screen. In this example, we will use Fedora. Click Applications > System Tools > Terminal.
    When terminal is open, type the following command: ip route | grep default
    The output of this should look something like the following:
    joe$ ip route | grep default
    default via 192.168.1.1 dev eth0 proto static
    In this example, again, 192.168.1.1 is your default gateway (router) IP address.

cliqueaquisobremaisinformaçõessobreestetópico:- link

    
por 25.04.2017 / 20:34