创建家庭服务器作为 WiFi 接入点和家庭路由器(Ubuntu 服务器 18.04)

创建家庭服务器作为 WiFi 接入点和家庭路由器(Ubuntu 服务器 18.04)

我想设置一个具有多项职责的家庭服务器

  • 无线 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.210.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

答案1

啊哈!我明白了。这是一个排序问题。hostapd需要运行并将无线接口置于 AP 模式。一旦处于 AP 模式,brctl ifadd br0 <wireless interface>就可以正常工作。

感谢 mattbuford这个帖子

相关内容