Sử dụng liên kết của ethernet và internet di động để có tính sẵn sàng cao


0

Tôi đã đọc về trình điều khiển liên kết linux. https://www.kernel.org/doc/Documentation/networking/boinating.txt

Mục tiêu của tôi là cải thiện tính khả dụng của kết nối internet của tôi trên hệ thống dựa trên debian bằng cách kết hợp giao diện ethernet (eth0) được kết nối với mạng LAN và kết nối internet di động được cung cấp bởi mô-đun lướt / GSM. Latter cũng xuất hiện dưới dạng giao diện ethernet ở đầu ra của ifconfig.

Tôi đã cài đặt ifenslavevà thêm vào /etc/network/interfaces:

# Slaves
auto eth0
iface eth0 inet manual
  bond-master bond0
  bond-primary eth0
  bond-mode active-backup

auto eth1
iface eth1 inet manual
  bond-master bond0
  bond-primary eth0
  bond-mode active-backup

# Master
auto bond0
iface bond0 inet dhcp
  bond-slaves none
  bond-primary eth0
  bond-mode active-backup
  bond-miimon 100

Sau khi khởi động lại, ifconfigđầu ra của tôi trông như

bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST>  mtu 1500
    inet 192.168.178.47  netmask 255.255.255.0  broadcast 192.168.178.255
    inet6 fe80::ba27:ebff:feb6:c504  prefixlen 64  scopeid 0x20<link>
    ether b8:27:eb:b6:c5:04  txqueuelen 1000  (Ethernet)
    RX packets 436  bytes 34223 (33.4 KiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 312  bytes 80051 (78.1 KiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 1500
    ether b8:27:eb:b6:c5:04  txqueuelen 1000  (Ethernet)
    RX packets 436  bytes 34223 (33.4 KiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 312  bytes 80051 (78.1 KiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
    inet 127.0.0.1  netmask 255.0.0.0
    inet6 ::1  prefixlen 128  scopeid 0x10<host>
    loop  txqueuelen 1000  (Local Loopback)
    RX packets 2  bytes 78 (78.0 B)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 2  bytes 78 (78.0 B)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Đó là, giao diện ngoại quan là ở đó. Lạ là eth0 cũng có thể nhìn thấy, trong khi eth1 (giao diện sao lưu đại diện cho thanh lướt) không có.

Tôi có thể truy cập nếu eth0 được kết nối với internet, nhưng không thể xóa kết nối đó. Đó là, thiết lập của tôi hoạt động như thể không có thanh lướt.

Tôi không chắc chắn nếu tôi nhận được ý nghĩa của liên kết chính xác vì tham chiếu ở trên nói về các công tắc. Trong trường hợp của tôi, hai giao diện kết nối với các cổng không nằm trong một mạng con chung.

Chỉnh sửa 1 Tôi có thể giải quyết vấn đề một phần rằng các giao diện dường như không được liên kết chính xác: Có vẻ như nguyên nhân là do thứ tự khởi động (một trong các giao diện ethernet là từ thiết bị USB). Có khả năng các trình điều khiển được tải chỉ sau khi liên kết xảy ra. Dù sao đi nữa, khi tôi kích hoạt liên kết tại thời gian chạy (sửa đổi / etc / mạng / giao diện và sau đó chạy /etc/init.d/networking restart), liên kết dường như xảy ra. Tuy nhiên, tôi vẫn không có được hành vi mong muốn.

Chỉnh sửa 2 Một câu trả lời bị xóa trong khi đó (không may) đã chỉ ra rằng liên kết thực sự có thể không hữu ích cho ứng dụng của tôi. Nếu đó là chính xác, có thể có được một hành vi tương tự bằng cách sử dụng các bảng định tuyến, và làm thế nào? Tôi muốn có một trong các thiết bị ethernet (eth0) là tuyến mặc định ưa thích khi cổng của nó được kết nối với internet. Nếu không, một tuyến mặc định thứ cấp (thông qua eth1) sẽ bước vào cho đến khi eth0 được kết nối internet trở lại.

Câu trả lời:


1

Liên kết chỉ hoạt động nếu bạn có thể tạo liên kết trên cả hai mặt của kết nối. Ngoài ra, liên kết hoạt động trên lớp 2, vì vậy nếu bạn có vận chuyển lớp 3 ở giữa, điều đó là không thể.

Nói cách khác, liên kết không hoạt động cho trường hợp sử dụng của bạn.

Làm thế nào để sử dụng đồng thời hai kết nối internet khác nhau là một Câu hỏi thường gặp. Bạn có thể

1) Thực hiện chuyển đổi dự phòng: Chỉ sử dụng một kết nối, chuyển đổi giữa chúng bằng các tập lệnh tùy chỉnh khi một kết nối không thành công. Vấn đề chính ở đây là xác định "lỗi", tức là làm thế nào để phát hiện khi một kết nối bị lỗi. Một tùy chọn là ping trong khoảng thời gian đều đặn đến một địa chỉ đã biết.

2) Sử dụng các giao thức hỗ trợ đa hướng như SCTP. Thật không may, những điều này chưa được thực hiện, vì vậy điều này không thực tế đối với hầu hết những điều bạn muốn làm trên Internet.

Mặt khác, bạn không thể làm gì nhiều do cách thức các giao thức được sử dụng rộng rãi (TCP và UDP) hoạt động.


Vì vậy, bạn đang nói rằng việc xác định hai tuyến "mặc định" cũng không phải là một tùy chọn?
highsciguy

Bạn không thể có hai quy tắc "mặc định". Một trong hai sẽ luôn được sử dụng, hoặc chúng sẽ được sử dụng ngẫu nhiên, sẽ nhìn sang đầu bên kia như mất gói 50%, vì một nửa các gói không đến từ đúng địa chỉ IP và do đó sẽ không được xử lý.
dirkt

Tôi đã suy nghĩ về loại giải pháp được thảo luận ở đây: rjsystems.nl/en/2100-adv-routing.php .
highsciguy

Điều này không định tuyến chính sách và quyết định bởi địa chỉ ban đầu sẽ sử dụng tuyến nào. Tất cả các ứng dụng sẽ sử dụng một hoặc một tuyến, nhưng không bao giờ cả hai. Các ứng dụng sẽ cần liên kết với một địa chỉ cụ thể để quyết định địa chỉ nào (và không phải tất cả các ứng dụng đều có tùy chọn cấu hình cho điều đó). Nếu một kết nối không thành công, tất cả các ứng dụng sử dụng kết nối này sẽ phải được khởi động lại.
dirkt

Cảm ơn đã giúp tôi. Tôi phát hiện ra github.com/hugochinchilla/WFS.git , có thể đóng vai trò là điểm khởi đầu cho tôi.
highsciguy
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.