Lệnh iproute2 để kích hoạt địa chỉ IPv4


7

Tôi đang nghiên cứu làm thế nào để có các lệnh iproute2 thay thế lệnh cũ ifconfigifup ifdownlệnh và tôi đã tìm ra một điều thú vị.

Thiết lập NIC của tôi là:

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

DEVICE=eth2
ONBOOT=no
BOOTPROTO=dhcp

Để đưa lên và xuống một giao diện, cách cũ sẽ là: ifup eth2 ifdown 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

Để sử dụng lệnh iproute2 để làm điều này, thông thường chúng ta sử dụng ip link set eth2 up, nhưng rõ ràng iproute2chỉ có thể hiển thị lớp liên kết của NIC chứ không phải địa chỉ 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

Nhưng truyền thống ifupcó thể làm điều đó:

[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

Tôi nghĩ rằng điều này là do ifupđưa lên lớp liên kết, và cả địa chỉ IPv4 cùng nhau.

Vì vậy, câu hỏi của tôi là: làm thế nào để chúng tôi sử dụng iproute2 để kích hoạt địa chỉ IPv4 ?

Lưu ý bên lề: Thật thú vị, khi iproute2đưa xuống lớp liên kết, nó không vô hiệu hóa địa chỉ 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

Câu trả lời:


7

ipifupphục vụ các mục đích khác nhau, và là miễn phí. ipkhông nên được sử dụng để thay thế ifup. Trên thực tế, ifuphoạt động ở mức cao hơn.

ifconfig(truyền thống, di động) và ip(chỉ dành cho Linux, nhưng giao diện tốt hơn nhiều) là hai lệnh phục vụ cùng một mục đích. Chúng là để thiết lập cấu hình giao diện trực tiếp. ipthực sự thay thế hoàn toàn ifconfig(và routemột số netstat) vì giao diện đẹp hơn và khả năng rộng hơn nhiều, ngoại trừ ifconfigvẫn còn khả năng tương thích.

Cả ipcũng không ifconfigchứa hoặc quản lý cấu hình dai dẳng. Họ áp dụng yêu cầu họ nhận được trên dòng lệnh, và đó là yêu cầu.

ifupifdownlà để đưa giao diện lên và xuống theo cấu hình hệ thống. Trên một số hệ thống, cấu hình này được giữ nguyên /etc/network/interfaces, trên các hệ thống khác /etc/sysconfig/something. Công việc của họ là đọc toàn bộ cấu hình, bao gồm địa chỉ IP, tuyến đường, máy chủ DNS, tập lệnh tùy chỉnh, v.v ... và áp dụng nó cho hệ thống. Họ làm điều này (ít nhất là về mặt khái niệm) bằng cách gọi iphoặc ifconfig.

Bạn có thể thực hiện thủ công tất cả các iplệnh ifupđã sử dụng để hiển thị giao diện, nhưng hãy cẩn thận rằng thông tin trạng thái ifup/ ifdownliên tục sẽ không đồng bộ với thực tế. ifupsẽ tiếp tục nghĩ rằng giao diện bị hỏng ngay cả sau khi bạn mang nó lên ip.


Cảm ơn Celeda! Điều đó giải thích rõ ràng nghi ngờ của tôi và bây giờ tôi hiểu vai trò khác nhau của ipifupđang chơi!
sylye 10/03/2015

3

ifup là công cụ lớp cao hơn - sử dụng các tập tin cấu hình để lên và giao diện. Nếu bạn muốn làm điều đó bằng lệnh ip, bạn có thể sử dụng một cái gì đó như:

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

Nếu bạn muốn tự động định cấu hình giao diện này bằng dhcp, bạn cần sử dụng dhcp client - ví dụ: dhclient hoặc dhcpcd


Cảm ơn :) và tôi nghĩ cho trường hợp của tôi, vì đó là một thiết lập dhcp, iproute2sẽ không thể làm điều này. Tuy nhiên, cảm ơn câu trả lời của bạn, vì điều đó giúp ích khi tôi cần làm IP cố định.
sylye 10/03/2015
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.