AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-267118

pleasedesktop's questions

Martin Hope
pleasedesktop
Asked: 2021-07-01 22:43:10 +0800 CST

如何在 Elastic Beanstalk 环境的 Application Load Balancer 上设置条件重定向?

  • 0

我有两个基于 Docker 的单实例 Elastic Beanstalk 环境(一个用于暂存,一个用于生产)。

我想将(Elastic Beanstalk)应用程序迁移到负载均衡器后面(主要是为了利用AWS Certificate Manager)。

目前我正在使用.ebextensions自定义 Nginx 配置以满足我的应用程序的流量路由要求:

  • 对于 path /xyz/,流量应该通过端口 80(即 HTTP)进入应用程序
  • 对于对端口 80 的所有其他请求,应发出对端口 443 (HTTPS) 的 (301) 重定向响应。
  • 端口 443 (HTTPS) 上的所有请求都应通过应用程序。

所以我的问题是:如何在我的一个 Elastic Beanstalk 环境前使用负载均衡器来满足这些路由要求?为了灵活性,我正在考虑每个环境有一个负载均衡器。

我遇到了以下可能的解决方案(似乎都不理想):

  1. 使用专用的应用程序负载均衡器设置新的 Elastic Beanstalk 环境,然后通过 EC2 控制台服务修改负载均衡器的侦听器和规则(类似于此Elastic Beanstalk 文档条目似乎建议的内容,在“将 HTTP 流量重定向到 HTTPS > 配置”下负载均衡器”)。
  2. 通过 EC2 控制台服务设置一个新的 Application Load Balancer,创建一个连接到新 Application Load Balancer 作为共享 Application Load Balancer的新 Elastic Beanstalk 环境,然后按照这些指南(this和this)来(希望?)确保负载均衡器和 Elastic Beanstalk 环境是同步的(在实例管理和流量路由方面)。
  3. 使用专用 Application Load Balancer 设置新的 Elastic Beanstalk 环境,然后修改应用程序,使其侦听三个端口(一个用于/xyz/流量,一个用于 HTTP -> HTTPS 重定向,一个用于 HTTPS 流量),文档这里似乎在告诉我这样做(但没有提及如何在单个应用程序上实现多个监听端口)。

选项一和二涉及在 Elastic Beanstalk 的“后面”修改底层资源(我很犹豫),而第三个选项将要求我修改我的应用程序(我想尽量避免)。

是否建议使用这些选项?有更好的选择吗?

load-balancing redirect amazon-web-services elastic-beanstalk conditional
  • 1 个回答
  • 388 Views
Martin Hope
pleasedesktop
Asked: 2016-03-01 19:03:53 +0800 CST

lxc/lxd iptables 输出所有者规则错误并显示“无效参数”。

  • 0

如果我尝试在我的 lxc/lxd Ubuntu 14.04 amd64 容器中运行以下命令:

iptables -A OUTPUT -p tcp -m owner --uid-owner 0 -m tcp --dport 80 -j ACCEPT

我收到以下错误消息:

iptables: Invalid argument. Run `dmesg' for more information.

...但/var/log/dmesg没有得到任何额外的输出。

我确信 iptables 规则是有效的,因为它适用于 lxc/lxd 主机和其他机器。似乎有问题的部分是所有者部分,即如果我运行它:

iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

...它工作正常。

这对我来说似乎是 lxc 中的一个错误,但有什么办法可以进一步调查它吗?

编辑 1

我使用调试标志从源代码构建 iptables,然后跟踪执行。这使我找到了iptables-standalone.c文件,其中:

int iptc_commit(struct xtc_handle *handle);

...函数返回EINVAL错误代码。问题是我无法追踪该功能的来源。它似乎位于libip4tc.so共享库中,但我无法追踪该库的来源。

如果有人知道来源,如果你能告诉我,我将不胜感激。

编辑 2

请参阅我创建的这个lxc GitHub 问题,它描绘了更多的图片。我要放弃了,只是因为这项工作对我来说影响深远,当我可以通过避免容器中“所有者”匹配的 iptables 规则来解决这个问题时。

iptables
  • 1 个回答
  • 862 Views
Martin Hope
pleasedesktop
Asked: 2016-02-24 23:02:53 +0800 CST

如何使局域网可以访问 lxd 容器

  • 3

如果我使用 Virtualbox 来启动 VM,我可以选择“桥接”作为网络适配器类型,这会导致来宾/虚拟 NIC 连接到我的物理 LAN,从而从我的路由器获取 LAN IP(通过 DHCP)。

我想实现同样的功能,但我不想使用 Virtualbox,而是想使用 lxc/lxd 容器。

我怎样才能做到这一点?

编辑 1

我正在运行 Ubuntu,并尝试遵循本指南:

https://insights.ubuntu.com/2015/11/10/converting-eth0-to-br0-and-getting-all-your-lxc-or-lxd-onto-your-lan/

……但这无济于事。原来的主机接口之后应该有一个IP吗?因为当我尝试手动桥接时它不会。

编辑 2

如果有帮助,我的 lxd/lxc 主机是运行 Ubuntu 的 Virtualbox 虚拟机,设置了与我的物理以太网 NIC 的桥接网络。

编辑 3

如果我使用 tcpdump 监控桥接接口、物理/主机接口和容器/虚拟接口上的 icmp 流量,只有容器/虚拟接口没有任何流量。其他两个可以。

编辑 4

根据本指南:

http://www.microhowto.info/troubleshooting/troubleshooting_ethernet_bridging_on_linux.html

我的网桥设置没有问题。

然而,正如“编辑 3”中所述,容器接口没有获得任何流量。需要找出原因,但我不知道如何...

我觉得它与路线有关。

容器没有路由,而主机有。

编辑 5

使用 tcpdump 监控 arp 流量,表明 arp 流量实际上正在到达容器/虚拟接口。

所以只是icmp流量不是。

编辑 6

如果我在容器中设置了一个静态 IP(通过 /etc/network/intefaces*),那么我就可以从主机(这是一台 Virtualbox 机器)对容器进行 ping 操作。

如果我随后更改 Virtualbox 中的网络配置以允许混杂流量,那么我可以从我的物理机(Virtualbox 机器的主机)ping 容器。然而,从这里,我仍然无法从容器内 ping 到我的物理 LAN 之外。

最后一步,如果我在容器中手动添加“默认”路由,如下所示:

route add default gw 192.168.0.1 eth0

这允许我从容器内部 ping 物理 LAN 外部。

因此,除非其他人可以提供解释(我会在发布答案之前等待),否则我猜测缺少容器 DHCP 支持(通过桥接)与 lxc/lxd 使用 netmasq 处理 DHCP 的事实有关(和 DNS)。

ip
  • 3 个回答
  • 9483 Views
Martin Hope
pleasedesktop
Asked: 2015-01-25 18:22:07 +0800 CST

按域名限制传出网络流量 (Linux)

  • 2

我的根本目标是能够防止攻击者在我的服务器上进行未经授权的传出连接(例如,用于连接回壳)。

我可以通过使用“ufw”阻止所有传出流量的端口来实现这一点,除了服务器需要运行的端口(即DNS、HTTP、SSH和SMTP)。

ufw 允许我只允许到静态 IP 地址的传出 DNS 连接(因此我将配置服务器以使用 Google DNS),它允许我限制发往 127.0.0.1 的传出 SSH(我的自动部署脚本需要使用 Git)。

据我所知,ufw 并没有真正允许基于域名的传出限制,这是有道理的(从性能角度来看)。我需要能够执行此操作以限制与我的邮件服务器域的传出 SMTP 连接(目前仅使用 Gmail 进行测试)以及与 Ubuntu 服务器的 HTTP 连接(用于系统更新)。

我知道 iptables 允许您根据域指定规则,但它们在启动时被转换并且不是每次都执行(即反向 DNS)。我知道这是出于性能原因的设计。

那么通过域名限制传出网络流量的解决方案是什么(即每个传出连接都需要将其目标IP地址反向DNS并与域名白名单匹配)?

我在想,如果我不能使基于域的传出限制的一半起作用,那么使用 ufw 通过 IP 限制 DNS 和 SSH 没有多大意义。

  • 编辑 1* 所以我已经研究出如何直接使用 iptables 将发往某个端口(例如 80)的传出“转发”到另一个端口。

然后我意识到在接收转发的流量时无法知道原始目标IP地址是什么。就在那时我找到了https://github.com/mitmproxy/mitmproxy并发现它(作为一个透明的 Python 代理)与 iptables 接口进行交互以计算出套接字的原始目标 IP 地址是什么。

我还没有让它全部工作,但我很确定这种方法应该有效。

domain-name-system
  • 1 个回答
  • 3995 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve