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-0

's questions

Martin Hope
elementmg
Asked: 2024-08-23 06:51:51 +0800 CST

配置以使 Web 服务器使用在 kubernetes 部署中安装的证书

  • 5
该问题已从 Stack Overflow迁移,因为它可以在 Server Fault 上得到解答。 已于 23 小时前迁移 。

我希望在 kubernetes 集群中运行的应用程序使用在我的 deploy.yaml 文件中定义的卷中挂载的证书。

我没有使用 ingress,而是将我的服务设置为 LoadBalancer。我找不到如何让此服务处理 tls 终止。所以我选择了另一条路线,我必须在 pod 中安装和使用证书。

我在应用程序的部署.yaml 文件中挂载了一个包含证书信息的密钥。pod 已启动并运行,并已成功找到此密钥。唯一的问题是 Web 服务器未配置为使用证书,因此我的站点不可用。如何设置 Web 服务器以使用证书?可以在 docker 文件中的命令中设置吗?

Web 服务器正在运行:npm run preview

检查 package.json 文件,这是:“preview”:“vite preview”

我可以配置 vite 以使用存储在 kubernetes 容器中的证书吗?是否可以在我的 dockerfile 中设置它?

已安装证书的部署部分

          volumeMounts:
            - name: cert-volume
              mountPath: "/etc/ssl/certs"
              readOnly: true
      volumes:
        - name: cert-volume
          secret:
            secretName: my-secret

我在网上查了一下,确实没有找到太多方法可以让我的 npm web 服务器使用此证书进行 TLS 终止。我怀疑我可以在 package.json 或直接在 dockerfile 中添加一些内容来指向我的 kubernetes 容器中的这个目录。

有没有人有类似的设置或经验?

docker
  • 2 个回答
  • 10 Views
Martin Hope
Bender Rodriguez
Asked: 2024-08-07 07:55:05 +0800 CST

每日重启 Google Cloud COS 容器

  • 5
该问题已从 Stack Overflow迁移,因为它可以在 Server Fault 上得到解答。37 分钟前迁移 。

我正在 COS(容器操作系统)实例上部署容器。非常简单。

我希望它每天重启。最好的方法是什么?我可以在虚拟机上设置一个简单的 CRON 选项卡吗?问题是每次重新部署虚拟机时都需要重新执行此操作。

google-cloud-platform
  • 2 个回答
  • 5 Views
Martin Hope
piyush sachdeva
Asked: 2024-08-01 11:15:27 +0800 CST

AWS EC2 上的 Kubernetes - 由未知机构签名的私有注册表证书

  • 5
该问题已从 Stack Overflow迁移,因为它可以在 Server Fault 上得到解答。 已于 38 分钟前迁移 。

问题摘要

我有一个 Kubernetes 集群 1.30,运行在 3 个 AWS EC2 服务器、1 个主节点和 2 个工作节点上。我正在尝试使用registry:2.8.2CNCF 分发项目的映像部署私有容器注册表。我已按照下面列出的步骤操作,但在尝试执行 docker 登录注册表时收到错误“x509 证书由未知机构签名”。

注意:我正在使用自签名证书。

重现步骤

  1. 创建自签名证书和用户身份验证。TLS 证书使用 OpenSSL:

    mkdir registry
    cd registry
    mkdir certs
    mkdir auth
    
    openssl req -x509 -newkey rsa:4096 -days 365 -nodes -sha256 -keyout certs/tls.key -out certs/tls.crt -subj "/CN=my-registry" -addext "subjectAltName = DNS:my-registry"
    
  2. 用于htpasswd添加注册表访问的用户身份验证。私有注册表的凭据为myuser/mypasswd:

    docker run --entrypoint htpasswd httpd:2 -Bbn myuser mypasswd > auth/htpasswd
    
  3. 创建一个 secret 来挂载证书(secret type tls):

    kubectl create secret tls certs-secret --cert=/home/ubuntu/day42/registry/certs/tls.crt --key=/home/ubuntu/day42/registry/certs/tls.key
    
  4. 创建身份验证的秘密:

    kubectl create secret generic auth-secret --from-file=/home/ubuntu/day42/registry/auth/htpasswd
    
  5. 创建本地目录并应用 PV PVC。

  6. 创建注册表 pod。

apiVersion: v1
kind: Pod
metadata:
  name: docker-registry-pod
  labels:
    app: registry
spec:
  containers:
  - name: registry
    image: registry:2.8.2
    volumeMounts:
    - name: repo-vol
      mountPath: "/var/lib/registry"
    - name: certs-vol
      mountPath: "/certs"
      readOnly: true
    - name: auth-vol
      mountPath: "/auth"
      readOnly: true
    env:
    - name: REGISTRY_AUTH
      value: "htpasswd"
    - name: REGISTRY_AUTH_HTPASSWD_REALM
      value: "Registry Realm"
    - name: REGISTRY_AUTH_HTPASSWD_PATH
      value: "/auth/htpasswd"
    - name: REGISTRY_HTTP_TLS_CERTIFICATE
      value: "/certs/tls.crt"
    - name: REGISTRY_HTTP_TLS_KEY
      value: "/certs/tls.key"
  volumes:
  - name: repo-vol
    persistentVolumeClaim:
      claimName: registry-pvc
  - name: certs-vol
    secret:
      secretName: certs-secret
  - name: auth-vol
    secret:
      secretName: auth-secret
  1. 创建服务舱。

  2. 导出环境变量:

    export REGISTRY_NAME="my-registry"
    Master-->export REGISTRY_IP="10.100.175.12"
    # (Above IP is the NodePort service IP)
    
  3. /etc/hosts在所有节点中添加以下条目:

    10.100.175.12 my-registry
    
  4. 复制tls.crt到/usr/local/share/ca-certificates所有节点并运行以下命令:

    sudo update-ca-certificates 
    
  5. 尝试登录注册表:

    docker login my-registry:5000 -u myuser -p mypasswd
    

错误详细信息

Error response from daemon: Get "https://my-registry:5000/v2/": tls: failed to verify certificate: x509: certificate signed by unknown authority

输出crictl info

crictl info |grep -i tls
    "enableTLSStreaming": false,
      "tlsCertFile": "",
      "tlsKeyFile": ""
docker
  • 2 个回答
  • 4 Views
Martin Hope
Josh Marcus
Asked: 2024-07-10 13:50:43 +0800 CST

无法触发 Google Cloud Artifact Registry 清理策略的试运行审核日志

  • 5
该问题已从 Stack Overflow迁移,因为它可以在 Server Fault 上得到解答。 已于 39 分钟前迁移 。

遵循 GCP 提供的文档:https ://cloud.google.com/artifact-registry/docs/repositories/cleanup-policy

我在我的工件存储库上设置了清理策略,并启用了试运行选项,但无法使用该命令输出任何审计日志。

gcloud logging read 'protoPayload.serviceName="artifactregistry.googleapis.com" AND protoPayload.request.parent:"projects/gift-service-app-jm/locations/australia-southeast1/repositories/gcf-artifacts" AND protoPayload.request.validateOnly=true' \
    --resource-names="projects/gift-service-app-jm" \
    --project=gift-service-app-jm

我能够确认策略已设置,并且使用命令启用了试运行gcloud artifacts repositories describe gcf-artifacts选项

{
  "cleanupPolicies": {
    "Delete Previous Versions": {
      "action": "DELETE",
      "condition": {
        "olderThan": "864000s",
        "tagState": "UNTAGGED"
      },
      "id": "Delete Previous Versions"
    }
  },
  "cleanupPolicyDryRun": true,
  "createTime": "2023-09-27T05:07:31.256470Z",
  "description": "This repository is created and used by Cloud Functions",
  "format": "DOCKER",
  "labels": {
    "goog-managed-by": "cloudfunctions"
  },
  "mode": "STANDARD_REPOSITORY",
  "name": "projects/gift-service-app-jm/locations/australia-southeast1/repositories/gcf-artifacts",
  "updateTime": "2024-07-10T05:39:56.088672Z"
}

以前有人遇到过这个问题吗?我已将所有者角色应用于我的 IAM 主体,但也尝试明确添加日志查看器和私有日志查看器角色。

google-cloud-platform
  • 1 个回答
  • 3 Views
Martin Hope
Jeff
Asked: 2024-03-20 08:14:04 +0800 CST

如何通过 helm 从 AGIC Addon 更改为 AGIC?

  • 5
这个问题是从 Stack Overflow迁移过来的,因为它可以在服务器故障上得到回答。 昨天迁移了 。

我有一个启用了 AGIC 插件的 AKS,我必须切换到 AGIC 作为舵图(https://learn.microsoft.com/en-us/azure/application-gateway/ingress-controller-install-existing)尝试将两个 AKS 群集连接到单个应用程序网关,但如何更改 AGIC 的设置方式?我虽然运行禁用插件可以解决问题,但是当我尝试应用 helm-config 文件时,我看到了以下错误消息:

Error: INSTALLATION FAILED: Unable to continue with install: IngressClass "azure-application-gateway" in namespace "" exists and cannot be imported into the current release: invalid ownership metadata; label validation error: missing key "app.kubernetes.io/managed-by": must be set to "Helm"; annotation validation error: missing key "meta.helm.sh/release-name": must be set to "ingress-azure-1710484411"; annotation validation error: missing key "meta.helm.sh/release-namespace": must be set to "ingress-nginx"

另外,由于某种原因,当我将网关连接到每个 AKS 的服务之一时,我必须手动切换网关的子网路由表,这违背了能够将 2 个 AKS 连接到网关的目的,想知道是否有解决方案这也是或者解决这个问题的方法。谢谢!

azure-aks
  • 1 个回答
  • 6 Views
Martin Hope
user1079961
Asked: 2024-03-11 20:11:05 +0800 CST

通过在同一服务器上运行的鱿鱼代理进行 SSH

  • 5

我目前正在通过 ssh 连接到我的服务器。我还有一个在同一服务器上运行的鱿鱼代理,我希望能够通过代理连接到 ssh,大概是通过服务器本地主机进行 ssh 吗?

目前尝试这样做会得到 403 响应。

我需要更改哪些配置才能使其正常工作?

另外,这是否被认为是好的做法,因为它将允许摆脱服务器端的 ssh 专用端口?

ubuntu
  • 1 个回答
  • 88 Views
Martin Hope
scene
Asked: 2023-09-12 03:29:36 +0800 CST

InvalidConfigurationRequest:负载均衡器无法附加到同一可用区中的多个子网

  • 6
这个问题是从 Stack Overflow 迁移过来的,因为它可以在服务器故障上得到回答。8 小时前迁移 。

我复制粘贴文件的一部分main.tf:

resource "aws_security_group" "servers" {
  name        = "allowservers"
  description = "Allow TCP:8080 inbound traffic to servers"
  vpc_id      = module.vpc.vpc_id

  ingress {
    from_port   = 8080
    to_port     = 8080
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

resource "aws_launch_configuration" "ubuntu" {
  image_id        = "ami-053b0d53c279acc90"
  instance_type   = "t2.micro"
  associate_public_ip_address = true
  security_groups = [aws_security_group.servers.id]

  user_data = <<-EOF
              #!/bin/bash
              echo "Hello, World" > index.html
              nohup busybox httpd -f -p ${var.server_port} &
              EOF
   # Required when using a launch configuration with an ASG.
  lifecycle {
    create_before_destroy = true
  }
}

data "aws_vpc" "my-vpc" {
}

data "aws_subnets" "my-vpc-subnets" {
    filter {
      name = "vpc-id"
      values = [data.aws_vpc.my-vpc.id]
    }
}

resource "aws_autoscaling_group" "ubuntu_scaling" {
  launch_configuration = aws_launch_configuration.ubuntu.name
  vpc_zone_identifier = data.aws_subnets.my-vpc-subnets.ids

  target_group_arns = [aws_lb_target_group.asg.arn]
  health_check_type = "ELB"

  min_size = 2
  max_size = 10

  tag {
    key                 = "Name"
    value               = "terraform-asg-ubuntu"
    propagate_at_launch = true
  }
}

resource "aws_lb" "ubuntu-lb" {
    name = "terraform-asg-ubuntu"
    load_balancer_type = "application"
    subnets = data.aws_subnets.my-vpc-subnets.ids
    security_groups = [aws_security_group.alb.id]
}

resource "aws_lb_listener" "ubuntu-lb-listener" {
    load_balancer_arn = aws_lb.ubuntu-lb.arn
    port = 80
    protocol = "HTTP"

    #By default, return a simple 404 page
    default_action {
      type = "fixed-response"

      fixed_response {
        content_type = "text/plain"
        message_body = "404:ups"
        status_code = 404
      }
    }
}

resource "aws_security_group" "alb" {
  name = "terraform-asg-ubuntu"
  vpc_id   = data.aws_vpc.my-vpc.id
  # Allow inbound HTTP requests
  ingress {
    from_port   = 80
    to_port     = 80
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }

  # Allow all outbound requests
  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

resource "aws_lb_target_group" "asg" {
  name     = "terraform-asg-example"
  port     = var.server_port
  protocol = "HTTP"
  vpc_id   = data.aws_vpc.my-vpc.id

  health_check {
    path                = "/"
    protocol            = "HTTP"
    matcher             = "200"
    interval            = 15
    timeout             = 3
    healthy_threshold   = 2
    unhealthy_threshold = 2
  }
}

resource "aws_lb_listener_rule" "asg" {
    listener_arn = aws_lb_listener.ubuntu-lb-listener.arn
    priority = 100

    condition {
      path_pattern {
        values = ["*"]
      }
    }
    action {
      type = "forward"
      target_group_arn = aws_lb_target_group.asg.arn
    }
}

当我运行时,它会生成terraform apply以下错误:

│ Error: creating ELBv2 application Load Balancer (terraform-asg-ubuntu): InvalidConfigurationRequest: A load balancer cannot be attached to multiple subnets in the same Availability Zone
│       status code: 400, request id: 44b2abdb-a321-4f1e-bd6f-4b87aa943477
│
│   with aws_lb.ubuntu-lb,
│   on main.tf line 172, in resource "aws_lb" "ubuntu-lb":
│  172: resource "aws_lb" "ubuntu-lb" {

我还在文件中使用vpc模块modules.tf:

module "vpc" {
  source = "terraform-aws-modules/vpc/aws"
  version = "5.0.0"
  name = "my-vpc"
  cidr = "10.0.0.0/16"

  azs             = ["us-east-1a", "us-east-1f"]
  private_subnets = ["10.0.1.0/24", "10.0.2.0/24"]
  public_subnets  = ["10.0.101.0/24", "10.0.102.0/24"]

  enable_nat_gateway = true
  enable_vpn_gateway = true

  tags = {
    Terraform = "true"
    Environment = "dev"
  }
}

经过大量调试,我仍然不知道如何解决这个问题。

amazon-web-services
  • 1 个回答
  • 15 Views
Martin Hope
user951556
Asked: 2022-01-25 03:26:26 +0800 CST

类似的 iptables 规则放在一起

  • 0

我在 iptables 中有这些规则:

/sbin/iptables -N LOGGING
/sbin/iptables -A INPUT -j LOGGING
/sbin/iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped: " --log-level 7
/sbin/iptables -A LOGGING -j DROP

我可以添加这些规则还是应该更改?不确定,如果我使用“A INPUT -j LOGGING”和“A INPUT -j LOG”来双重记录。

/sbin/iptables -A INPUT -j LOG
/sbin/iptables -A FORWARD -j LOG
firewall linux iptables
  • 1 个回答
  • 31 Views
Martin Hope
user950320
Asked: 2022-01-15 13:21:20 +0800 CST

远程桌面连接仅适用于下载的文件

  • 0

当用户尝试使用远程桌面连接连接到任何远程计算机时,会出现以下框。当用户尝试在计算机上打开 .rdp 文件时,没有问题。非常混乱

错误框

remote-desktop
  • 1 个回答
  • 33 Views
Martin Hope
user942828
Asked: 2021-12-02 06:05:01 +0800 CST

从第三方服务访问 Azure Key Vault

  • 0

是否有可能访问 Azure Key Vault 并在 Vault 中选择一个机密以在其他服务中使用它。目标是存储秘密值以供第 3 方应用程序使用。至少,我正在尝试使用 Postman 进行测试,但我正在尝试找出通过 GET 访问密钥库的最佳方法。

非常感谢您的任何建议!

security azure
  • 1 个回答
  • 74 Views
Martin Hope
user394660
Asked: 2021-11-14 04:49:49 +0800 CST

找不到要转换的 vmdk 文件

  • 3

我的任务是将一些 VMWare 虚拟机(我只知道一点)转换为 Hyper-V。我知道我必须将.vmdkVMWare 的文件转换为.vhdx格式。

问题是我找不到.vmdk虚拟机的真实文件。有一个.vmdk大小为 150GB 的文件,但它实际上是 1KB,包含:

# Disk DescriptorFile
version=1
encoding="UTF-8"
CID=975e71e0
parentCID=ffffffff
createType="vmfs"

# Extent description
RW 314572800 VMFS "CRM Module Server-flat.vmdk"

# The Disk Data Base 
#DDB

ddb.adapterType = "lsilogic"
ddb.geometry.cylinders = "19581"
ddb.geometry.heads = "255"
ddb.geometry.sectors = "63"
ddb.longContentID = "a06670da1183767e899ee15c975e71e0"
ddb.uuid = "60 00 C2 9a 81 64 05 42-5c 9f d9 9f e7 61 ed fe"
ddb.virtualHWVersion = "14"

我注意到CRM Module Server-flat.vmdk并寻找它,但没有在任何地方找到它。

我错过了什么?

vmware-esxi
  • 1 个回答
  • 255 Views
Martin Hope
user394660
Asked: 2021-10-26 02:41:24 +0800 CST

在端口 80 上访问 MinIO API

  • 1

我的 MinIO API 正在侦听服务器的 IP 和端口 9000。它工作正常。

但是,如果我尝试将端口更改为 80 并重新启动服务,则无法启动:

● minio.service - MinIO
     Loaded: loaded (/etc/systemd/system/minio.service; disabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Mon 2021-10-25 12:37:04 CEST; 1s ago
       Docs: https://docs.min.io
    Process: 27026 ExecStartPre=/bin/bash -c if [ -z "${MINIO_VOLUMES}" ]; then echo "Variable MINIO_VOLUMES not set in>
    Process: 27027 ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES (code=exited, status=1/FAILURE)
   Main PID: 27027 (code=exited, status=1/FAILURE)

Oct 25 12:37:03 hel-sto-01 systemd[1]: minio.service: Main process exited, code=exited, status=1/FAILURE
Oct 25 12:37:03 hel-sto-01 systemd[1]: minio.service: Failed with result 'exit-code'.
Oct 25 12:37:04 hel-sto-01 systemd[1]: minio.service: Scheduled restart job, restart counter is at 5.
Oct 25 12:37:04 hel-sto-01 systemd[1]: Stopped MinIO.
Oct 25 12:37:04 hel-sto-01 systemd[1]: minio.service: Start request repeated too quickly.
Oct 25 12:37:04 hel-sto-01 systemd[1]: minio.service: Failed with result 'exit-code'.
Oct 25 12:37:04 hel-sto-01 systemd[1]: Failed to start MinIO.

这是一个新的 Ubuntu 20.04 服务器,我没有在端口 80 上监听。

一旦我恢复到端口 9000,MinIO 就可以正常工作。

请协助。

minio
  • 1 个回答
  • 557 Views
Martin Hope
user883366
Asked: 2021-10-19 01:59:38 +0800 CST

在实时 OCFS2 集群上添加更多节点

  • 1

我现在有一个有 4 个节点的 OCFS 集群。我想再添加6个。

我做了什么:

  • 我编辑了 /etc/ocfs2/cluster.conf 文件并添加了所有需要的节点。然后我复制到所有节点。
  • 当我尝试从 Node06 挂载分区时,我可以在 Node01 的 dmesg 上看到一个未知节点正在尝试访问它。
  • 然后我将/sys/kernel/config/cluster/ocfs2/node/Node05-Node10的目录复制到现有节点Node01-Node04。
  • 之后,新节点可以连接,但我超过了 4 个插槽的插槽限制。
  • 我试图通过运行 tunefs.ocfs2 -N 10 /dev/sdxX 来增加它,但它返回错误“tunefs.ocfs2: Trylock failed while opening device "/dev/sdxX"”

如何在不关闭集群的情况下增加插槽限制?

ocfs2
  • 1 个回答
  • 110 Views
Martin Hope
user579118
Asked: 2021-10-15 05:49:21 +0800 CST

intel 82579lm 千兆网络连接是否支持wol?

  • 0

我在运行 Win 10 Pro x64bit 的 HPz420 PC 上有一个板载 intel 82579LM 千兆网络连接。在 Networkadapter 设置中没有“Active Magic Packets”选项,以便能够激活 LAN 唤醒。即使我可以在 BIOS 中激活 WOL,但如果网络适配器本身没有激活 wol 的选项,它将无法工作。有谁知道,这个网络适配器是否支持 wol ?

wake-on-lan windows-10
  • 2 个回答
  • 1387 Views
Martin Hope
KrishnaChaitanya67
Asked: 2021-08-19 00:00:28 +0800 CST

如何在 Azure 中获取附加到数据磁盘的驱动器号?

  • 0

我正在尝试使用 Azure python SDK 在 azure 中获取附加到 VM 的磁盘的某些详细信息。我才知道:

创建时,VM 将附加两个磁盘:

  1. 操作系统盘(操作系统盘默认附加盘符C:)
  2. 临时盘(临时盘默认附加盘符D:)

除此之外,如果需要,我们还可以向 VM 添加额外的数据磁盘。问题是当我们添加数据磁盘时,我们不知道该磁盘附加了哪个字母。

我从 Azure 日志分析中获得磁盘的磁盘利用率详细信息及其驱动器号,但我没有在该日志中获得磁盘名称。所以,我无法确定它们是哪个磁盘的利用率日志。

使用 Azure 的 Python sdk,我可以获取磁盘名称和磁盘大小,但无法获取磁盘号。

我想知道磁盘的字母,以便了解特定磁盘的使用细节。有人可以帮我吗?

hard-drive virtual-machines azure
  • 1 个回答
  • 724 Views
Martin Hope
user815921
Asked: 2021-09-25 09:40:57 +0800 CST

无法再访问 IPMI。IPMIView 和 ipmitool 都显示“权限级别不足”

  • 0

我最近得到了 Supermicro 5019TR-GF 服务器。

起初我可以通过IPMIView或ipmitool控制服务器连接到 IPMI,但今天我不能再连接到服务器了。节目ipmitool:

user@ubuntu-vm:~$ ipmitool -I lanplus -H xx.xx.xx.xx -U ADMIN -P ADMIN sensor list all
Get Device ID command failed: 0xd4 Insufficient privilege level
Get Device ID command failed: 0xd4 Insufficient privilege level
Unable to open SDR for reading

奇怪的是我可以登录到 Web Portal,但我不能使用 IPMI。问题是什么以及如何解决?


更新 1

我尝试使用ipmiutil但没有运气。

user@ubuntu-vm:~$ ipmiutil sensor list -N xx.xx.xx.xx -U ADMIN -P ADMIN
ipmiutil sensor version 3.15
Invalid data field in request
ipmilan_open_session error, rv = 0xcc
ipmilan Invalid data field in request
ipmi_open error = 204 Invalid data field in request
ipmiutil sensor, Invalid data field in request

更新 2 最后,我在 Web 界面中将 IPMI 重置为出厂默认设置。现在我可以再次使用 ipmitool 了。但是,我找不到导致此问题的原因...

ipmi supermicro ipmitool
  • 1 个回答
  • 812 Views
Martin Hope
user123963
Asked: 2021-07-07 08:31:41 +0800 CST

Docker macvlan 丢弃 UDP (DNS) 流量,TCP 工作

  • 0

我正在尝试使用macvlan创建一个容器,它是我的 lan 上的一等公民。

我使用的是静态 IP(尽管我知道使用一些“技巧”也可以使用 DHCP)。

我知道它可以通过host网络来完成,但我计划运行 2 个单独的 DNS 容器,并且我希望它们每个都有不同的 IP,所以host不是我正在寻找的解决方案。

我的设置

有关我的网络和主机设置的详细信息:

  • Unifi UGS 路由器,内部 IP:192.168.1.254
  • 网络掩码:192.168.1.0/24
  • 主机操作系统:Ubuntu 20.04 LTS(Focal Fossa)
  • Docker 版本 20.10.2,构建 20.10.2-0ubuntu1~20.04.2
  • docker-compose 版本 1.28.5,构建 c4eb3a1f
  • br-lan主机 IP 通过连接到我的以太网端口的桥接接口(名为 )接收。

我[adguard-home][2]用作测试容器的图像,下面是 docker-compose 配置输出:

version: '3.7'
networks:
  br-lan:
    driver: macvlan
    driver_opts:
      parent: br-lan
    ipam:
      config:
      - gateway: 192.168.1.254
        subnet: 192.168.1.0/24
      driver: default

services:
  adguard:
    dns: # adguards default upstream DNS servers
    - 9.9.9.10
    - 149.112.112.10
    - 2620:fe::10
    - 2620:fe::fe:10
    image: adguard/adguardhome
    mac_address: '00:01:02:03:04:05:06:07' # Some randomized MAC address
    mem_limit: 500mb
    networks:
      br-lan:
        ipv4_address: 192.168.1.53
    restart: unless-stopped
    volumes:
    - /etc/localtime:/etc/localtime:ro
    - /srv/adguard/data/conf:/opt/adguardhome/conf:rw
    - /srv/adguard/data/work:/opt/adguardhome/work:rw

什么有效

这实际上适用于 TCP,我可以访问 WebUI(端口 3000 和 80),并且只要通过 TCP 完成 DNS 查询它就可以工作(tcp 端口 53)。

容器本身可以访问网络,反过来容器可以被主机以及局域网上的机器访问。

什么不起作用

UDP DNS 查询失败。

我怎么测试?

在网络中的 Windows 10 机器上,我正在运行以下 PowerShell 命令:

# Default (UDP) DNS Query - Fails
❯ Resolve-DnsName -DnsOnly -Server 192.168.1.53 -Name stackoverflow.com # Test regular UDP DNS Query
<# The Error output is
Resolve-DnsName : stackoverflow.com : DNS name does not exist
At line:1 char:1
+ Resolve-DnsName -DnsOnly -Server 192.168.1.53 -Name stackoverflow.c ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ResourceUnavailable: (stackoverflow.com:String) [Resolve-DnsName], Win32Exception
    + FullyQualifiedErrorId : DNS_ERROR_RCODE_NAME_ERROR,Microsoft.DnsClient.Commands.ResolveDnsName
#>

# TCP DNS Query - works
❯ Resolve-DnsName -DnsOnly -Server 192.168.1.53 -Name stackoverflow.com -TcpOnly

Name                                           Type   TTL   Section    IPAddress
----                                           ----   ---   -------    ---------
stackoverflow.com                              A      2507  Answer     151.101.65.69
stackoverflow.com                              A      2507  Answer     151.101.129.69
stackoverflow.com                              A      2507  Answer     151.101.193.69
stackoverflow.com                              A      2507  Answer     151.101.1.69

我的问题是什么,为什么我在这里发帖?

我不明白为什么在 TCP 工作时 UDP 会失败。我对 UDP 的搜索并macvlan没有取得成果,我希望这里的人能够指导我如何解决这个问题,以便我可以识别我的设计中的缺陷,或者解释我可以做些什么来解决这个问题。

networking udp internal-dns docker docker-compose
  • 2 个回答
  • 786 Views
Martin Hope
david
Asked: 2021-05-17 00:58:19 +0800 CST

docker中的HAProxy

  • 0

我正在尝试在 docker 上运行 haproxy,但它不起作用。

这是我所做的:

  1. 创建的 Dockerfile 包含以下文本:
FROM haproxy:2.3
COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg
  1. 这是我的 haproxy.cfg:
global
        log /dev/log    local0
        log /dev/log    local1 notice
        chroot /var/lib/haproxy
        stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
        stats timeout 30s
        user haproxy
        group haproxy
        daemon

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        timeout connect 10s
        timeout client  60s
        timeout server  60s
#        errorfile 400 /etc/haproxy/errors/400.http
#        errorfile 403 /etc/haproxy/errors/403.http
#        errorfile 408 /etc/haproxy/errors/408.http
#        errorfile 500 /etc/haproxy/errors/500.http
#        errorfile 502 /etc/haproxy/errors/502.http
#        errorfile 503 /etc/haproxy/errors/503.http
#        errorfile 504 /etc/haproxy/errors/504.http

frontend https_in
        mode tcp
        option tcplog
        bind *:443
        acl tls req.ssl_hello_type 1
        tcp-request inspect-delay 5s
        tcp-request content accept if tls
        
        acl host_server1 req.ssl_sni -i my1stdomain.com
        acl host_server2 req.ssl_sni -i my2nddomain.com

        use_backend https_Server if host_server1
        use_backend https_NUC if host_server2

backend https_Server
        mode tcp
#        option tcplog
        option ssl-hello-chk
        server Server 10.0.0.10:443

backend https_NUC
        mode tcp
#        option tcplog
        option ssl-hello-chk
        server NUC 10.0.0.40:443

  1. 目的是将 SSL 端口 443my1stdomain.com指向 LAN IP10.0.0.10和my2nddomain.comIP10.0.0.40

  2. docker 应该位于 10.0.0.44,所以这些是我运行的命令:

docker build -t my-haproxy .

结果:

Sending build context to Docker daemon  4.096kB
Step 1/2 : FROM haproxy:2.3
 ---> 397cf3d55fac
Step 2/2 : COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg
 ---> Using cache
 ---> a5cc1ff3c0c6
Successfully built a5cc1ff3c0c6
Successfully tagged my-haproxy:latest

然后,我测试了配置:

docker run -it --rm --name haproxy-syntax-check my-haproxy haproxy -c -f /usr/local/etc/haproxy/haproxy.cfg
Configuration file is valid

然后,我尝试运行它:

docker run -d --name haproxy --restart=always -p 10.0.0.44:443:443/tcp my-haproxy
a253dbce7341e454353e9a2b4278e22ae8172ed106aeec7

但是,当我运行时docker ps,我发现它并没有真正运行:

docker ps
CONTAINER ID   IMAGE                                     COMMAND                  CREATED              STATUS                          PORTS                                                                    NAMES
a253dbce7341   my-haproxy                                "docker-entrypoint.s…"   About a minute ago   Restarting (1) 12 seconds ago                                                                            haproxy

有什么建议吗?

linux docker haproxy
  • 1 个回答
  • 1751 Views
Martin Hope
user22711
Asked: 2021-04-16 07:00:22 +0800 CST

RJ45 压接工具区别

  • 0

我之前用我的 RJ45 压接工具用于 Cat5e 没有问题,现在我想压接 Cat6a 插头并遇到了一些问题。

我之前研究了一下,我遇到的每个消息来源都说我可以将压接工具用于任何 RJ45 插头。我几乎可以肯定这是错误的,压接工具会破坏插头,当我真正想压接它时,毫不奇怪,它确实破坏了它。

Cat6a 插头没有像 Cat5e 那样被压接钳上的“鼻子”向下推的塑料“楔子”,因此插头之间肯定存在差异。

在此处输入图像描述

那么这里的实际标准是什么?拆下 Cat6 插头的鼻子?

PS:我想我可以拧开工具上的“鼻子”,但是为什么在任何地方都没有提到这种差异,而每个人都在重申这种“它适用于一切”的废话?

networking
  • 1 个回答
  • 149 Views
Martin Hope
user22711
Asked: 2021-04-04 14:17:45 +0800 CST

通过 1 根网络电缆进行独立连接

  • 0

考虑以下网络设置

                         ┌───────────────┐                                
┌────────────┐           │               │               ┌───────────────┐
│            │           │  2 Port RJ45  │               │               │
│ ISP / DHCP │──────────▶│  Socket Roof  │──────────────▶│ Unifi AP Roof │
│            │           │               │        B      │               │
└────────────┘     A     └───────────────┘               └───────────────┘
                                │  ▲                                      
                                │  │ B                                    
                                │  │                                      
                                │  │                                      
                             CAT6 Split                                   
                                into                                      
                              2x100MBit                                   
                                │  │                                      
                                │  │                                      
                              A │  │                                      
                                │  │                                      
                                ▼  │                                      
                         ┌───────────────┐                                
                         │  2 Port RJ45  │                                
                         │ Socket Ground │     B                          
                      ┌──│     Floor     │◀───────────────────────┐       
                      │  │               │                        │       
                      │  └───────────────┘                        │       
                      │                                           │       
                      │                                           │       
                   A  │                                           │       
                      │                                           │       
                      │      ┌────────┐               ┌────────┐  │       
                      │      │ Unifi  │        B      │ Unifi  │  │       
                      └─────▶│  USG   │──────────────▶│  PoE   │──┘       
                       WAN/1 │        │ LAN/1         │ Switch │          
                             └────────┘               └────────┘                  

现在的问题是只有一根电缆从屋顶延伸到底层的网络机架。为了获得 2 个连接,我将 CAT6 电缆分成 2x100 MBit,每根使用 4 根电线。

所以网络如下:

  • ISP 通过标准 RJ45(无线电中继)进入屋顶
  • 然后将电缆连接到A我连接的 2 端口插座(端口)以将电缆分成 2x100MBit
  • 在一楼,电缆A连接到 USG 的 WAN/1 端口。
  • 从 USG LAN/1 端口到连接本地局域网其余部分的 PoE 交换机
  • 该交换机的一个 PoE 端口返回到端口上的 2 端口插座B
  • 然后将屋顶插座的端口B连接到AP

现在我不能说我真的很喜欢这个设置。以这种方式设置的原因是

  1. 我是网络菜鸟,可能不知道更好
  2. 我想通过 POE 为屋顶 AP 供电,而不需要额外的喷油器(不是那么重要)
  3. 我想通过将 ISP DHCP 拆分为 2 个物理连接并改用 USG DHCP 来隔离 ISP(重要)

所以问题是:

我可以在不将电缆分成 2x100MBit 的情况下实现这些目标,例如使用USW Flex Mini开关吗?

routing networking unifi ubiquiti
  • 1 个回答
  • 74 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