在我的 Debian 机器上存在 3 个 IF:
- eth0 本地有线网络
- wlan0 运行 hostapd
- vlan5 互联网 IF,此机器作为本地网络的网关。
eth0 和 wlan0 是 br0 的一部分。从有线本地网络上的主机到其他有线主机或互联网的路由工作正常。从与 wlan0 关联的客户端到互联网的路由工作正常,但到有线网络的路由失败。即使 br0 知道请求的 MAC(brctl showmacs),br0 也不会回答来自无线客户端的 ARP 请求。
奇怪的是,这个设置之前一直都运行正常。但 Debian 内核更新后,它似乎停止了运行。
在 /etc/网络/接口:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet static
address 10.xx.1.3
netmask 255.255.255.0
bridge_ports eth0
bridge_fd 5
iface br0 inet6 static
address fdxx::3
netmask 64
mapping hotplug
script grep
map wlan0
allow-hotplug wlan0
iface wlan0 inet manual
hostapd /etc/hostapd/hostapd.conf
auto vlan5
iface vlan5 inet dhcp
vlan-raw-device eth0
pre-up /etc/firewall restart
/etc/hostapd.conf:
interface=wlan0
bridge=br0
driver=nl80211
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
dump_file=/tmp/hostapd.dump
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
ssid=XXXXX
country_code=XX
ieee80211d=1
hw_mode=a
channel=40
beacon_int=100
dtim_period=2
max_num_sta=255
rts_threshold=2347
fragm_threshold=2346
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wmm_enabled=1
wmm_ac_bk_cwmin=4
wmm_ac_bk_cwmax=10
wmm_ac_bk_aifs=7
wmm_ac_bk_txop_limit=0
wmm_ac_bk_acm=0
wmm_ac_be_aifs=3
wmm_ac_be_cwmin=4
wmm_ac_be_cwmax=10
wmm_ac_be_txop_limit=0
wmm_ac_be_acm=0
wmm_ac_vi_aifs=2
wmm_ac_vi_cwmin=3
wmm_ac_vi_cwmax=4
wmm_ac_vi_txop_limit=94
wmm_ac_vi_acm=0
wmm_ac_vo_aifs=2
wmm_ac_vo_cwmin=2
wmm_ac_vo_cwmax=3
wmm_ac_vo_txop_limit=47
wmm_ac_vo_acm=0
eapol_key_index_workaround=0
eap_server=0
own_ip_addr=127.0.0.1
wpa=2
wpa_passphrase=backbone
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
到互联网的流量正在通过 nat POSTROUTING 表中的 MASQUERADE 规则。为什么只有到本地有线网络的流量无法从网桥的无线端运行?
2015年11月22日更新: 问题似乎与 vlan 无关。当 vlan5 在启动时被禁用时,网桥也无法正常工作。来自无线端的数据包正在通过网桥,但来自有线端的数据包被丢弃在某处。在添加日志规则时,它们甚至不会出现在 ebtables 的 BROUTING 链中。网桥似乎仅在从 wlan0 到 eth0 的一个方向上工作...