我想建立一个有几个职责的家庭服务器
- 用于本地网络的无线 AP
- 用于各种设备(HTPC、网络打印机等)本地网络的以太网交换机
- 家庭防火墙和互联网网关
- 通用文件服务器等(与此问题无关)
我有一台带有 4 端口以太网卡的机器,以及主板上的两个以太网端口。我已插入支持 AP 模式的 USB 无线适配器。
root@dagda:~# ifconfig -a | grep flags
enp3s0f0: flags=4098<BROADCAST,MULTICAST> mtu 1500
enp3s0f1: flags=4098<BROADCAST,MULTICAST> mtu 1500
enp4s0f0: flags=4098<BROADCAST,MULTICAST> mtu 1500
enp4s0f1: flags=4098<BROADCAST,MULTICAST> mtu 1500
enp7s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
enp8s0: flags=4098<BROADCAST,MULTICAST> mtu 1500
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
wlx24050ff70bf6: flags=4098<BROADCAST,MULTICAST> mtu 1500
我的光纤调制解调器通过以太网连接,以太网具有调制解调器所在位置的enp7s0
静态 IP 地址,通过 netplan 设置10.0.0.2
10.0.0.1
root@dagda~# cat /etc/netplan/01-netcfg.yaml
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
enp7s0:
dhcp4: no
dhcp6: no
addresses: [10.0.0.2/24, ]
gateway4: 10.0.0.1
nameservers:
addresses: [89.19.64.164, 89.19.64.36]
无线网卡能够接入点模式
root@dagda:~# iw list | grep -A 5 "Supported interface modes"
Supported interface modes:
* IBSS
* managed
* AP
* P2P-client
* P2P-GO
而且我已经成功地直接通过无线接口设置了 DNS 和 DHCP,所以我知道所有这些工作,但我想做的是为本地网络端设置一个 IP 地址。我想我应该能够桥接所有本地接口(以太网和 wifi)然后为桥分配一个静态 IP 地址并在桥上运行 dnsmasq 为所有本地设备提供 DNS 和 DHCP,无论它们如何连接,见下图
| ---------- home server ---------- |
| |
| wlx24050ff70bf6 |
| ^ |
| | |
internet <--> modem <--> | enp7s0 <--NAT--> br0 <-+ |
| | |
| v |
| enp[34]s0f[01] |
| |
| --------------------------------- |
当我尝试创建桥梁时,我的问题就出现了
root@dagda:~# brctl addbr br0
root@dagda:~# for p in 3 4; do
> for f in 0 1; do
> brctl addif br0 enp${p}s0f${f}
> done
> done
root@dagda:~# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.002655dbfd80 no enp3s0f0
enp3s0f1
enp4s0f0
enp4s0f1
root@dagda:~# brctl addif br0 wlx24050ff70bf6
can't add wlx24050ff70bf6 to bridge br0: Operation not supported
我试图找出为什么会发生这种情况,并在超级用户上遇到了这个问题,其中一个答案声称您无法桥接 wifi 和以太网,但奇怪的是,如果我在 netplan 中设置了网桥(下面的配置) ,我可以将wifi接口添加到网桥,但是通过我的手机连接到wifi声称它是一个WEP网络,尽管我在hostpad.conf中的设置明确只允许WPA2。不幸的是,我现在无法重现这一点。
我希望我的服务器有一个内部/本地 IP 地址,192.168.0.1
无论哪个接口流量进入。我怎样才能做到这一点?
https://superuser.com/questions/597834/bridging-wifi-to-ethernet-on-ubuntu-not-working
啊哈!我想到了。这是一个排序的问题。
hostapd
需要运行并已将您的无线接口置于 AP 模式。一旦它处于 AP 模式,brctl ifadd br0 <wireless interface>
就可以正常工作。这篇文章归功于 mattbuford