首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将端口443 (IPv4)上的所有通信量路由到端口80 (IPv6)上的外部IP地址

将端口443 (IPv4)上的所有通信量路由到端口80 (IPv6)上的外部IP地址
EN

Ask Ubuntu用户
提问于 2022-12-10 20:09:37
回答 3查看 502关注 0票数 2

我想主持一个网站从家里使用Yggdrasil网络。Yggdrasil在家里给我一个静态的IPv6地址(即使在DNS后面)。然而,“常规”用户不能被路由到该IP地址,除非使用Yggrasil本身,这是一个太多的要求。

因此,我的解决方案是租一个带有静态IPv4地址的小VPS,并在上面运行Yggdrasil。因此,现在我需要将来自VPS上https端口443的所有IPv4流量路由到我的家庭机器的静态Yggdrasil IPv6地址上的端口80,因为它也在运行Yggdrasil,所以VPS可以看到这个地址。

哪个Linux工具最能让我高效、轻松地做到这一点?

基本上:将一台机器的IPv6 4:443上的所有通信量路由到另一台机器的IPv6 6:80。

编辑后Artur Meinild详细回答:

当我看到GUI是多么的好的时候,我更喜欢轻量级的、可执行的、基于命令行的,并且尽可能接近Linux哲学。

EN

回答 3

Ask Ubuntu用户

回答已采纳

发布于 2022-12-18 13:01:53

这是我自己的答案。获取您在vps上端口上的任何http或https流量,并将其全部转发到外部IPv6端口80。效果很好。

代码语言:javascript
复制
global
    maxconn 4096
    spread-checks 3

defaults
    mode http
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms

frontend ipv4-in
    bind *:80
    bind *:443
    default_backend ipv4-to-ipv6

backend ipv4-to-ipv6
    server ipv6 [xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx]:80

还没有弄清楚证书的含义。

票数 1
EN

Ask Ubuntu用户

发布于 2022-12-14 14:34:34

我使用Nginx代理管理器来管理反向代理。这为Nginx反向代理配置提供了一个很好的UI。还有其他反向代理解决方案可以做同样的事情,比如HA-代理特雷菲克

要起作用的先决条件是:

  • 您已经使用公共DNS服务(IPv4)为您的站点设置了DNS A记录(yoursite.yourdomain.tld)。
  • 您的VPS上有设置码头 (包括Docker )

安装和配置:

我所配置的安装Nginx是详见

基本上,您创建了这样一个docker-compose.yml文件--在您希望持久数据位于的目录中(我的是/mnt/docker-data/nginx-proxy-manager):

代码语言:javascript
复制
version: "3"
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      # These ports are in format <host-port>:<container-port>
      - '80:80' # Public HTTP Port
      - '443:443' # Public HTTPS Port
      - '81:81' # Admin Web Port
      # Add any other Stream port you want to expose
      # - '21:21' # FTP
    environment:
      DB_MYSQL_HOST: "db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "npm"
      DB_MYSQL_PASSWORD: "npm"
      DB_MYSQL_NAME: "npm"
      # Uncomment this if IPv6 is not enabled on your host
      # DISABLE_IPV6: 'true'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    depends_on:
      - db

  db:
    image: 'jc21/mariadb-aria:latest'
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: 'npm'
      MYSQL_DATABASE: 'npm'
      MYSQL_USER: 'npm'
      MYSQL_PASSWORD: 'npm'
    volumes:
      - ./data/mysql:/var/lib/mysql

您可以在其中调整以下内容:

  • '81:81' # Admin Web Port:如果您希望将端口9999暴露在外部,而不是管理接口的端口81,则更改为'9999:81
  • 您可以根据自己的喜好更改MYSQL用户和密码。

完成.yml后,运行:(Docker V2)

代码语言:javascript
复制
docker compose up -d

或旧版本:(Docker Compose V1)

代码语言:javascript
复制
docker-compose up -d

现在转到ip.of.your.vps:9999 (如果您将管理端口更改为此),并使用默认用户登录:

代码语言:javascript
复制
Email:    admin@example.com
Password: changeme

你得改变这个信息。

现在,创建一个新的代理主机,您将看到这样一个窗口:

输入以下内容:

  • 在“域名”中,输入使用DNS设置的FQDN (在我的示例yoursite.yourdomain.tld中)
  • 在"Scheme“中输入HTTP (因为您转发到HTTP/端口80)
  • 在“转发主机名”中输入家庭计算机的IPv6地址
  • 在“前进端口”中输入80

点击“保存”。

此外,您还可以为站点设置SSL证书(使用内置的加密函数),因此可以在VPS的端口443上使用HTTPS。

这个解决方案的好处:

  • 不错的图形用户界面
  • 所有配置(转发、证书等)在单个接口中进行管理
  • 灵活,您也可以将其用于其他站点(反向代理在子域上进行筛选)

这个解决方案的挑战:

  • 需要对DNS、Docker和容器本身进行额外设置。
  • 如果你只需要这个网站的话,那就太过分了。
票数 1
EN

Ask Ubuntu用户

发布于 2022-12-15 11:19:43

在阅读了你的问题后,我问自己,为什么你不把你的网站放在VPS上,并且摆脱这样的代理场景。如果您使用代理走这条路,您需要一个服务器(或转发)代理。此代理有3项任务:

  1. 将所有请求转发到服务器
  2. 终止SSL(来自Artur)
  3. 将ipv4翻译成ipv6

需求

你的VPS必须是双重叠加的。

要使用的产品:(其中一种需要)

  • Nginx
  • 鱿鱼
  • 阿帕奇

向谷歌博士要样品康菲斯。

码头:

我会去找码头,但这不是要求。有一个小的,丑陋的东西与码头,ipv6支持是正式的实验性,并没有启用默认。您将需要启用IPv6。

由Artur描述的DNS /证书。

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1445003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档