GNU/Linux >> Belajar Linux >  >> Linux

Menjembatani wlan0 ke eth0

Solusi 1:

Untuk menjembatani wifi antarmuka Anda dapat menggunakan iw alat untuk mengaktifkan 4addr demikian juga:

# iw dev <wifiInterface> set 4addr on

yaitu:

# brctl addif <bridgename> <wifiInterface>
can't add <wifiInterface> to bridge <bridgename>: Operation not supported

# iw dev <wifiInterface> set 4addr on
# brctl addif <bridgename> <wifiInterface>

Sekarang seharusnya berhasil. Anda dapat menampilkan jembatan menggunakan:

# brctl show

Solusi 2:

PEMBARUAN

Tidak mungkin untuk menjembatani antara nirkabel (klien a.k.a. mode stasiun) dan antarmuka kabel sesuai dengan utas ini di linux-ath5k-devel.

Siapkan NAT

Seseorang harus mengatur NAT sebagai gantinya:

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

Menetapkan IP

Maka Anda harus menetapkan alamat IP untuk diri Anda sendiri:

ifconfig eth0 10.0.0.1 netmask 255.255.255.0 up

Instal daemon dhcp

Instal server dhcp dan tambahkan teks berikut ke file konfigurasinya (di /etc/dhcpd.conf atau yang serupa)

subnet 10.0.0.0 netmask 255.255.255.0 {
    range 10.0.0.100 10.0.0.120;
    option routers 10.0.0.1;
    option domain-name-servers the-ip-address-you-have-in-etc-resolv.conf;
}

Mulai dhcpd

Kemudian jalankan /etc/init.d/dhcpd start

Dan hanya itu!

Hanya baca di bawah jika Anda tertarik dengan penyiapan penghubung yang tidak berfungsi

brctl addbr mybridge
brctl addif mybridge eth0
brctl addif mybridge wlan0

Pertama Anda membuat antarmuka jembatan, saya memilih nama arbitrer mybridge lalu tambahkan antarmuka ke dalamnya.

Anda harus meminta alamat ip baru (Ini diperlukan hanya jika Anda ingin mendapatkan IP yang valid untuk perangkat penghubung itu sendiri):

dhclient -d mybridge

Solusi 3:

Jembatan wlan dan 4addr:

Menjembatani wlan0 itu menyebalkan. Anda biasanya tidak dapat menambahkannya ke antarmuka jembatan (brctl mengembalikan "Operasi tidak diizinkan"), dan menggunakan filter "jembatan" VirtualBox menghasilkan kekacauan besar konflik ARP dan DHCP. Penyebabnya adalah frame 802.11 hanya berisi tiga alamat secara default:alamat MAC kedua perangkat nirkabel (laptop dan AP) dan alamat penerima akhir (seperti pada Ethernet). Selalu diasumsikan bahwa hanya ada satu kemungkinan pencetus.

802.11 dapat membawa alamat MAC keempat, originator, dan ini digunakan dalam mode WDS oleh repeater. Fitur ini juga dapat diaktifkan di Linux, menggunakan iw, dan mengaktifkan mode ini akan memungkinkan wlan0 untuk digunakan dalam antarmuka penghubung, serta dengan jaringan penghubung VirtualBox:

iw dev wlan0 set 4addr on

Namun, dengan mengaktifkan 4addr, Anda kemungkinan besar akan diabaikan sepenuhnya oleh AP:asosiasi berhasil tetapi semua bingkai data menghilang ke eter. Ini bisa jadi karena alasan keamanan (karena sangat sulit untuk memalsukan alamat MAC sumber. Ya.) Di router saya (menjalankan OpenRG), perlu mengaktifkan mode "WDS" untuk antarmuka AP nirkabel, tambahkan perangkat WDS yang dibatasi ke perangkat saya alamat MAC laptop, dan menambahkannya ke jembatan LAN. Paket 4addr sekarang berfungsi.

Namun, ada masalah lain dengan ini – router sekarang menolak paket tiga alamat dari laptop, yang bisa agak merepotkan (harus beralih ke 4addr setiap kali jaringan WLAN diubah). Solusinya adalah menambahkan, di laptop, antarmuka nirkabel kedua yang ditautkan ke perangkat yang sama, tetapi dengan alamat MAC yang berbeda. Batalkan dulu konfigurasi sebelumnya:

iw dev wlan0 set 4addr off

Kemudian, tambahkan antarmuka kedua – nama dipilih secara acak – dengan alamat MAC yang berbeda:

iw dev wlan0 interface add wds.wlan0 type managed 4addr on
ip link set dev wds.wlan0 addr <addr>
ip link set dev wds.wlan0 up

Di sini harus cocok dengan alamat perangkat WDS yang dikonfigurasi di router; selain itu, bisa berupa alamat MAC yang valid. MAC asli wlan0 kemudian tetap untuk penggunaan "normal".

Dimungkinkan untuk menggunakan wlan0 dan wds.wlan0 pada saat yang sama – meskipun saya hanya menguji pengaitan ke AP yang sama dua kali, bukan ke AP yang berbeda. Saya menduga mereka setidaknya harus berada di saluran yang sama.

Beberapa orang bertanya mengapa menggunakan ini ketika VirtualBox dapat menjembatani WiFi "baik-baik saja". Jawabannya adalah VirtualBox tidak mengirimkan alamat MAC mesin virtual; melainkan melakukan NAT pada lapisan MAC juga. – 22-08-2014

Jembatan wlan langsung

Dalam keadaan tertentu, Anda juga dapat menggunakan wlan_kabel. Ia menggunakan soket paket untuk secara langsung menjembatani perangkat wlan* dengan perangkat ethernet. Namun, Anda hanya dapat menjembatani satu MAC pada satu waktu dengan wlan_kabel. Itu tidak memiliki kelemahan dilarang oleh titik akses, karena hanya MAC asli dari perangkat wlan yang digunakan. Dalam kasus Anda ini berarti, bahwa wlan0 hanya dapat digunakan oleh satu VM dan bahkan tidak oleh host. Anda bisa mendapatkan wlan_kabel di sini. Ini mirip dengan solusi macvlans.

Menjembatani dengan ipvlan

IP Vlan tidak memiliki batasan jembatan yang dapat digunakan untuk menjembatani jaringan detail tentang cara menggunakannya dapat ditemukan di sini

Alternatif penyamaran

Perutean Linux dapat digunakan sebagai gantinya dengan iptables-masquerade dan ip_forward untuk mencapai jembatan tetapi seperti yang disebutkan ini perlu mengaktifkan ip_forward dan akan membuat linux bertindak seperti router ini perlu disiapkan dengan hati-hati karena dapat menimbulkan beberapa masalah keamanan.

# bridge setup
brctl addbr br0
ifconfig br0 10.10.20.1/24 up
 
# enable ipv4 forwarding
echo "1" > /proc/sys/net/ipv4/ip_forward
 
# netfilter cleanup
iptables --flush
iptables -t nat -F
iptables -X
iptables -Z
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
 
# netfilter network address translation
iptables -t nat -A POSTROUTING -o wlan0 -s 10.10.20.0/24  -j MASQUERADE

Antarmuka br0 kemudian akan memiliki akses ke jaringan wlan0

Penting dan terkait

Selain itu, dan sangat penting, Anda tidak boleh menggunakan perintah usang seperti ifconfig, brctl , dan seterusnya. Suite iproute2 berisi perintah untuk semua ini, termasuk menyiapkan antarmuka virtual (sesuatu yang pernah kami gunakan untuk menggunakan openvpn) dan membuat jembatan. Jika Anda tidak tahu cara menyiapkan jembatan dengan ip, ini dia

  ip tuntap add tap0 mode tap user root 
  ip link set tap0 up
  ip link add br0 type bridge
  ip link set tap0 master br0
  ip link set eth0 master br0
  ip addr add 10.173.10.1/24  dev br0
  ip link set br0 up

Dengan kumpulan perintah ini, kami membuat antarmuka virtual yang disebut tap0, lalu jembatan bernama br0, lalu memperbudak eth0 dan tap0 ke jembatan, yang kami tetapkan alamat IP 10.173.10.1, lalu angkat semuanya. Diperlukan tiga contoh terpisah untuk menaikkan antarmuka (untuk tap0, eth0, dan br0).

Trik untuk membuat ini berfungsi adalah dengan menggunakan proxy.arp, yang memungkinkan komputer Anda (bukan wadah VM/Linux Anda/ruang nama jaringan) untuk menjawab pertanyaan ARP sebagai gantinya.

Dengan kata lain, dengan menggunakan penerusan IPv4 antara antarmuka perangkat keras dan antarmuka virtual Anda, Anda merasa dapat menyambungkan VM/LXC/NNS ke LAN Anda seolah-olah itu adalah antarmuka fisik, tetapi ini tidak benar:Anda benar-benar lupa lalu lintas ARP mendasar, yang benar-benar memungkinkan LAN untuk beroperasi. Jadi, masalahnya adalah:jika saya meneruskan lalu lintas IPv4 dengan benar, bagaimana saya juga bisa meneruskan lalu lintas ARP, sehingga VM/LXC/NNS saya berfungsi? Caranya adalah dengan menggunakan proxy-arp.

Jawaban lengkapnya ada di Blog Bohdi Zazen, dengan judul terbuka:Bridge wireless cards. Dia menggunakan paket usang, utilitas uml, untuk membuat antarmuka virtual melalui perintah tunctl:ini adalah satu-satunya perintah yang dia gunakan uml-utilitas, sehingga Anda dapat mengabaikan pengunduhan paket dengan aman, dan menggunakan perintah I tulis di atas untuk membuat antarmuka ketuk atau tun, mana saja yang Anda suka, cukup modifikasi perintahnya. lalu buat pasangan veth untuk LXC Anda, dan sekarang buat jembatan antara tap0 dan veth0. Jembatan ini, disebut br0, adalah apa yang Anda butuhkan untuk proxy-arp, bukan antarmuka tap0 sederhana yang dijelaskan oleh Bohdi Zazen.

Sumber:askubuntu.com, nullroute.eu.org, firejail.wordpress.com, superuser.com

Solusi 4:

Bergantung pada seberapa berartinya AP bagi Anda:

1) Mungkin hanya ingin melihat paket yang datang dari Anda, dengan alamat lapisan tautan Anda yang diketahui (dan karenanya bukan dari paket yang dijembatani) 2) Mungkin sebenarnya lebih pintar, dan tahu alamat IP mana yang harus menjadi milik alamat lapisan tautan mana (penyebab ia mengetahui DHCP dan memeriksanya)

Jika 1+2 keduanya benar, Anda memang memerlukan sesuatu seperti IP NAT, DHCP, ..

Namun jika hanya 1) kasusnya, Anda dapat memalsukan alamat lapisan tautan, dan memetakannya terbalik ke arah yang benar ke arah lain seperti yang dijelaskan di sini:

https://wiki.debian.org/BridgeNetworkConnections#Bridging_with_a_wireless_NIC

Solusi 5:

4addr seperti yang dijelaskan dalam jawaban lain tentu saja merupakan cara terbaik bila didukung oleh adaptor/driver, tetapi tidak semuanya. NAT mungkin berfungsi untuk beberapa hal, tetapi mendapatkan komunikasi yang tepat kedua arah di lan akan menjadi masalah (mis. menghubungkan printer atau mengakses perangkat IoT lain di sisi lain NAT). Apa pun yang mengandalkan siaran/multicast (mis. penemuan otomatis, bonjour) akan gagal melewati NAT.

Alternatifnya menggunakan Proxy ARP (parprouted) seperti yang dijelaskan di https://wiki.debian.org/BridgeNetworkConnectionsProxyArp. Saya telah menyiapkan ini di Raspberry Pi untuk printer dan berfungsi dengan sangat baik (saya telah menambahkan tidur 10 detik di post-up perintah untuk membiarkannya mendapatkan alamat IP terlebih dahulu, mungkin ada hubungannya dengan lambatnya RPi lama saya...)


Linux
  1. cara menggunakan cURL pada antarmuka tertentu

  2. menonaktifkan protokol ARP di kotak linux

  3. eth0 tidak dimulai saat boot setelah klon Virtualbox

  1. Konfigurasikan server DNS per antarmuka nic (eth0 / eth1)?

  2. Mengapa antarmuka ethernet saya disebut enp0s10, bukan eth0?

  3. Secara tidak sengaja menghapus perangkat wifi saya wlan0

  1. Bagaimana cara mengetahui status wlan0?

  2. Bagaimana agar pengaturan ethtool wake-on-lan tetap?

  3. Jembatan Linux untuk KVM