这是一位数据科学家正在构建家庭网络并寻求该领域有经验人士的意见。我想以正确的方式将以下组件连接在一起:
- 迷你电脑(Linux 服务器)
- 一堆智能家居设备
- 调制解调器/路由器
Mini-PC 将用作 Web 服务器、FTP 服务器、DNS 服务器、HTPC 和家庭助理智能家居设备的中心。起点是设置一个 ssh 服务器,以便能够远程访问我的服务器。我遇到的第一个问题是我的调制解调器/路由器不支持端口转发或 UPnP(这不是理想的解决方案,因为它很危险?),因此无法从外部访问。
我)
关于端口转发,我遇到了一款名为恩格罗克,这使我能够做我想做的事情。我唯一担心的是,它使用他们的外部 DNS 服务器来绕过 NAT 并解析路由,这是否会导致安全问题?如果可能的话,我宁愿把所有东西都放在本地。我还阅读了有关使用 iptables 进行端口转发的信息:
sysctl net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -p tcp -d 10.0.0.132 --dport 29418 -j DNAT --to-destination 10.0.0.133:29418
iptables -t nat -A POSTROUTING ! -s 127.0.0.1 -j MASQUERADE
我只是不确定如何处理流量?我的迷你电脑是否需要通过以太网连接到调制解调器才能工作,或者这些数据包是否会在整个网络上广播,然后由具有相应路由规则的设备接管并处理它们?
我当然也愿意接受其他路由解决方案,所以请联系我 :)
二)
假设我想使用迷你电脑来处理所有流量,而不是使用额外的路由器。这个想法有多好?直接暴露这些服务器是否存在安全问题(即使服务器上有默认防火墙)?我是否必须将迷你电脑设置为 AP 模式,然后将所有设备直接连接到它,还是它能够以某种方式拦截流量,然后相应地处理包?如果我将迷你电脑设置为 AP 模式,我认为我会观察到较差的网络性能,因为迷你电脑的 wifi 卡与路由器内的 wifi 卡无法相比,对吗?
三)
我还想监控我的网络并概览流量分析。这个问题与二),但我始终想知道这是否基于拦截原理,还是流量必须流经设备,或者两者皆可?你对此有什么建议吗(例如,带有平庸的仪表板和分析功能 - 因为我无论如何都要托管一个 Web 服务器)?
答案1
关于端口转发,我遇到了一款名为 ngrok 的软件,它让我能够做我想做的事情。我唯一担心的是,它使用外部 DNS 服务器来绕过 NAT 并解析路由
它利用其外部中继服务器。仅靠 DNS 永远不足以突破 NAT 或防火墙。(不过,Ngrok 中继服务器确实利用 DNS 来实现 HTTP 虚拟托管目的。)
具体来说,该程序的工作原理是出站连接到 Ngrok 中继主机,使其始终处于空闲但活动状态,并通过该连接搭载(隧道)传入请求。从路由器的角度来看,根本没有任何入站连接,只有一个非常长的出站连接。
这是否会导致安全问题?
该连接仅导致 Ngrok 软件(代理)在您的机器上运行,因此唯一的潜在问题可能来自代理中的漏洞(例如,解析收到的 HTTP 请求的方式存在问题)。该代理是用 Golang 编写的,与用 C 编写的等效程序相比,此类漏洞出现的可能性要小得多。
然而,Ngrok 确实通过其服务器中继所有流量,因此您需要考虑是否对此感到满意。
如果可能的话,我宁愿把所有东西都放在本地。我还读过关于使用 iptables 进行端口转发的文章:
[...]
我只是不确定如何处理流量?我的迷你电脑是否需要通过以太网连接到调制解调器才能工作,或者这些包是否会在整个网络上广播,然后具有相应路由规则的设备接管并处理它们?
其实都不是。服务器无法通过路由器将流量“拉”到自己,数据包绝不正如您所描述的那样,在整个 LAN 上进行广播。
需要设置此类端口转发规则在外部路由器上– 当前拥有您的“公共” IP 地址的 IP 地址。在大多数情况下,这将是您的调制解调器,其基于 Web 的控制面板提供“端口转发”或“虚拟服务器”选项。
iptables DNAT 示例不适用于普通服务器;相反,它适用于使用基于 Linux 的 PC 的用户作为家庭路由器(意味着它已经准备好接收流量),因此它们的目的不是将数据包“拉”入系统,而是处理已经接收的数据包。
以太网与 Wi-Fi 在这里没有区别;无论底层传输方式如何,IP 的行为方式都相同。
(当然,对于服务器来说,以太网更适合其他原因,特别是因为它是专用的全双工链路,而从一个 Wi-Fi 链路跳转到另一个 Wi-Fi 链路会严重降低性能。但这与 IP 和数据包的行为完全无关。)
假设我想使用迷你电脑来处理所有流量,而不是使用额外的路由器。这个想法有多好?
主要取决于您对计划使用的操作系统的熟悉程度(您要使用原始 Linux?OpnSense?OpenWRT?),以及迷你电脑是否物理上有足够的以太网接口(两个会更好 - 如果只有一个,您将需要一个支持 VLAN 的以太网交换机来通过该端口多路复用两个网络)。
(全尺寸 PC 可以轻松以 PCI-Express 卡的形式安装额外的以太网端口;对于迷你 PC,您必须使用 USB,这在最好的情况下是可以接受的,但并不理想。)
直接暴露这些服务器是否存在安全问题(即使服务器上确实有默认防火墙)?我是否必须将我的迷你电脑设置为 AP 模式,然后将所有设备直接连接到它上面,或者它是否能够以某种方式拦截流量,然后相应地处理包?
我实在不确定你在这里的意思。
当比较已经通过调制解调器的端口转发等“暴露”的服务器时,没有区别。只要其他人可以连接到 TCP 端口并与服务通信,他们就可以连接到 TCP 端口并与服务通信;路由器和调制解调器都不会以某种方式拒绝通过它们已经允许的连接发送的“恶意”数据包。
当比较通过 Ngrok“公开”的服务器时,除非您使用 Ngrok 的身份验证功能,否则差异也很小。而 Ngrok 等代理可以有安全规则来阻止某些已知的恶意 HTTP 请求(一些 CDN 提供这样的功能),我不确定他们是否在其免费套餐中提供此功能。
我是否必须将我的迷你电脑设置为 AP 模式,然后将所有设备直接连接到其上,或者它是否能够以某种方式拦截流量,然后相应地处理数据包?
设备(无论是服务器还是路由器)无法像那样“拉”或“拦截”流量。如果您想让迷你电脑成为路由器,则需要手动将其放置在路径中(例如连接调制解调器→迷你电脑→LAN)。
请记住,作为 Wi-Fi AP(“AP 模式”)是完全独立迷你 PC 无需充当路由器即可充当 IP 数据包的任务。迷你 PC 可以充当 AP 而无需充当路由器(这样它就无需承担任何特殊连接要求),也可以充当路由器而无需充当 AP。
(一般来说,它可以成为一个很好的路由器,但却是一个很差的 AP。)
如果我将迷你电脑设置为 AP 模式,我认为网络性能会比较差,因为迷你电脑的 wifi 卡与路由器内部的 wifi 卡是无法相比的,对吗?
对于 Wi-Fi,通常是的,即使迷你 PC 可能支持 AP 模式,它也可能不会针对该模式进行优化。(例如,专用 AP 上的多个天线不是无缘无故的 - 它们协同工作以实现波束成形等功能。)
再次强调,作为 Wi-Fi 的 AP 与作为 IP 流量的路由器是完全不同的任务。您可以将迷你 PC 用作纯粹的 IP 路由器没有任何 Wi-Fi,然后通过以太网将其连接到一个或多个专用 Wi-Fi AP(“企业”AP,或者只是 AP 模式下的常规无线路由器)。