it-swarm-vi.com

Làm thế nào để tìm ra giao diện nào tôi đang sử dụng để kết nối với internet?

Tôi có eth0wlan0 theo ifconfig và tôi có thể ping google.com.

Làm cách nào tôi có thể tìm ra (với một người dùng bình thường, không phải root) giao diện nào là hoạt động, như trong, giao diện nào đã sử dụng ping (hoặc bất cứ điều gì, ping không bắt buộc)?

Tôi đang sử dụng Ubuntu 11.04 hoặc Fedora 14

56
LanceBaynes

Bạn có thể sử dụng route để tìm tuyến đường mặc định của mình:

$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     *               255.255.255.0   U     1      0        0 eth0
link-local      *               255.255.0.0     U     1000   0        0 eth0
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0

Cột Iface trong dòng có đích default cho bạn biết giao diện nào được sử dụng.

55
Job

Phiên bản của tôi về cơ bản dựa trên thisthis :

route | grep '^default' | grep -o '[^ ]*$'

Và điều này, bằng thực nghiệm , cho macOS:

route -n get default | grep 'interface:' | grep -o '[^ ]*$'
31
Ebrahim Byagowi

Trên các hệ thống GNU/Linux:

#!/bin/sh

# Host we want to "reach"
Host=google.com

# get the ip of that Host (works with dns and /etc/hosts. In case we get  
# multiple IP addresses, we just want one of them
Host_ip=$(getent ahosts "$Host" | awk '{print $1; exit}')

# only list the interface used to reach a specific Host/IP. We only want the part
# between dev and src (use grep for that)
ip route get "$Host_ip" | grep -Po '(?<=(dev )).*(?= src| proto)'
11
Torgeir

Lót:

ip route get 8.8.8.8 | sed -n 's/.*dev \([^\ ]*\) table.*/\1/p'

8
h0tw1r3

Nhận giao diện mạng mặc định thường được sử dụng để định tuyến tới internet "còn lại" đối diện với DMZ, mạng riêng, VM Host, v.v. thường được định tuyến rõ ràng.

$ ip -4 route ls | grep default | grep -Po '(?<=dev )(\S+)'
eth0
7
EugeneP

Chạy ifconfig sẽ cung cấp cho bạn thông tin bạn cần.

Giao diện hoạt động sẽ có inet addr Và sẽ hiển thị bản ghi dữ liệu được truyền, như vậy:

RX bytes:1930741 (1.8 Mb)  TX bytes:204768 (199.9 Kb)

Bạn cũng có thể sử dụng lệnh ip addr Và mọi giao diện không hoạt động sẽ được chỉ định là có: NO-CARRIER.

6
jasonwryan

Lệnh ip route ls sẽ đưa ra danh sách các tuyến đang hoạt động và nguồn của chúng:

caleburn: ~/ >ip route ls
192.168.10.0/24 dev eth0  proto kernel  scope link  src 192.168.10.7 
default via 192.168.10.254 dev eth0 
2
Shadur

Sử dụng lệnh này:

$ route | grep default | awk '{print $8}'
enp0s3
1
Larry Catt

sử dụng cái dưới đây:

ip r | grep default
0
akash

Nếu máy của bạn có nhiều giao diện (mà tôi giả sử), sẽ không có giao diện nào được sử dụng để kết nối với internet.

Tùy thuộc vào điểm đến mà bạn đang kết nối, hệ thống của bạn sẽ tham khảo bảng ip (lệnh được hiển thị khi bạn thực hiện lệnh route) để tìm hy vọng/bộ định tuyến tiếp theo, khi tìm thấy, nó sẽ sử dụng giao diện Liên kết với nó.

Điều đó nói rằng, vui lòng tham khảo @ torgeir's câu trả lời vì nó thực hiện chính xác điều đó:

  1. Đưa ra một tên miền (được mã hóa cứng như google.com, đó là điểm xấu duy nhất trong câu trả lời)
  2. Giải quyết ip của nó
  3. Liên kết bảng ip cho tuyến đường sử dụng (và do đó giao diện).
0
kdehairy

Các bản phát hành khác nhau của Linux, Unix, một số phiên bản Microsoft Windows và nhiều Hệ điều hành khác không bị giới hạn chỉ sử dụng một giao diện mạng để truy cập internet. Nhiều Hệ điều hành sẽ phát hiện nhiều giao diện hợp lệ, có khả năng truy cập internet và thiết lập từng giao diện để truyền lưu lượng truy cập vào internet (cụ thể là các cổng kết nối cuối cùng với internet). Nếu HĐH cố gắng truy cập mạng bên ngoài và thành công bằng cách sử dụng eth0, nó sẽ thêm giao diện đó vào bảng định tuyến và buộc nó vào mạng đó. Nếu HĐH cố gắng truy cập cùng một mạng bên ngoài và cũng bị hủy bằng cách sử dụng eth1, nó cũng sẽ thêm giao diện đó (eth1) vào bảng định tuyến như một cách bổ sung để truy cập cùng mạng đó. Các áp phích khác cho đến nay chưa xem xét tầm quan trọng của các giá trị số liệu trong bảng định tuyến. Bảng định tuyến của tôi, bên dưới, hiển thị hai giao diện khác nhau, eth0wlan0. Cả hai đều hoạt động, cả hai đều được hệ điều hành tự động đặt làm tuyến mặc định tới cổng 192.168.1.1 và cả hai đã có một tuyến đường được hệ điều hành xây dựng tự động tới 192.168.1.X mạng. Toàn bộ bảng định tuyến này được viết tự động bởi HĐH. Không có chỉnh sửa nào được thực hiện bởi tôi. Sự khác biệt được hiển thị ở đây là giao diện ethernet có dây (eth0) có số liệu thấp hơn (202) và do đó, lưu lượng truy cập của tôi đến các nút vượt quá mức của tôi sẽ được chuyển qua giao diện này (nó được ưa thích bởi số liệu thấp hơn), trong khi phần còn lại của lưu lượng truy cập của tôi đến các nút nằm ngoài ý muốn của tôi được chuyển qua giao diện không dây (wlan0) (nó có số liệu cao hơn là 303 và do đó, hệ điều hành ít được ưa thích hơn).

[email protected]:~ $ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.1     0.0.0.0         UG    202    0        0 eth0
default         192.168.1.1     0.0.0.0         UG    303    0        0 wlan0
192.168.1.0     0.0.0.0         255.255.255.0   U     202    0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     303    0        0 wlan0

Cả hai giao diện đang được sử dụng để truy cập "internet" và việc sử dụng chúng được tính trọng số bởi các giá trị "Số liệu", như có thể thấy trong các thống kê byte và gói cho eth0 và wlan0 bên dưới:

[email protected]:~ $ ip -s address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope Host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope Host 
       valid_lft forever preferred_lft forever
    RX: bytes  packets  errors  dropped overrun mcast   
    0          0        0       0       0       0       
    TX: bytes  packets  errors  dropped carrier collsns 
    0          0        0       0       0       0       
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether dc:a6:32:31:a2:c7 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.195/24 brd 192.168.1.255 scope global dynamic noprefixroute eth0
       valid_lft 80787sec preferred_lft 69987sec
    inet6 fe80::2f3f:3f1d:8c35:a05e/64 scope link 
       valid_lft forever preferred_lft forever
    RX: bytes  packets  errors  dropped overrun mcast   
    14341060   22393    0       0       0       971     
    TX: bytes  packets  errors  dropped carrier collsns 
    1190274    10745    0       0       0       0       
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether dc:a6:32:31:a2:c8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.193/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0
       valid_lft 80787sec preferred_lft 69987sec
    inet6 fe80::4f31:5fcf:8f70:b5ca/64 scope link 
       valid_lft forever preferred_lft forever
    RX: bytes  packets  errors  dropped overrun mcast   
    4963408    7954     0       0       0       929     
    TX: bytes  packets  errors  dropped carrier collsns 
    49371      235      0       0       0       0       

Dễ dàng thấy rằng eth0 đang được HĐH cung cấp thêm lưu lượng truy cập. Nhiều Hệ điều hành sẽ cung cấp số liệu thấp hơn cho giao diện có dây có kết nối nhanh hơn và số liệu cao hơn cho giao diện có dây có kết nối chậm hơn. Ví dụ: nếu eth0eth1 cả hai kết nối với cùng một nút, nhưng eth0 đã thương lượng kết nối 100 mb và eth1 chỉ thương lượng kết nối 10 mb, eth0 sẽ được cung cấp một số liệu thấp hơn eth1. Tương tự, nhiều Hệ điều hành sẽ cung cấp số liệu thấp hơn cho giao diện có dây và số liệu cao hơn cho giao diện không dây.

Nhiều giao diện có thể được thiết lập tự động (tùy thuộc vào HĐH) hoặc theo cách thủ công, để đến cùng một nút bên ngoài bằng cách thực hiện/chỉnh sửa các mục vào bảng định tuyến.

0
Just Jeff