Làm cách nào để thay đổi số liệu định tuyến mạng vĩnh viễn


8

Tôi có thể thay đổi số liệu định tuyến mạng của tôi với ifmetric, ví dụ ifmetric enp0s3 1.

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    1      0        0 enp0s3
0.0.0.0         192.168.237.1   0.0.0.0         UG    100    0        0 enp0s8

Khi tôi khởi động lại, số liệu cho enp0s3 trở lại 101. Làm cách nào tôi có thể thực hiện thay đổi này vĩnh viễn hoặc đặt nó tự động khi khởi động?


Câu trả lời:


6

Cách chính xác để làm điều này, trong Debian và các dẫn xuất, là viết một tệp trong /etc/NetworkManager/dispatcher.d (gọi nó là bất cứ điều gì bạn thích), với nội dung sau:

#!/bin/sh

# Change the metric of the default route only on interface enp0s3

IF=$1
STATUS=$2
MY_METRIC=1

if [ "$IF" = "enp0s3" ]
then
        case "$STATUS" in
                up) 
                ip route del default dev $IF
                ip route add default via $DHCP4_ROUTERS dev $IF metric $MY_METRIC
                ;;
                *)
                ;;
        esac
fi

Bằng cách này, tùy chỉnh của bạn sẽ không bị ghi đè lên mỗi bản cập nhật. Để kiểm tra điều này, hãy dừng Trình quản lý mạng, tiêu diệt dhclient xóa địa chỉ IP của giao diện, sau đó khởi động lại trình quản lý mạng.

Bạn có thể tìm tài liệu ở đây .


Giả sử rằng chúng tôi đang sử dụng Trình quản lý mạng trong Debian, điều này vẫn không nhất thiết phải như vậy (ví dụ như trong trường hợp của tôi; tôi đã bỏ nó để tránh sự phụ thuộc systemd-as-init gây ra lỗi khởi động ngẫu nhiên). Ngoài ra, đây vẫn là một câu trả lời tốt cho hầu hết (nhưng chắc chắn không phải tất cả) người dùng Debian. Nó hoạt động tốt trên hệ thống khác của tôi vẫn sử dụng Trình quản lý mạng.
Wyatt8740

11

Nếu bạn đang sử dụng NetworkManager, cách thích hợp để thay đổi số liệu cho tuyến đường mặc định là sửa đổi kết nối được liên kết với giao diện enp0s3 theo cách này:

nmcli connection modify <connection-name> ipv4.route-metric 1

và sau đó kích hoạt lại kết nối:

nmcli connection up <connection-name>

Bạn có thể tìm thấy giá trị <connection-name>trong đầu ra của nmcli connection.


Điều này không thực sự trả lời câu hỏi, bởi vì nó không tự động làm điều đó khi khởi động.
MariusMatutiae

Điều này là vĩnh viễn và IMHO trả lời câu hỏi. Tuy nhiên, hãy lưu ý rằng giải pháp này được gắn với một kết nối chứ không phải giao diện. Nếu bạn tình cờ sử dụng một số kết nối (trường hợp điển hình: thiết bị chuyển vùng kết nối đến nhiều nơi khác nhau) trên cùng một giao diện (wifi hoặc Ethernet của máy), thì phải thực hiện thao tác cho từng kết nối cần điều chỉnh số liệu. Điều này có thể hoặc không thể là những gì bạn muốn. Tôi cảm thấy điều này là tốt bởi vì bạn có thể nói, ví dụ như "Wifi cụ thể này khiến tôi mất tiền theo byte nên đặt số liệu cao hơn", "kết nối Ethernet này có hiệu suất cao, hãy ưu tiên sử dụng nó".
Stéphane Gourmetichon

1

Bạn sẽ có thể làm cho nó vĩnh viễn ở /etc/dhcpd.confnơi bạn có thể đặt một số liệu giao diện như thế này.

interface enp0s3;
metric 1;

Ừm, tôi không nghĩ vậy. Hệ điều hành là gì? Cũng thử và xem nếu điều này tồn tại/etc/conf.d/dhcpcd
Pythonic

đã thử tạo tệp này với cài đặt của bạn - nó không hoạt động. Ubuntu 16.10. Cảm ơn mặc dù.
marathon

cũng không làm việc với tôi
Guerlando OCs

1

Cách dễ nhất và đúng để làm điều này là bằng cách chỉnh sửa /etc/network/interfaces.

Đây là một ví dụ đơn giản về /etc/network/interfaces:

auto lo eth0
iface lo inet loopback

allow-hotplug eth0
iface eth0 inet dhcp
    metric 700

Khởi động lại mạng bằng cách sử dụng service networking restartcho các thay đổi diễn ra.

Tham chiếu: Mục 5.7.2. Gói ifmetric của Hướng dẫn sử dụng Debian

Sau đây thiết lập giao diện eth0 được ưa thích hơn giao diện wlan0.

Cài đặt gói ifmetric.

Thêm một dòng tùy chọn với "số liệu 0" ngay bên dưới dòng "iface eth0 inet dhcp" trong "/ etc / network / giao diện".

Thêm một dòng tùy chọn với "số liệu 1" ngay bên dưới dòng "iface wlan0 inet dhcp" trong "/ etc / network / giao diện".

Ghi chú thêm:

  • auto <interface1> <interface2> bắt đầu giao diện khi bắt đầu hệ thống.
  • allow-hotplug <interface> bắt đầu giao diện trên sự kiện hotplug.
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.