小编Mar*_*els的帖子

为什么机架式交换机的端口在前面?

我从戴尔订购了一些机架硬件。一个 42U 机架、一个 3U EqualLogic SAN、两个 1U PowerConnect 5424 交换机、三个 1U PowerEdge 服务器以及其他一些东西,例如磁带驱动器、防火墙、UPS 等。

由于我对机架几乎没有经验,我想知道为什么交换机的端口在机架的前面,而所有连接到它的设备(SAN、服务器、磁带、防火墙)的以太网端口都在后面。

我的假设是这样可以很容易地插入/拔出电缆,并观看闪烁的灯光。不过,它确实使电缆管理变得更加尴尬,因为我必须将所有电缆从机架背面馈送到前面的交换机端口,通过机架的侧面或通过在机架之间留出一些垂直空间设备。

为什么会这样,管理电缆的好方法是什么?

关于如何布置具有如此多样化硬件的机架的任何提示或图片?

cable-management rack dell switch rackmount

19
推荐指数
4
解决办法
2万
查看次数

Apache 基于名称的虚拟主机中的 ServerName 通配符?

在我们的 LAN 上,我在 DNS 服务器中设置了几个“假”TLD,目的是将它们用于基于 Apache 名称的虚拟主机。我想将其与 Ubuntu 10.04 LAMP 服务器上的大规模虚拟托管(即 VirtualDocumentRoot)结合起来。

但是,我无法让它选择正确的虚拟主机!

以下是 Apache 配置的摘要:

NameVirtualHost 10.10.0.205

<VirtualHost 10.10.0.205>
   ServerName *.test
   VirtualDocumentRoot /var/www/%-3.0.%-2/test/%1/
   CustomLog /var/log/apache2/access.log vhost_combined
</VirtualHost>

<VirtualHost 10.10.0.205>
   ServerName *.dev
   VirtualDocumentRoot /var/www/%-3.0.%-2/dev/%1/
   CustomLog /var/log/apache2/access.log vhost_combined
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

主机名(例如www.domain.com.dev)正确解析为 10.10.0.205,但始终选择最匹配的顶部虚拟主机,而不是底部虚拟主机。

我的印象是 Apache 会首先尝试匹配 ServerName,然后再默认为给定 IP 的顶级虚拟主机。我究竟做错了什么?或者这是不可能的,我必须为每个 TLD 使用另一个 IP?

apachectl -S 输出(修剪):

10.10.0.205:*          is a NameVirtualHost
    default server *.test
    port * namevhost *.test
    port * namevhost *.dev
Run Code Online (Sandbox Code Playgroud)

ubuntu lamp virtualhost apache-2.2

17
推荐指数
1
解决办法
4万
查看次数

Amazon VPC 上的 IPv6:Ubuntu 中缺少默认路由

现在Amazon 已将VPC 的IPv6支持扩展到其大部分全球区域,包括 eu-west-1,我正在尝试连接我的实例。不幸的是,我无法让路由工作。

我已按照迁移指南中的步骤操作,即将 IPv6 CIDR 关联到我们的 VPC,将其中的一部分分配给我们的“公共”子网,更新了 VPC 路由表以::/0通过 igw(互联网网关)发送,确保将路由表分配给公共子网,并从控制台将 IPv6 地址分配给一些新的 Ubuntu 16.04 实例。

然后,通过添加到网络设置并重新启动,我将 Ubuntu 配置为通过 DHCPv6 获取分配的地址,如此处所述iface eth0 inet6 dhcp

当我重新启动实例时,启动需要几分钟的时间,但最终我可以登录并ip a s显示配置的 IPv4 和全局 IPv6 地址。

但是,v6 网络不起作用:

# ping6 www.google.com
connect: Network is unreachable
Run Code Online (Sandbox Code Playgroud)

路由表确实缺少默认路由:

# ip -6 route
2001:DB8:1234:1234:1234:1234:1234:1234 dev eth0  proto kernel  metric 256
fe80::/64 dev eth0  proto kernel  metric 256  mtu 9001
Run Code Online (Sandbox Code Playgroud)

手动添加默认的 v6 路由,通过 …

ipv6 amazon-web-services amazon-vpc dhcpv6

7
推荐指数
1
解决办法
3449
查看次数

基于 Cisco IPSec VPN 的 IPv6?

我们使用 Cisco ASA 5505 作为我们网络上的防火墙和 IPSec VPN 端点。

我们使用拆分隧道来减少我们互联网链接的负载。换句话说,当有人连接到 VPN 时,他们的 DNS 查询会通过我们的内部 DNS 服务器,解析为 10.0.0.0/8 的主机的所有流量都通过隧道发送。其他流量通过其本地 Internet 网关发送。这对于 IPv4 流量非常有效。

我现在已经向 LAN 上的所有服务器和台式机推出了 IPv6 连接(一个 SixXS 6in4 隧道)。我们有(希望增长的)用户在家中拥有自己的 IPv6 连接。

当我将内部服务器的 IPv6 地址添加到内部 Bind9 DNS 时,一些外部用户无法再正确连接到内部服务器。我假设他们从我们的 DNS 和他们的应用程序中获得 AAAA 记录,偏好 AAAA 地址,尝试通过 IPv6 直接连接到服务器,而不是使用 IPSec 隧道。它们遇到我们的防火墙并最终超时并通过 IPv4 连接。作为回应,我已经从我们的 DNS 中删除了 AAAA 记录。

根据此论坛帖子,Cisco IPSec 客户端不支持 IPv6,因此我必须对 AnyConnect 进行昂贵的升级。

我想到的解决方法:

  • 创建一个裂脑 DNS,向 LAN 主机提供 AAAA 记录,而只向 VPN 客户端提供 A 记录。VPN 客户端位于特定的 IPv4 范围内,但不知道如何设置裂脑 DNS。
  • 只是不在内部 DNS 中提供 AAAA …

vpn ipv6 internal-dns cisco-vpn cisco-asa

5
推荐指数
1
解决办法
2090
查看次数

Puppet:如何在包升级期间跳过重启直到配置被替换?

我正在尝试让 Puppet 将我们的 Varnish 3 服务器升级到 Varnish 4,这是一个需要更新配置文件的重大更新,否则它将无法启动。这是在 Ubuntu 12.04 上。

Varnish 模块基本上是用这些类和依赖项构建的:

Class['varnish::repo']
-> Class['varnish::install']
-> Class['varnish::tools']
-> Class['varnish::config']
~> Class['varnish::service']
Run Code Online (Sandbox Code Playgroud)

我已经更新了APT-回购网址varnish::repo,设置ensure=>latestvarnish::install并提供了一个更新的配置文件varnish::config。到现在为止还挺好。

当 Puppet 运行这些依赖项时,运行会在该varnish::install阶段失败,因为 Apt 会在升级 Varnish 守护进程后立即尝试重新启动它,而没有给 Puppet 替换配置文件的机会。类中的失败varnish::install会导致依赖链中断,并导致其余类也失败。结果是损坏的 Varnish 安装需要手动恢复。

你如何处理这个问题?

我考虑过使用policy-rc.d,它本质上是告诉 Apt 不要执行服务的自动停止和启动。我尝试在升级之前创建文件并在升级之后将其删除。

file {'/usr/sbin/policy-rc.d':
    ensure  => $ensure,
    content => "#!/bin/sh\nexit 101",
    owner   => 'root',
    group   => 'root',
    mode    => '0755',
}
Run Code Online (Sandbox Code Playgroud)

当然创建删除是一个问题,因为 Puppet 将其视为重复资源。

你问我为什么要在安装后再次删除该策略?因为我们过去常常unattended-upgrades执行较小的安全升级,而我希望在这些情况下允许 …

ubuntu varnish puppet apt

5
推荐指数
1
解决办法
497
查看次数

跨多个/所有 Kubernetes 命名空间删除资源类型的所有实例

我正在尝试在 Kubernetes 集群上卸载并重新安装 cert-manager。他们的卸载文档提到:

在继续之前,请确保用户创建的所有 cert-manager 资源均已删除。您可以使用以下命令检查任何现有资源:

$ kubectl get Issuers,ClusterIssuers,Certificates,CertificateRequests,Orders,Challenges --all-namespaces

该命令输出数百个资源,分布在二十几个命名空间中。

如何有效地删除它们,而不删除命名空间中的其他任何内容?

kubectl delete命令在删除所有特定类型时需要指定命名空间,如下所示:kubectl delete certificates -n example-ns,所以这在这里不好。

在指定的同时按名称删除每个循环-A也不起作用,因为我需要指定名称空间:

$ kubectl delete -A order.certmanager.k8s.io/fcfa95477bc0149dbc16c99c54faa82e-cert-1862418815
error: a resource cannot be retrieved by name across all namespaces
Run Code Online (Sandbox Code Playgroud)

这里正确的 cli 魔法是什么?

kubernetes google-kubernetes-engine cert-manager kubectl

5
推荐指数
1
解决办法
6232
查看次数

如何处理 Linux 发行版之间的 Puppet 版本差异

我们是一家小型网络开发商店,正在研究在各种开发和生产服务器上推出 Puppet。

puppetmaster 是一个带有 Puppet 0.25.4 的 Ubuntu 10.04 服务器,来自 Ubuntu 的 repo。一些 puppet 客户端是带有 puppet 0.25.4 的 Ubuntu,但其他一些基于 RedHat 或 Centos 并且使用 EPEL 存储库,它提供 puppet 0.25.5 包。

这些较新的客户端无法与“较老”的 puppetmaster 交谈,因此我可以升级 master 或降级客户端。但是我找不到将客户端降级到 0.25.4 的 rpm。构建我自己的包是一件我可以做的苦差事,因为我是公司的唯一系统管理员。

您如何处理异构环境中不同的客户端/服务器版本?

package-management ubuntu rpm puppet epel

4
推荐指数
1
解决办法
1394
查看次数

BIND:如何将子区域委托给其他 DNS 服务器?

我正在从 BIND9 DNS 服务器提供服务的工作组迁移到基于 Windows Server 2008 R2 的 AD 域,我想继续使用 BIND 服务器,直到 AD 基础架构准备就绪。

在设置 AD 的过程中,通过 dcpromo,我收到一个警告,我应该确保我们当前的 DNS 服务器将 AD 域名委托给 AD 服务器。

假设我的 AD 域是 mydomain.lan,而我的常规 BIND 域是 example.com。我将我的 BIND 服务器设置为 lan. 的权威,但想委托 mydomain.lan。到 AD 服务器的 IP。

我的named.conf.local包含:

zone "lan" {
        type master;
        file "zone.lan";
};
Run Code Online (Sandbox Code Playgroud)

zone.lan包含:

$ORIGIN lan.
$TTL 1H ; 1 hour
@                       IN SOA  dns.example.com. hostmaster.example.com. (
                                201008137  ; serial
                                28800      ; refresh (8 hours)
                                14400      ; retry (4 hours) …
Run Code Online (Sandbox Code Playgroud)

domain-name-system bind delegation subdomain dns-zone

4
推荐指数
2
解决办法
5万
查看次数

在 Postfix 中为所有转发的消息添加 X-header

我有几个运行 LAMP 堆栈的生产服务器。它们每个都有一个本地 Postfix 服务器,它可以从系统和 PHP 中捕获任何邮件,并通过智能主机(SendGrid SMTP 服务)进行中继。

我想为发送到智能主机的每条传出消息添加一个自定义标头。这允许我在 SendGrid 中过滤每个服务器的统计信息。就像是:

X-SMTPAPI: {"category": "www1"}
Run Code Online (Sandbox Code Playgroud)

Postfix 文档提到在 Postfix 'access' 表中使用 PREPEND 操作。因此,我将以下行添加到/etc/postfix/access

PREPEND X-SMTPAPI: {"category": "www1"}
Run Code Online (Sandbox Code Playgroud)

access用 postmap散列文件。

但是,我不知道如何使用地图。类似以下内容不起作用:

smtp_client_restrictions = check_client_access hash:/etc/postfix/access
Run Code Online (Sandbox Code Playgroud)

我如何让 Postfix 在这个标题前面加上?

smtp postfix sendgrid smtp-headers

4
推荐指数
2
解决办法
7788
查看次数

如何根据XID过滤Varnish日志?

我遇到了很少见的 503 错误,这些错误似乎难以确定。Varnishlog 快把我逼疯了,因为我似乎无法从中获得我想要的信息。

我希望看到 Varnish 所看到的客户端和后端通信。我认为记录在 Varnish 的默认错误页面上的 XID 号可以让我从日志缓冲区中过滤出确切的请求。但是,varnishlog 参数的组合没有给我我需要的输出。

以下仅显示客户端通信:

varnishlog -d -c -m ReqStart:1427305652
Run Code Online (Sandbox Code Playgroud)

虽然这仅显示了由此产生的后端通信:

varnishlog -d -b -m TxHeader:1427305652
Run Code Online (Sandbox Code Playgroud)

是否有单行显示整个请求?

linux logging varnish http-headers

3
推荐指数
1
解决办法
7999
查看次数