it-swarm-id.com

Bagaimana cara mengetahui antarmuka mana yang saya gunakan untuk menghubungkan ke internet?

Saya sudah eth0 dan wlan0 menurut ifconfig dan saya bisa ping google.com.

Bagaimana saya bisa mengetahui (dengan pengguna normal, bukan root) antarmuka apa aktif, seperti pada, antarmuka apa yang digunakan ping (atau apa pun, ping tidak wajib) gunakan?

Saya menggunakan Ubuntu 11.04 atau Fedora 14

56
LanceBaynes

Anda dapat menggunakan route untuk menemukan rute default Anda:

$ 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

Kolom Iface sesuai dengan tujuan default memberi tahu Anda antarmuka mana yang digunakan.

55
Job

Versi saya yang pada dasarnya didasarkan pada this dan this :

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

Dan ini, secara eksperimental , untuk macOS:

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

Pada sistem 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

Satu liner:

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

8
h0tw1r3

Dapatkan antarmuka jaringan default yang biasanya digunakan untuk merutekan ke internet "yang tersisa" berlawanan dengan DMZ, jaringan pribadi, VM Host dll. Yang biasanya dirutekan secara eksplisit.

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

Menjalankan ifconfig akan memberi Anda informasi yang Anda butuhkan.

Antarmuka aktif akan memiliki inet addr Dan akan menampilkan catatan data yang dikirimkan, seperti:

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

Anda juga dapat menggunakan perintah ip addr Dan semua antarmuka yang tidak aktif akan ditetapkan memiliki: NO-CARRIER.

6
jasonwryan

Perintah ip route ls Akan memberikan daftar rute yang aktif dan sumber mereka:

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

Gunakan perintah ini:

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

gunakan yang di bawah ini:

ip r | grep default
0
akash

Jika mesin Anda memiliki beberapa antarmuka (yang saya asumsikan), tidak ada satu antarmuka pun yang akan digunakan untuk menghubungkan ke internet.

Bergantung pada tujuan yang Anda hubungkan, sistem Anda akan berkonsultasi dengan tabel ip (yang ditunjukkan ketika Anda melakukan perintah route) untuk menemukan harapan/router berikutnya, ketika ia menemukannya, ia akan menggunakan antarmuka terkait dengannya.

Yang mengatakan, silakan merujuk ke @ torgeir's answer karena ia melakukan hal itu:

  1. Diberi domain (hardcoded sebagai google.com, yang merupakan satu-satunya titik buruk dalam jawabannya)
  2. Mengatasi itu ip
  3. Konsultasikan tabel ip untuk rute yang akan digunakan (dan karenanya antarmuka).
0
kdehairy

Berbagai distro Linux, Unix, beberapa versi Microsoft Windows, dan banyak Sistem Operasi lainnya tidak terbatas hanya menggunakan satu antarmuka jaringan untuk mencapai internet. Banyak Sistem Operasi akan mendeteksi lebih dari satu antarmuka yang valid, mampu menjangkau internet, dan mengatur masing-masing untuk membawa lalu lintas ke internet (khususnya, gateway yang pada akhirnya terhubung ke internet). Jika OS mencoba menjangkau jaringan eksternal dan berhasil menggunakan eth0, itu akan menambahkan antarmuka itu ke tabel routing dan mengikatnya ke jaringan itu. Jika OS mencoba menjangkau jaringan eksternal yang sama dan juga berhasil menggunakan eth1, itu juga akan menambahkan antarmuka itu (eth1) ke dalam tabel routing sebagai cara tambahan untuk mencapai jaringan yang sama. Poster lain sejauh ini belum mempertimbangkan pentingnya nilai metrik dalam tabel routing. Tabel perutean saya, di bawah ini, menampilkan dua antarmuka yang berbeda, eth0 dan wlan0. Keduanya naik, keduanya telah diatur secara otomatis oleh sistem operasi sebagai rute default ke gateway 192.168.1.1, dan keduanya memiliki rute yang dibangun secara otomatis oleh sistem operasi ke 192.168.1.X jaringan. Seluruh tabel routing ini ditulis secara otomatis oleh OS. Tidak ada pengeditan yang dilakukan oleh saya. Perbedaan yang ditunjukkan di sini adalah bahwa antarmuka ethernet kabel (eth0) memiliki metrik yang lebih rendah (202), dan dengan demikian lebih banyak lalu lintas saya ke simpul di luar saya akan dialihkan melalui antarmuka ini (lebih disukai oleh metrik yang lebih rendah), sedangkan sisanya dari lalu lintas saya ke simpul di luar keinginan saya dialihkan melalui antarmuka nirkabel (wlan0) (memiliki metrik lebih tinggi dari 303, dan karenanya kurang disukai oleh OS).

[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

Kedua antarmuka sedang digunakan untuk mencapai "internet", dan penggunaannya ditimbang oleh nilai-nilai "Metrik", seperti yang dapat dilihat dalam statistik byte dan paket untuk eth0 dan wlan0 di bawah:

[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       

Sangat mudah untuk melihat bahwa eth0 diberikan lebih banyak lalu lintas oleh OS. Banyak Sistem Operasi akan memberikan metrik yang lebih rendah ke antarmuka kabel yang memiliki koneksi lebih cepat, dan metrik lebih tinggi ke antarmuka kabel dengan koneksi yang lebih lambat. Misalnya, jika eth0 dan eth1 keduanya terhubung ke node yang sama, tetapi eth0 menegosiasikan koneksi 100 mb, dan eth1 hanya menegosiasikan koneksi 10 mb, eth0 akan diberi metrik lebih rendah dari eth1. Demikian pula, banyak Sistem Operasi akan memberikan metrik yang lebih rendah untuk antarmuka kabel, dan metrik yang lebih tinggi untuk antarmuka nirkabel.

Lebih dari satu antarmuka dapat diatur secara otomatis (tergantung pada OS), atau secara manual, untuk mencapai simpul eksternal yang sama dengan membuat/mengedit entri ke tabel routing.

0
Just Jeff