iproute2 comando para ativar um endereço IPv4

5

Estou investigando como ter os comandos iproute2 substituindo o antigo comando ifconfig e ifup ifdown e descobri algo interessante.

Minha configuração da NIC é:

[16:07:41 root@vm network-scripts ]# cat /etc/sysconfig/network-scripts/ifcfg-eth2

DEVICE=eth2
ONBOOT=no
BOOTPROTO=dhcp

Para trazer uma interface para cima e para baixo, o caminho antigo será: %código% ifup eth2

[16:25:10 root@vm network-scripts ]# ip a show eth2
4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 08:00:27:b8:13:b4 brd ff:ff:ff:ff:ff:ff

[16:25:14 root@vm network-scripts ]# ifup eth2

Determining IP information for eth2... done.

[16:25:22 root@vm network-scripts ]# ip a show eth2
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:b8:13:b4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.4/24 brd 192.168.1.255 scope global eth2
    inet6 fe80::a00:27ff:feb8:13b4/64 scope link
       valid_lft forever preferred_lft forever

[16:25:26 root@vm-cention network-scripts ]# ifdown eth2

[16:27:51 root@vm-cention network-scripts ]# ip a show eth2
4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 08:00:27:b8:13:b4 brd ff:ff:ff:ff:ff:ff

Para usar o comando iproute2 para fazer isso, normalmente usamos ifdown eth2 , mas aparentemente o ip link set eth2 up só pode exibir a camada de link da NIC, mas não o endereço IP:

[16:36:25 root@vm network-scripts ]# ip link set eth2 up

[16:37:16 root@vm network-scripts ]# ip a show eth2
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:b8:13:b4 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::a00:27ff:feb8:13b4/64 scope link
       valid_lft forever preferred_lft forever

[16:37:20 root@vm network-scripts ]# ping yahoo.com
ping: unknown host yahoo.com

Mas o tradicional iproute2 pode fazer isso:

[16:37:39 root@vm network-scripts ]# ifup eth2

Determining IP information for eth2... done.

[16:39:59 root@vm network-scripts ]# ip a show eth2
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:b8:13:b4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.4/24 brd 192.168.1.255 scope global eth2
    inet6 fe80::a00:27ff:feb8:13b4/64 scope link
       valid_lft forever preferred_lft forever

[16:40:04 root@vm network-scripts ]# ping yahoo.com
PING yahoo.com (98.139.183.24) 56(84) bytes of data.
64 bytes from ir2.fp.vip.bf1.yahoo.com (98.139.183.24): icmp_seq=1 ttl=43 time=243 ms
64 bytes from ir2.fp.vip.bf1.yahoo.com (98.139.183.24): icmp_seq=2 ttl=43 time=341 ms

Acho que isso ocorre porque ifup exibe a camada de link e também o endereço IPv4 juntos.

Então, minha pergunta é: como usamos o iproute2 para habilitar o endereço IPv4 também ?

Nota: Curiosamente, quando ifup desativa a camada de link, ela não desativa o endereço IPv4:

[16:42:50 root@vm network-scripts ]# ip a show eth2
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:b8:13:b4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.4/24 brd 192.168.1.255 scope global eth2
    inet6 fe80::a00:27ff:feb8:13b4/64 scope link
       valid_lft forever preferred_lft forever

[16:42:58 root@vm network-scripts ]# ip link set eth2 down

[16:43:04 root@vm network-scripts ]# ip a show eth2
4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 08:00:27:b8:13:b4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.4/24 brd 192.168.1.255 scope global eth2

[16:43:09 root@vm network-scripts ]# ping yahoo.com
ping: unknown host yahoo.com
    
por sylye 10.03.2015 / 09:52

2 respostas

7

ip e ifup têm finalidades diferentes e são gratuitos. ip não deve ser usado para substituir ifup . Na verdade, ifup opera em um nível mais alto.

ifconfig (tradicional, portável) e ip (interface somente Linux, mas muito melhor) são dois comandos que servem a mesma finalidade. Eles são para configurar a interface diretamente. ip de fato substitui totalmente ifconfig (e route e alguns netstat ) por causa de sua interface muito mais agradável e capacidades muito mais amplas, exceto que ifconfig permanece para compatibilidade.

Nem ip nem ifconfig contêm ou gerenciam a configuração persistente. Eles aplicam o pedido que recebem na linha de comando, e é isso.

ifup e ifdown são para trazer interfaces para cima e para baixo de acordo com a configuração do sistema. Em alguns sistemas, essa configuração é mantida em /etc/network/interfaces , em outros, em /etc/sysconfig/something . Seu trabalho é ler toda a configuração, incluindo endereços IP, rotas, servidores DNS, scripts personalizados, etc ... e aplicá-lo ao sistema. Eles fazem isso (pelo menos conceitualmente) chamando ip ou ifconfig .

Você pode executar manualmente todos os comandos ip que ifup usaria para abrir uma interface, mas esteja ciente de que as informações de status persistentes ifup / ifdown estarão fora de sincronia com a realidade. ifup continuará pensando que a interface está inativa, mesmo depois que você a apresenta com ip .

    
por 10.03.2015 / 10:04
3

ifup é uma ferramenta de camada superior - que usa arquivos de configuração para interfaces de up e confiture. Se você quiser fazer isso pelo comando ip você pode usar algo como:

ip link set eth0 up # to bring interface up
ip a a 192.168.1.4/24 dev eth0 # to add address to interface
ip route add default via 192.168.1.1 # to add default route via gateway in that interface

Se você deseja configurar automaticamente esta interface usando o dhcp, você precisa usar o dhcp client - por exemplo, dhclient ou dhcpcd

    
por 10.03.2015 / 10:01