Menjembatani Wifi ke Ethernet di Ubuntu tidak berfungsi

22

Ketika menjalankan Windows, saya dapat menjembatani koneksi wifi saya melalui koneksi Ethernet laptop saya sehingga berbagai perangkat hanya ethernet dapat piggy back off wifi saya (Raspberry Pi, Xbox dll). Saya sekarang mencoba melakukan hal yang sama di dalam Ubuntu, yaitu pengaturannya adalah:

Router Nirkabel ---> Wifi di laptop ---> jembatan ke Ethernet ---> Perangkat yang membutuhkan internet terhubung ke port Ethernet

Sekarang saya telah mencoba untuk membuatnya bekerja di Ubuntu menggunakan brctl

Saya menggunakan perintah di bawah ini:

sudo brctl addif br0 eth0 wlan0

Dan dapatkan kesalahan berikut:

can't add wlan0 to bridge br0: Operation not supported

Saya berharap seseorang dapat membantu karena saya menolak untuk percaya bahwa sesuatu yang dapat saya lakukan di windows dengan mudah tidak dapat dilakukan di Linux.

Jika Anda memerlukan info lebih lanjut, beri tahu saya. Terima kasih

Zac Powell
sumber
Masalah yang sangat mirip ditangani di [ askubuntu.com/questions/155041/…
Legionair

Jawaban:

10

Ini tidak bisa dilakukan. Anda tidak dapat menjembatani koneksi klien WiFi. Jika Anda bisa, kami tidak akan membutuhkan WDS, kami hanya akan menjembatani.

Masalahnya sangat sederhana - titik akses dilarang oleh spesifikasi WiFi dari penyiaran lalu lintas melalui jaringan WiFi kecuali ada sesuatu yang mengizinkan transmisi itu. Ini sebagian besar merupakan peninggalan dari hari-hari ketika jaringan WiFi sangat lambat dan memiliki keamanan yang buruk.

Jembatan hanya memiliki koneksi klien ke titik akses. Ini hanya mengotorisasi titik akses untuk mengirimkan lalu lintas yang terikat ke jembatan. Karena mesin apa pun yang terhubung ke jembatan bukan klien dari titik akses, titik akses tidak memiliki alasan untuk mengirim lalu lintas terikat kepada mereka melalui tautan WiFi. Jadi tidak akan melakukannya.

Sayangnya, WiFi sudah cukup seperti Ethernet sehingga mudah untuk bertindak seperti Ethernet. Tapi itu cukup berbeda untuk menggigitmu.

Konfigurasi WDS adalah otorisasi khusus untuk jalur akses untuk mengirim lalu lintas yang tidak terikat untuk kliennya. Ketika kedua ujungnya mendukung WDS, mereka menyertakan alamat titik akhir penghubung serta alamat tujuan, yang mengesahkan titik akses untuk mengirimkan lalu lintas.

Anda harus menggunakan sesuatu selain menjembatani untuk melakukan ini. Routing dengan NAT, misalnya. Anda juga dapat menggunakan empat mode alamat, jika kedua ujung tautan WiFi mendukungnya.

David Schwartz
sumber
3
Anda dapat mengatasi masalah ini dengan menulis ulang alamat mac dengan ebtables
ccarton
Saya perhatikan bahwa satu orang di sini mengatakan Anda dapat di ubuntu..dan saya telah melakukan sesuatu seperti itu di windows juga .. meskipun Anda mengatakan itu tidak mungkin jadi mungkin Anda bisa menjelaskan apa perbedaan antara itu dan ini. Di Windows ketika Anda melakukan ini youtube.com/watch?v=96Z1_6rX5qU WiFi terhubung ke internet. Tidak ada kabel di konektor Ethernet..atau kabel dari konektor lain dalam konektor Ethernet. Kemudian Memilih adaptor WiFi dan adaptor Ethernet, ia menjembatani mereka, dan kemudian komputer lain dapat menyambungkan kabelnya dan menggunakan koneksi Internet Laptop saya masih merupakan klien WiFi saya pikir (dan bukan titik akses)
barlop
1
@ Davidvidchwartz Jika seseorang memiliki laptop tanpa nirkabel yang berfungsi dan tidak ada saklar jaringan untuk menghubungkannya ke akses internet, tetapi laptop lain memiliki akses internet nirkabel, dan tidak ada USB stick nirkabel cadangan. Maka tampaknya satu-satunya solusi adalah memalsukan jembatan. Jika kedua laptop memiliki adaptor jaringan nirkabel yang berfungsi, mereka berdua bisa saja terhubung ke titik akses nirkabel utama, tidak perlu titik akses tambahan dan WDS .. Saya telah menggunakan penipu penjembatan ketika satu laptop tidak dapat melakukan nirkabel.
barlop
1
Salah. Sebagai permulaan, WDS adalah koneksi WiFi, tidak seperti yang lain. Kedua, ada perangkat pie-manis yang disebut klien-jembatan atau media-jembatan yang terhubung melalui AP dan secara transparan menjembatani 3-5 jack kabel, yang bisa menjadi hub, dll. Yang pasti, mungkin ada keterbatasan dengan cara kerja dan berapa banyak MAC yang bisa mereka jembatani, tetapi pada akhirnya ... ada caranya. Sial, bahkan Linux akan membiarkan Anda menggunakan mode WDS sebagai STA jika Anda menetapkan 4addr sebagai mode pada perangkat melalui perintah iw dan driver memungkinkan Anda melakukannya. Anda dapat menjembatani ... baru saja ... provisos.
Svartalf
1
@ Davidvidchchartz: Routing? Serius? Ini sebuah petunjuk. Aplikasi dapat memiliki 500+ node dalam jaringan. Bisakah ANDA membuat routing bekerja dengan anggun seperti itu? "WDS nyata"? Bisakah saya yakin itu akan bekerja dengan Cisco, Aruba, Ubiquiti, dan lainnya? Jika demikian, maka ya ... jika tidak ... premis adalah masalah di luar kotak. Saya sudah membuatnya bekerja dengan baik dengan kegilaan yang saya coba dengan mode WDS-Station ... tetapi apakah itu akan bekerja dengan sesuatu selain hostapd atau perangkat turunan serupa Linux?
Svartalf
3

Saya punya masalah serupa dengan LXC, saya mengatasi masalah bridging di perangkat wifi. Pertama, Anda memerlukan perangkat ethernet cadangan di komputer. Caranya adalah dengan membuat rute dari perangkat ethernet ke wifi.

Di file server, ubah / etc / network / interfaces, pilih jaringan yang tidak digunakan untuk host virtual Anda, yaitu 10.0.0.0. Tetapkan satu IP untuk antarmuka ethernet cadangan Anda, ini dia eth0, menjembatani seperti ini:

auto br0
iface br0 inet static
    address 10.0.0.1
    netmask 255.255.255.0
    bridge_ports eth0
    bridge_fd 0
    bridge_maxwait 0

Setelah selesai, Anda dapat pergi ke cara MASQUERADE seperti yang dijawab oleh Kostyantyn di sini sebelumnya. Itu harus di rc.local atau dalam skrip yang harus Anda jalankan saat boot-up atau sebelum memulai domain virtual:

# iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
# echo "1" > /proc/sys/net/ipv4/ip_forward

Di server virtual konfigurasikan IP statis di / etc / network / interfaces. Saya menggunakan jaringan 10.0.0.0, saya akan mulai menggunakan dari .2, ketika Anda membuat lebih banyak virtual host Anda mungkin akan menggunakan 3, dan seterusnya. Jika Anda memiliki banyak, Anda dapat mempertimbangkan untuk menginstal server dhcp untuk itu. .1 adalah gateway, seperti yang dikonfigurasikan sebelumnya.

auto eth0
iface eth0 inet static
    address 10.0.0.2
    netmask 255.255.255.0
    broadcast 10.0.0.255
    gateway 10.0.0.1

Konfigurasikan juga server DNS, milik saya adalah router jaringan, di /etc/resolv.conf:

nameserver 192.168.1.1

Semoga ini membantu

Francesc Guasch
sumber
Ini adalah tipuan layer 3 dan tidak benar-benar "menjembatani" - saat Anda menggunakan iptables, Anda sedang merutekan.
Svartalf
0

Saya pikir yang benar-benar Anda butuhkan bukanlah jembatan melainkan:

  • SNAT (jika WLAN memiliki IP statis) (lihat halaman ini )

atau

  • MASQUERADE (jika WLAN memiliki IP dinamis - yaitu, perubahan IP)

1) buat forwarding_enable_file.shdengan konten berikut:

#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

2) Jalankan file:

sudo ./forwarding_enable_file.sh

3) pada host lainnya tentukan kotak Ubuntu Anda sebagai gateway. CATATAN: jika beberapa kotak juga menjalankan Linux, Anda dapat melakukannya dengan perintah ini:

sudo ip route add default via ubuntu-ip

di mana ubuntu-ip harus diganti dengan alamat IP ubuntu-box Anda yaitu 192.168.1.10

4) coba ping beberapa IP, yaitu 8.8.8.8 dari host lain:

ping 8.8.8.8

5) periksa pengaturan DNS Anda dengan melakukan ping ke beberapa domain, yaitu:

ping slivkoed.ru

6) jika langkah 4) berfungsi dan 5) tidak, daripada Anda memiliki masalah dengan pengaturan DNS Anda. dalam kasus seperti itu jalankan dengan privilege root:

# echo "nameserver 8.8.8.8" > /etc/resolv.conf

Jalankan langkah 5) lagi.

Informasi lebih lanjut tentang resolv.conf dapat ditemukan di sini .

Kostyantyn
sumber
Tergantung pada apa yang Anda butuhkan. Jika Anda membutuhkan transparan (lambaian tangan), tidak, Anda tidak menginginkan itu. Serius. Anda memerlukan perilaku yang dibuktikan dengan hal-hal seperti jembatan media TEW640-MB yang pensiun dari Trendnet (sesi mode STA yang terpasang pada 4 port Ethernet.). Ini mungkin hanya bisa didapat dengan operasi mode WDS (4addr) atau dengan ebtables MAC masquerading (yang tidak harus bingung dengan apa yang telah Anda posting) - keduanya memiliki rasa sakit dan masalah sendiri.
Svartalf
-1

Anda harus menurunkan antarmuka sebelum menjembatani mereka.

ifconfig eth0 ke bawah

ifconfig wlan0 down

Skandal
sumber
1
Masih mendapatkan kesalahan yang sama dengan kedua antarmuka turun
Zac Powell
@ Zak Powell Anda menggunakan Network-Manager? Saya memiliki beberapa pengalaman masa lalu yang mungkin mengganggu. Dalam hal ini Anda dapat mencoba menghentikan layanan, dan membawanya kembali lagi sesudahnya
Legionair
Ya saya, ok jadi saya harus mencoba membawa mereka berdua dan menghentikan manajer jaringan kemudian melakukan birdge dan kemudian membawa semuanya kembali?
Zac Powell
ya, dengan service network-manager stop, lalu lakukan pekerjaanmu, mulai lagi denganservice network-manager start
Legionair
masih tidak berfungsi: / semuanya dimatikan tetapi masih mendapatkan kesalahan yang sama
Zac Powell
-4
sudo iw dev wlan1 set 4addr on
Emilio Navarrete Lineros
sumber
Mau jelaskan bagaimana ini memecahkan masalah OP?
Braiam
@Braiam Jawaban saya cukup menjelaskan mengapa ini akan berhasil jika didukung oleh AP.
David Schwartz
Sayangnya, ini tidak bekerja dengan banyak AP. Adapun cara itu MUNGKIN memecahkan masalahnya jika bekerja dengan baik pada sebagian besar AP adalah memberikan kemampuan AP dengan menambahkan MAC tambahan ke nomor yang diberikan dalam setiap frame 802.11 untuk menyampaikan frame untuk lebih dari sekedar MAC yang diautentikasi.
Svartalf
Dari jawaban lain: serverfault.com/a/554663/280693
jhutar