![将打印机放在无线网络 wlan0 的 eth0 上](https://linux22.com/image/1312534/%E5%B0%86%E6%89%93%E5%8D%B0%E6%9C%BA%E6%94%BE%E5%9C%A8%E6%97%A0%E7%BA%BF%E7%BD%91%E7%BB%9C%20wlan0%20%E7%9A%84%20eth0%20%E4%B8%8A.png)
我有一个 Ubuntu 10.11 盒子,带有无线连接和有线连接。在有线端,我租了一台网络打印机,我无法更改其配置(无访问权限)。它设置为使用 dhcp 并通过网关 10.0.0.1 访问互联网。它需要互联网连接才能将扫描的文档通过电子邮件发送给用户。
无线网络实际上是 10.0.0.X 子网,网关是 10.0.0.1,无线路由器有一个 dhcp 服务器。如果需要,我可以更改所有这些设置。
我想让打印机和无线网络中的所有其他电脑都认为它只是该网络的普通参与者。在设置互联网连接和配置无线路由器方面,我相当熟练,但这种事情对我来说是一个陌生的新世界。我看了很多关于将 Linux 设置为路由器、NAT 或网桥的指南,但似乎没有指南告诉我如何实现我想要的。到目前为止,我已经设置了 ipv4 转发并安装了 webmin、bind9 和 dhcp 服务器,但在我看来,我不需要任何服务器来执行此操作。
如果有人能提供一点点正确的方向,那真的会有很大帮助。我甚至不知道我想要实现的这个东西叫什么,所以很难用谷歌搜索。
答案1
我无法给你具体的步骤,但我可以提供一些背景信息来帮助你弄清楚下一步该用 Google 搜索什么。
我想您已经知道,将类似以太网的流量从一个类似以太网的端口传递到另一个端口而不进行修改称为“桥接”。如果您是 AP,则在有线以太网链路和 802.11 无线链路之间进行桥接很容易,否则很难。它要求链路的两端都支持 WDS(“无线分布系统”),或者非 AP 设备(您的 Ubuntu 盒)充当“代理 STA”。这是因为默认情况下,AP 仅接受来自已通过身份验证并与 AP 关联的无线客户端 (STA) 的 MAC 地址的帧。因此,如果您的 Ubuntu PC 尝试正常加入您的无线网络,然后开始桥接来自打印机的帧,AP 会拒绝这些帧,因为它无法将打印机的 MAC 地址识别为已通过身份验证并与 AP 关联的 MAC 地址之一。因此,如果您想代表其他人桥接帧,您要么必须让无线链路的两端都支持 WDS,以便允许代表非关联设备桥接帧,要么必须让无线客户端代表其桥接的任何有线以太网设备执行虚假的 802.11 身份验证和关联(这称为“代理 STA”)。
另一个选择是重新编号您的主无线网络,使其与打印机上的网络不在同一子网中,然后在您的 Ubuntu 机器上运行 NAT,这样 NAT 的私有端就是面向打印机的 10.0.0.x,而公共端则面向无线网络的其余部分。然后您的 Ubuntu 机器就可以像任何其他无线客户端一样加入您的无线网络。您还需要在 Ubuntu 机器上设置端口映射(端口转发),以适应您最喜欢的打印协议所使用的任何端口。这样做的一个缺点是您的打印机的服务公告无法通过 NAT,因此当人们浏览时,您的打印机不会自动出现在网络上。他们必须手动设置打印队列以打印到您的 Ubuntu 机器的“公共”IP 地址,而您的 NAT 端口映射将负责将该流量转发到您的打印机。
第三个选项可能是在您的 Ubuntu 机器上设置某种打印服务器软件,这样您的 Ubuntu 机器就可以在网络上提供打印服务,实际上只是将打印作业假脱机并将它们分派到打印机。您可能仍必须确保打印机未尝试使用与您的主网络相同的 IP 子网,否则您的 Ubuntu 机器的网络堆栈会对默认使用哪个接口来处理该子网感到困惑。但在这种情况下,您可能不需要在您的 Ubuntu 机器上执行 NAT。
请注意,有些盒子可以做 Proxy STA,价格非常便宜,比如 38 美元(美国)。它们通常被称为“无线以太网桥”或“无线游戏适配器”或类似的名称。如果您考虑一下您的小时工资率以及通过 Ubuntu 实现此目的所花费的时间或将花费的时间,那么直接去电子产品商店购买其中一种设备可能更经济。