
在 Arch Linux 上,我想讓 eth0 (連接到橋接路由器)共享從 wlan0 收到的連接,我已經閱讀了教程,但我不像其他用戶那樣精通命令,並且不完全理解。
答案1
更新
無法在無線(客戶端又稱站模式)和有線介面之間橋接根據 linux-ath5k-devel 上的這個線程。
設定NAT
應該改為設定 NAT:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
分配IP
然後你必須給自己分配IP位址:
ifconfig eth0 10.0.0.1 netmask 255.255.255.0 up
安裝 dhcp 守護程式
安裝 dhcp 伺服器並將下列文字新增至其設定檔中(在 /etc/dhcpd.conf 或類似檔案中)
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;
}
啟動 dhcpd
然後啟動 /etc/init.d/dhcpd start
就是這樣!
僅當您對非工作橋接設定感興趣時才閱讀下文
brctl addbr mybridge
brctl addif mybridge eth0
brctl addif mybridge wlan0
首先建立一個橋接器介面我選擇任意名稱我的橋然後為其添加介面。
您應該要求一個新的 IP 位址(只有當您想要為橋接設備本身取得有效的 IP 時才需要):
dhclient -d mybridge
答案2
到橋接無線網路您可以使用iw
工具的介面啟用4位址同樣地:
# iw dev <wifiInterface> set 4addr on
IE:
# brctl addif <bridgename> <wifiInterface>
can't add <wifiInterface> to bridge <bridgename>: Operation not supported
# iw dev <wifiInterface> set 4addr on
# brctl addif <bridgename> <wifiInterface>
現在應該可以了。您可以使用以下方式顯示橋樑:
# brctl show
答案3
橋接 wlan 和 4addr:
橋接 wlan0 很痛苦。您通常無法將其新增至橋接介面(brctl 傳回「不允許操作」),使用 VirtualBox「橋接」過濾器會導致 ARP 和 DHCP 衝突的混亂。原因是 802.11 幀預設只包含三個位址:無線裝置(筆記型電腦和 AP)和最終接收者(如乙太網路)的 MAC 位址。總是假設只有一個可能的發起者。
802.11 可以攜帶第四個,即始發者的 MAC 位址,這由中繼器在 WDS 模式下使用。此功能也可以在 Linux 上使用 iw 啟用,啟用此模式將允許 wlan0 在橋接介面以及 VirtualBox 橋接網路中使用:
iw dev wlan0 set 4addr on
然而,啟用 4addr 後,您可能會被 AP 完全忽略:關聯成功,但所有資料幀都會消失在以太中。這可能是出於安全原因(因為欺騙來源MAC 位址非常困難。是的。)在我的路由器(運行OpenRG)中,有必要為無線AP 介面啟用「WDS」模式,添加僅限於我的路由器的WDS裝置筆記型電腦的 MAC 位址,並將其新增至 LAN 橋接器。 4addr 封包現在可以工作了。
不過,這還有另一個問題 - 路由器現在拒絕來自筆記型電腦的三位址資料包,這可能相當不方便(每次更改 WLAN 網路時都必須切換 4addr)。解決方法是在筆記型電腦上添加第二個無線接口,連結到同一設備,但具有不同的 MAC 位址。首先撤銷之前的設定:
iw dev wlan0 set 4addr off
然後,新增第二個介面——名稱是任意選擇的——具有不同的 MAC 位址:
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
這裡必須與路由器中設定的WDS設備位址相符;除此之外,它可以是任何有效的 MAC 位址。然後,wlan0 的原始 MAC 保留用於「正常」使用。
可以同時使用 wlan0 和 wds.wlan0 – 儘管我只測試了關聯到同一個 AP 兩次,而不是關聯到不同的 AP。我猜他們至少需要在同一個頻道。
有些人問,當 VirtualBox 可以「很好」地橋接 WiFi 時,為什麼還要用這個呢?答案是 VirtualBox 不會傳送虛擬機器的 MAC 位址;相反,它也在 MAC 層執行 NAT。 – 2014-08-22
直接無線網橋
在某些情況下,您也可以使用 wlan_kabel。它使用資料包套接字直接將 wlan* 裝置與乙太網路裝置橋接。但是,您一次只能使用 wlan_kabel 橋接一個 MAC。它不存在被存取點禁止的缺點,因為只使用 wlan 裝置的原始 MAC。在您的情況下,這意味著 wlan0 只能由一台虛擬機器使用,甚至不能由主機使用。你可以得到wlan_kabel 在這裡。這類似於麥克蘭斯解決方案。
與 ipvlan 橋接
IP Vlan 沒有橋接的限制,它可以用於橋接網路 詳細資訊如何使用它可以在這裡找到
假面舞會的替代方案
Linux 路由可以與 iptables-masquerade 和 ip_forward 一起使用來實現橋接,但正如前面提到的,這需要啟用 ip_forward 並使 linux 充當路由器,這需要仔細設置,因為它可能會引入一些安全問題。
# 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
然後介面 br0 將可以存取 wlan0 網路
重要且相關
另外,非常重要的是,您不應該使用過時的、已棄用的命令,例如ifconfig、brctl, 等等。 iproute2 套件包含所有這些命令,包括設定虛擬介面(我們曾經必須使用 openvpn)和建立橋接器。如果您不知道如何使用 ip 建立橋接,讓我們開始吧
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
透過這組指令,我們建立一個名為Tap0 的虛擬接口,然後建立一個名為br0 的網橋,然後將eth0 和tap0 綁定到該橋,並為其指派IP 位址10.173.10.1,然後將其全部啟動。需要啟動介面(tap0、eth0 和 br0)的三個單獨實例。
實現此功能的技巧是使用 proxy.arp,它允許您的電腦(而不是您的 VM/Linux 容器/網路命名空間)來取代它們回答 ARP 查詢。
換句話說,透過在硬體介面和虛擬介面之間使用 IPv4 轉發,您認為可以將 VM/LXC/NNS 連接到 LAN,就像它是實體介面一樣,但事實並非如此:您完全忘記了基本的ARP流量,才是真正允許LAN 運作的。那麼,問題是:如果我正確轉送 IPv4 流量,我如何也轉送 ARP 流量,以便我的 VM/LXC/NNS 工作?訣竅是使用 proxy-arp。
完整的答案在Bohdi Zazen 的博客,標題很明顯:橋接無線卡。他使用過時的套件 uml-utilities,透過命令 tunctl 創建虛擬介面:這是他使用 uml-utilities 的唯一命令,這樣您就可以安全地忽略下載該包,並使用命令 I上面寫的是創建一個tap或tun接口,無論你喜歡哪一個,只需相應地修改命令即可。然後為 LXC 建立一個 veth 對,現在在 tap0 和 veth0 之間建立一個橋接。這個名為 br0 的橋接器是您必須使用 proxy-arp 來實現的,而不是 Bohdi Zazen 所描述的簡單的 tap0 介面。
資料來源:askubuntu.com,nullroute.eu.org,firejail.wordpress.com,超級用戶網站
答案4
當適配器/驅動程式支援時,其他答案中描述的 4addr 肯定是最好的方法,但並非所有答案都支援。 NAT 可能適用於某些情況,但在區域網路上進行雙向正確通訊將會出現問題(例如,連接印表機或存取 NAT 另一側的其他 IoT 裝置)。任何依賴廣播/多播的內容(例如自動發現、bonjour)都將無法通過 NAT。
另一種方法是使用 ARP 代理程式(已解析),如中所述https://wiki.debian.org/BridgeNetworkConnectionsProxyArp。我已經在 Raspberry Pi 上將其設置為印表機,它的工作方式就像一個魅力(我在命令中添加了 10 秒睡眠,post-up
讓它首先獲取 IP 位址,這可能與我的舊印表機速度緩慢有關RPi. ..)