使用两张无线网卡桥接 WLAN 网络
文档时效性说明
本文为早期笔记,可能存在版本过时、命令失效、链接失效、最佳实践变化等问题。请以官方最新文档为准。
原英文标题:Bridging WLAN Networks Using 2 Wireless Cards
1. 方法一:brctl(不可用)
wlan0:开启 4addr
| sudo iw dev wlan0 set 4addr on
|
wlan1:开启监听模式
| sudo airmon-ng start wlan1
|
启动 AP
| sudo airbase-ng --essid HUST_WIRELESS_TWIN -c 6 wlan1mon
|
添加桥接
| sudo brctl addbr mitm-bridge
sudo brctl addif mitm-bridge at0
sudo brctl addif mitm-bridge wlan0
|
2. 方法二:hostapd
编辑 hostapd.conf
| interface=wlan1
ssid=Wifi_Lab
channel=6
|
编辑 dnsmasq.conf
| interface=wlan1
dhcp-range=10.0.0.10,10.0.0.250,255.255.255.0,12h
dhcp-option=3,10.0.0.1
dhcp-option=6,10.0.0.1
log-queries
log-dhcp
|
编辑 fakehosts.conf
启动 DNS 和 DHCP 服务器
| sudo dnsmasq -C dnsmasq.conf -H fakehosts.conf -d
|
启动 AP
| sudo hostapd hostapd.conf
|
为 AP 分配 IP
| sudo ifconfig wlan1 10.0.0.1
|
启用 NAT
| iptables --flush
iptables --table nat --flush
iptables --delete-chain
iptables --table nat --delete-chain
iptables -P FORWARD ACCEPT
iptables --table nat --append POSTROUTING --out-interface wlan0 -j MASQUERADE
iptables --append FORWARD --in-interface wlan0 -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward
|
提示:可以将 wlan0 替换为 tun0,以通过 WiFi 共享 VPN 隧道。
3. 故障排查
3.1 热点不稳定
编辑 /etc/NetworkManager/NetworkManager.conf,将 wlan1 加入 unmanaged
| [keyfile]
unmanaged-devices=interface-name:wlan1
|
然后重启服务
| sudo systemctl restart NetworkManager
|
另请参阅:https://wiki.archlinux.org/index.php/software_access_point#NetworkManager_is_interfering
4. 原文(English)
| ---
tags:
- 网络
- Linux
---
# 使用两张无线网卡桥接 WLAN 网络
!!! warning "文档时效性说明"
本文为早期笔记,可能存在版本过时、命令失效、链接失效、最佳实践变化等问题。请以官方最新文档为准。
## Method 1: brctl (Not working)
wlan0: turn on 4addr
```bash
sudo iw dev wlan0 set 4addr on
|
wlan1: turn on monitor mode
| sudo airmon-ng start wlan1
|
fire up the ap
| sudo airbase-ng --essid HUST_WIRELESS_TWIN -c 6 wlan1mon
|
add bridge
| sudo brctl addbr mitm-bridge
sudo brctl addif mitm-bridge at0
sudo brctl addif mitm-bridge wlan0
|
Method 2: hostapd
edit hostapd.conf
| interface=wlan1
ssid=Wifi_Lab
channel=6
|
edit dnsmasq.conf
| interface=wlan1
dhcp-range=10.0.0.10,10.0.0.250,255.255.255.0,12h
dhcp-option=3,10.0.0.1
dhcp-option=6,10.0.0.1
log-queries
log-dhcp
|
edit fakehosts.conf
fire up DNS and DHCP server
| sudo dnsmasq -C dnsmasq.conf -H fakehosts.conf -d
|
fire up the access point
| sudo hostapd hostapd.conf
|
assign IP to ap
| sudo ifconfig wlan1 10.0.0.1
|
enable NAT
| iptables --flush
iptables --table nat --flush
iptables --delete-chain
iptables --table nat --delete-chain
iptables -P FORWARD ACCEPT
iptables --table nat --append POSTROUTING --out-interface wlan0 -j MASQUERADE
iptables --append FORWARD --in-interface wlan0 -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward
|
Tips: you may replace wlan0 to tun0 to share VPN tunnel through WiFi.
Trouble Shooting
Hotspot unstable
edit /etc/NetworkManager/NetworkManager.conf, add wlan1 to unmanaged
| [keyfile]
unmanaged-devices=interface-name:wlan1
|
and restart service
| sudo systemctl restart NetworkManager
|
See also: https://wiki.archlinux.org/index.php/software_access_point#NetworkManager_is_interfering
```