使用 NAT 后面的 VPN 托管 NGINX 服务器

使用 NAT 后面的 VPN 托管 NGINX 服务器

我使用 T-Mobile 移动路由器在 Raspberry Pi 上托管使用 NGINX 的服务器。一切都工作正常,直到今天我注意到 T-Mobile 有时开始将我置于 NAT 后面。

我听说如果您设置了 VPN 网络或 SSH 隧道,您仍然可以访问服务器,但我不知道该怎么做。

我在互联网上搜索,但没有找到任何有关如何使用移动网络进行操作的教程,所以我想在这里询问。抱歉,如果这个问题之前已被回答过。

答案1

欢迎遇到本地服务器的麻烦。

这种不对称是云服务扩散和不公平优势的直接原因。

您所观察到的问题是由于许多 ISP 根本不再向您出售我所说的“真正的互联网接入”这一事实造成的。

特别是对于移动运营商来说,您真正得到的是某种残缺的解决方案,它只是美化了用于消费内容的单向数据管道,适用于“平民”(或所谓的“规范者”),但并不真正适合发布您自己的互联网服务。

现在,有了足够的胶带和抽象层,你就可以围绕任何问题进行过度设计,但根据我的经验,真正解决问题总是要好得多。

所以现在我为您提供了几种行动路线:

  1. 真正解决问题:获得“真正的互联网接入”
  2. 重新思考问题:你想解决什么问题?
  3. 如果以上两种方法都失败了,就通过“导管化”来解决

以下是解决方案的详细信息:

1. 真正解决问题:获得“真正的互联网接入”

我曾经为我的客户提供指导,但现在我的时间越来越贵,我总是推动客户寻求真正的解决方案。多年以后,事实证明这种方法的效果要好上千倍。

在这种情况下,真正的解决方案是获得具有以下属性的“真正的互联网访问”:

  1. 你得到一个真实的外部IP(不在NAT后面)(动态IP也可以,但静态是首选)
  2. 您必须有能力打开/重定向关键端口

如果您的 T-Mobile 代表可以为您提供具有这些属性的服务,请联系他们。通常触发销售小人的神奇词是“静态IP”或“你自己的VoIP服务器”,这会导致商店给你找一个有能力的人,或者直接拒绝你。

如果商店完全拒绝你,通常是因为他们实际上被定位为“家庭顾客”商店。其中许多商店只是特许经营(他们只销售预先打包的 T-Mobile 连接并拥有 T-Mobile 品牌,但他们并不真正处理连接的运营,这是真正的 T-Mobile 业务)。

如果你被拒绝,虽然这似乎是一个死胡同,但现在还不是:如果你 180 度改变你的想法并将自己重新定位为企业,你可以走得更远。是的,我知道。

例如,就我个人而言,我为自己创办了一家公司,并通过该公司运营我所有的联系,甚至是家庭和移动联系。作为公司,我有资格联系 T-Mobile、Orange、O2(或您拥有的)商业服务。他们通常有完全不同的销售手册,并且可以为同一区域和接入点提供完全不同的连接类型。商业服务部门通常不是 ISP 的实际子公司,而是一些“规范的东西”特许经营权。

根据我的经验,作为企业客户,即使是支持电话也会更短,ISP AVR 会更快地将您转移给更高级别的技术人员(不仅仅是一些人类鹦鹉和人类录音机循环重复某些短语(您是否重新启动了路由器?),而是真实的技术人员实际上解决了您的问题)。

对于客户来说,有时我会打电话给该地区的所有移动运营商,从他们那里获取业务计划,然后再次给他们打电话,向自己推销他们的产品(你会惊讶地发现有多少次,尤其是 Orange 可以提出令人愉快的交易) - 他们非常注重商业)。

另外,不要忽视小型本地(市/县/镇级)运营商,他们通常可以使用完全不同的技术(通常是 WIFI)进行非常非常有趣的交易。由于它们是较小的公司,因此交易通常对您来说更容易调整。

如果你获得静态IP,那你就是黄金了。使用静态 IP,您现在可以轻松地将世界可见的 DNS 名称直接分配给您的服务器(即您几乎可以从任何地方连接)。

如果你只得到 dynip - 你现在必须以某种方式将 IP 更新发布到互联网上:要么你在另一个网络服务器/虚拟主机的帮助下编写自己的解决方案,要么使用像 no-ip.org 这样的 dynip 服务(有很多类似的服务)。

根据我的经验(取决于链接的质量),no-ip 通常每年都会由于某种原因严重中断一次。它通常比静态 IP 更不稳定。

业务级连接价格通常在 1.2-1.5 范围内,有时甚至比同类“规范”连接价格高出 2.0 倍以上,但我或我的客户几乎总是很高兴我们坚持下去。

我所描述的处理方式相当乏味且更昂贵,但你付出的代价是便利性、可行性以及最终更好的服务。

我还想提醒您,几年前,运营商级 NAT 地址池已被添加到 IANA 保留 IP 地址池中,这些地址池相当大,这意味着越来越多的常规客户(又名普通客户)将被放入这些 NAT 池中。它正在迅速成为移动连接的现实,即使几年前还没有实现(住宅移动连接)。由于 dynip 和静态 IP 地址的数量相当有限,您越早获得连接,您的未来就会越好。

IPv6 本来应该解决这个问题,但情况似乎并非如此,尤其是在移动领域。

要求:

  • 圆周率
  • “真正的互联网连接”
  • 没有任何内容(原始 IP)或具有静态 IP 的 DNS 编辑能力的域,或用于动态 IP 跟踪的 no-ip/webserver,对于静态 IP,这第三步是完全可选的

2. 重新思考问题:你想解决什么问题?

但也许你的整个设计和架构都是错误的。你想解决什么问题?为什么要在 Pi 上运行 nginx?

如果您只想在网络上发布您的 Pi 数据,您应该按照移动领域中所有监视广告软件的方式进行操作:您应该购买一些已经在网上的服务器/网络服务器,并将数据从 Pi 推送到它。即您应该反转数据流方向。

这样你就不用担心NAT穿透了。您的 Pi 将连接到 myserver.com(已经可以轻松访问)并在那里发送数据。然后,您可以从 myserver.com 观察 Pi 连接。在服务器上运行批量计算和所有内容,并通过 myserver.com 上运行的 nginx 呈现摘要。

这对你自己来说不是更好的解决方案吗?

为此,您必须购买另一项服务(除非您已经拥有):可访问互联网的服务器或网络服务器。

要求:

  • 圆周率
  • 网络上的服务器/网络服务器/容器/VPS,最好有 DNS 名称

3.如果以上两个都失败,就“ductapizing”死解决

如果您无法获得良好的连接协议,也无法通过将数据从 Pi 流式传输到服务器来解决您的问题,例如您需要能够从网络“远程”访问和“进入”Pi 系统,那么是的, VPN 是您唯一的解决方案。

这基本上是解决方案 2 的更复杂的变体。)不同之处在于,您实际上是在指示 Pi 通过 VPN 隧道连接到可访问互联网的服务器,而不是将数据从 Pi 发送到可访问互联网的服务器。

也就是说,您必须购买另一项服务:可访问互联网的服务器。

这不能是特殊情况的虚拟主机服务器,而是真正成熟的服务器(或至少是像 lxc 这样的 VPS/容器)。

获得服务器后,您需要在 Pi 和服务器上部署 VPN 解决方案:

  • SSH甚至可以与云容器桥接 Pi(容器无法加载内核模块)
    • 您将遇到 SSH 连接活跃度监控问题,请参阅 autossh(1) 以获取可能的解决方案(有时检测会中断)
    • SSH“VPN”在用户空间中运行,效率不高,即带宽非常低,但您可以通过它浏览网页。
    • 它在速度和活跃可靠性方面有所欠缺,但却获得了令人难以置信的灵活性——有很多书只写了关于 SSH 隧道的书
  • 开放VPN甚至可以与云容器桥接 Pi(容器无法加载内核模块)
    • OpenVPN 可能比 SSH 稍快一些,但它仍然很慢并且相当低效,因为它仍然在用户空间中运行
  • 网络安全协议是非常成熟的VPN技术,但它来自企业和军事环境,因此它的设置和维护会很快变得非常复杂(拜占庭巴洛克式配置,许多移动方,设备和操作系统兼容性问题),需要真实的服务器(至少虚拟化 VPS)
    • 这是一项经常将公司分支机构网络连接到跨越整个互联网的全球公司网络的技术(将东京分支机构与纽约分支机构、Lodon 分支机构以及阿姆斯特丹和台湾的数据中心连接起来)
    • 这将需要真实的服务器(不能是容器/lxc,但可以是虚拟机),因为 IPSEC 内核模块必须加载到内核中
      • 但内核模块只是解决方案的一半
    • 这也需要 IPSEC 协调软件,在 Linux 上经常使用 Strongswan(1) - 这个东西协调内核并实际构建和绑定 VPN 连接在一起
    • 因为,连接建立后,所有加密通信都直接在内核中发生 - 这是非常高性能的解决方案,可以实现非常快的数据速率
    • 在获得足够的加密知识和 IPSEC 经验后,您可能会成功将 Cisco 交换机或 Windows 盒子直接连接到 IPSEC VPN 网络,因此 IPSEC 网络可以非常异构。
  • 线卫相对新人已经打破了多项记录,需要真实服务器(至少虚拟化VPS)
    • 非常、非常、非常容易设置 - 故意像 SSH 一样简单(旨在取代 SSH 用于 VPN) - 如果您曾经处理过复杂的 IPSEC,它们之间的区别是白天和黑夜
    • 它作为内核模块加载到内核中,因此需要真正的 VPS
    • 使用非常现代的低功耗高性能加密
    • 但感谢所有这些,速度也非常非常快(我经常在 1GBit 住宅光学设备上获得 20 MBytes/s)
    • Linux 和 OpenBSD 内核的标准设备有时
    • 因为它的准系统缺少很多自动化和工具,IP路由被委托给主机操作系统(即linux),所以你需要很好地了解如何设置路由和数据包转发

要求:

  • 圆周率
  • 网络上的服务器/容器/VPS,最好有 DNS 名称
  • VPN解决方案

根据我的经验得出的结论是:解决方案 1.) 通常是最好且最优化的解决方案。随着项目的扩展,解决方案 1.) 通常可以发展为非常强大的解决方案 3.)(VPN 相对于静态 IP 来说非常出色且简单)。如果您能够并且愿意反转数据流,则解决方案 2. 是最便宜且最容易实施的。解决方案 3.) 在与许多客户(许多使用笔记本电脑和“旅行”Pi 系统的呼叫远程工作人员)结合使用时是最不稳定且管理成本最高的

答案2

我喜欢NAT。它可以将互联网保留在我们的私人互联网之外,同时仍然允许您访问所有(公共)互联网。可以这么说,安全方面是一件好事。但就你而言,这是一场噩梦。这就是 IPv6 中不存在 NAT 的原因。所以第一个建议是,你能让它与 IPv6 一起工作吗?第二个建议,打电话给T-Mobile投诉。告诉他们您需要分配一个公共 IP 地址,以便您可以访问您的 Raspberry 或任何您喜欢的东西,例如视频监控。你可能需要抱怨很多次,直到有人明白你在说什么。

第三个建议,互联网上的 VPS 足以满足您的需求吗? VPS 便宜、功能强大并且可以用于很多事情。

如果所有方法都失败了,而您确实需要让您的 Raspberry 能够从互联网访问,请获取 VPS,在其上安装您喜欢的 Linux 版本,然后从您的 Raspberry 到 VPS 设置 VPN。这样,Raspberry 就是客户端,而 VPS 就是服务器。

由于您没有永久 IP 地址,因此您需要配置 VPN 以自动检测 IP 配置中的更改。对于 ssh,您需要一些自定义脚本,因为 ssh 中不包含该功能。 ”莫什" 可能是 ssh 的更好替代方案。

我个人会看看强天鹅伊凯夫2 https://en.wikipedia.org/wiki/Internet_Key_Exchange一个可以处理客户端 IP 变化的 VPN。 Google for Roadwarrior 配置与 Strongswan。

我希望这有助于您入门。

答案3

如果您在某处有另一台服务器,您可以运行 SSH 隧道来连接到它,或者在 RPi 设备上配置 OpenVPN 客户端来连接到它。

SSH 隧道可以帮助您,但如果由于互联网故障或其他原因导致连接丢失,则很难维持。 OpenVPN 在我的书中看起来更稳定。

相关内容