标签: namespaces

访问 DFS 命名空间时的长时间停顿

我们最近迁移了我们的 Windows 网络以将 DFS 用于共享文件。DFS 运行良好,除了一个恼人的问题:用户在尝试访问他们有一段时间没有访问过的 DFS 命名空间时会遇到明显的延迟。我已经尝试解决该问题,但到目前为止还没有取得任何成功,我希望这里有人可以提供一些帮助来解决问题的建议。

首先,我们网络的一些背景:

该网络使用带有两个 Windows 2008 DC 和两个 DNS 服务器(每个 DC 上一个)的 Windows 2008 功能级别 Active Directory 域。网络只有 DNS - 没有 WINS。所有计算机都位于同一站点并通过千兆以太网连接。我们在 Windows 2008 模式下有大约 20 个基于域的 DFS 命名空间,每个 DFS 命名空间都有两个 Windows 2008 DFS 命名空间服务器(所有命名空间都使用相同的两个服务器)。所有命名空间服务器都处于 FQDN 模式,并且所有文件夹目标都使用其 FQDN 指定。所有计算机都安装了最新的 Service Pack 和补丁。

实际的文件夹目标(即 SMB 共享我们的 DFS 文件夹指向)分散在多个文件和应用程序服务器上,所有服务器都运行 Windows 2008 和运行 Windows 2003 R2 的两个应用程序服务器,根本没有复制设置(例如当前所有 DFS 文件夹只有一个文件夹目标)。

关于这个问题的更多细节:

命名空间访问延迟通常为 1 到 10 秒长,并且似乎发生在特定计算机大约五分钟或更长时间未访问请求的命名空间时。

例如,如果用户超过五分钟没有访问 \\domain.name\namespace1\ 并尝试通过 Windows 资源管理器访问 \\domain.name\namespace1\,则资源管理器窗口将冻结 1 - 10 秒,然后最终恢复并显示存在于 \\domain.name\namespace1 中的文件夹。如果他们随后关闭资源管理器窗口并尝试在五分钟内再次访问 …

windows network-share server-message-block dfs namespaces

22
推荐指数
1
解决办法
9万
查看次数

Linux 列出所有网络命名空间

我想列出我的 Linux 机器上的所有网络命名空间。到目前为止,我找到了两种推荐的方法来做到这一点:

ip netns list
Run Code Online (Sandbox Code Playgroud)

lsns --type=net
Run Code Online (Sandbox Code Playgroud)

不幸的是,这两个命令都没有列出所有名称空间!第一个仅列出在 /var/run/netns 中找到的命名空间,第二个将仅查找至少有一个进程在其中运行的命名空间。例如,Docker 会将其命名空间保存在 /var/run/docker/netns 中(因此它们不会通过 ip netns 显示),并且有一些命名空间没有正在运行的进程(因此它们不会通过 lsns 显示)。是否有任何命令可以打印主机上的所有网络名称空间?

networking linux namespaces

13
推荐指数
1
解决办法
2万
查看次数

Docker 下的 Chrome:CAP_SYS_ADMIN 与特权?

我在我的测试环境中在 Docker 中运行 chromedriver + chrome。

一切正常,直到最新的 CoreOS 升级。

这些是似乎有效的版本:

VERSION=1185.5.0
VERSION_ID=1185.5.0
BUILD_ID=2016-12-07-0937
Run Code Online (Sandbox Code Playgroud)

这是导致 chrome 进行核心转储的较新版本:

VERSION=1235.4.0
VERSION_ID=1235.4.0
BUILD_ID=2017-01-04-0450
Run Code Online (Sandbox Code Playgroud)

查看更改,似乎 docker 从 1.11.x 升级到 1.12.x,这中断了setns()容器内的调用。setns()Chrome 使用它来创建命名空间。

这是示例输出:

jsosic-coreos-test-20161207 ~ # docker --version
Docker version 1.11.2, build bac3bae
Run Code Online (Sandbox Code Playgroud)

从这个盒子上的一个容器里面:

[root@2939f21ecfaa /]# /opt/google/chrome/google-chrome
[57:57:0107/015130:ERROR:browser_main_loop.cc(261)] Gtk: cannot open display:
Run Code Online (Sandbox Code Playgroud)

这是新版本打破它的方式:

jsosic-coreos-test-2017-01-04 ~ # docker --version
Docker version 1.12.3, build 34a2ead

[root@13ab34c36c82 /]# /opt/google/chrome/chrome
Failed to move to new namespace: PID namespaces supported,
  Network namespace supported,
  but failed: errno = …
Run Code Online (Sandbox Code Playgroud)

permissions namespaces chrome docker

12
推荐指数
1
解决办法
7140
查看次数

如何将接口移出网络命名空间?

如果我将一个接口临时移动到一个 netns 中

ip link set eth10 netns myns
Run Code Online (Sandbox Code Playgroud)

然后它不再在根目录中可见,仅在名称空间 myns 中可见。

我如何将其移回,例如(这些显然不存在):

ip link unset eth10
Run Code Online (Sandbox Code Playgroud)

也许

ip link set eth10 netns root
Run Code Online (Sandbox Code Playgroud)

或类似?

namespaces iproute2 network-namespace

11
推荐指数
3
解决办法
2万
查看次数

在 Powershell 中使用命名空间

回答这个问题的时候想了想。

如何避免需要完全限定命名空间中的每个类型?

System.Security.Cryptography.X509Certificates.X509Store而不是X509Store,或[System.Security.Cryptography.X509Certificates.StoreName]::My代替 ,真的,真的很乏味[StoreName]::My

在 C# 中,您有using指令……Powershell 怎么样?


编辑 1 - 这适用于类型:

$ns = "System.Security.Cryptography.X509Certificates"
$store = New-Object "$ns.X509Store"(StoreName,StoreLocation)
Run Code Online (Sandbox Code Playgroud)

New-Object 将字符串文字作为类型定义,因此可以通过编程方式构建。


编辑 2 - 这适用于用作参数的枚举成员:

$store = New-Object "$ns.X509Store"("My","LocalMachine")
Run Code Online (Sandbox Code Playgroud)

“My”[System.Security.Cryptography.X509Certificates.StoreName]::My和“LocalMachine”在哪里[System.Security.Cryptography.X509Certificates.StoreLocation]::LocalMachine
如果放置在需要枚举成员的位置,文字名称会自动转换为枚举成员。

powershell .net namespaces

10
推荐指数
2
解决办法
1万
查看次数

来自主机但不是来自命名空间的基于 Macvlan 的接口 ping

[编辑]

生产系统目前是一个混合物理和基于 ESXi 的系统。即使在预生产环境中,我们显然也永远不会使用 virtualbox!在这里使用它只是为了直接在我的桌面上快速缩小问题的范围。

感谢您对元数据“暂停”的解释!

[/编辑]

我的设置:

  1. 专用网络vboxnet110.0.7.0/24
  2. 1 主机,ubuntu 桌面
  3. 1 台虚拟机,ubuntu 服务器(VirtualBox)

寻址布局:

  1. 主机:10.0.7.1
  2. 虚拟机:10.0.7.101
  3. 虚拟机MAC命名空间:10.0.7.102

在 上VM,我运行了以下命令:

ip netns add mac                        # create a new nmespace
ip link add link eth0 mac0 type macvlan # create a new macvlan interface
ip link set mac0 netns mac
Run Code Online (Sandbox Code Playgroud)

mac命名空间上,在 VM 内部:

ip link set lo up
ip link set mac up
ip addr add 10.0.7.102/24 dev mac0
Run Code Online (Sandbox Code Playgroud)

所以我们基本上最终得到:(比如 Inception ?) …

networking linux namespaces iproute2

10
推荐指数
1
解决办法
6230
查看次数

如何在 docker 容器内的命名空间内挂载私有 /proc?

我需要在 Docker 容器内创建命名空间。作为其中的一部分,我需要将/proc私有挂载到内部命名空间。我意识到我必须以特定权限运行容器才能实现这一点,但我更愿意启用最小集。

这有效:

$ sudo docker run --privileged --security-opt=seccomp=unconfined \
 -it fedora:rawhide /usr/bin/unshare -Ufmp -r \
 /bin/sh -c 'mount -t proc proc /proc'
Run Code Online (Sandbox Code Playgroud)

这不会:

$ sudo docker run --cap-add=sys_admin --security-opt=seccomp=unconfined \
  -it fedora:rawhide /usr/bin/unshare -Ufmp -r \
   /bin/sh -c 'mount -t proc proc /proc'
mount: /proc: cannot mount proc read-only.
Run Code Online (Sandbox Code Playgroud)

因此,仅关闭 seccomp 过滤器并添加CAP_SYS_ADMIN是不够的。什么足够了吗?

更新: Selinux 是问题的一部分。如果您全局关闭 selinux 强制,它会起作用。但是,您也可以使用 关闭对特定容器的强制执行--security-opt label:disable,这在在线 Docker 手册安全配置部分有记录

sudo docker run --cap-add=sys_admin --security-opt …
Run Code Online (Sandbox Code Playgroud)

security namespaces docker

8
推荐指数
1
解决办法
6955
查看次数

确定用户使用的 DFS 推荐目标

我们设置了 DFS 命名空间,以便 \\company.local\users 托管在英国服务器和美国服务器上,并根据用户的站点进行引用。除了我们今天怀疑之外,DFS 对某些用户的故障转移到了美国。之所以怀疑,是因为我们能看到的唯一证据是他们从美国复制回来的私人文件(例如 cookie、漫游配置文件)。通常,他们走另一条路。

用户如何确定 \company.local\users 在其会话中解析到的位置?是否有命令行工具或他们可以查看的东西?类似于 net use 但用于 DFS 命名空间。

谢谢,罗伯。

windows-server-2008 dfs namespaces

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

将 ACL 应用于 Dovecot 公共命名空间

我想通过 Dovecot 中的一组公共只读邮箱提供对某些邮件列表的访问。我的 dovecot (dovecot-2.0.9) 配置中有一个公共命名空间定义,如下所示:

namespace {
  type = public
  separator = .
  prefix = news.
  location = maildir:/var/spool/news
  subscriptions = no  
}
Run Code Online (Sandbox Code Playgroud)

我想将此命名空间中的所有邮箱设为只读。我有 ACL 插件的以下配置:

plugin {
  acl = vfile:/etc/dovecot/acls:cache_secs=300
}
Run Code Online (Sandbox Code Playgroud)

仔细阅读文档后,我似乎有一个/var/spool/news/.foo.bar可以将以下内容放入 的邮件文件夹 /var/spool/news/.foo.bar/dovecot-acl

anyone rl
Run Code Online (Sandbox Code Playgroud)

但这没有任何影响。我也尝试创建一个/usr/local/etc/dovecot/acls/news.foo.bar具有相同内容的文件 ,但这也没有任何作用。我打开了邮件调试:

mail_debug = yes
Run Code Online (Sandbox Code Playgroud)

但日志不会产生任何与 ACL 处理相关的内容。我很想知道是否有人让它正常工作,如果是这样,您是否可以提供一些配置示例。

此外,如果有任何不涉及每个邮箱配置的方法(例如,将 ACL 应用于news.*或其他内容的能力),那就太棒了。获取默认 ACL 工作的记录行为将是朝着正确方向迈出的一步。

email imap dovecot access-control-list namespaces

6
推荐指数
1
解决办法
4134
查看次数

无法创建嵌套的网络命名空间

似乎无法从网络名称空间创建网络名称空间。它导致“错误:对等网络引用无效。”。

这是一个错误还是有某种我不知道的限制?

以下是我对错误的 cmd 跟踪。

# ip netns add foo1
# ip netns exec foo1 ip netns add foo2
# ip netns
Error: Peer netns reference is invalid.
Error: Peer netns reference is invalid.
foo2
foo1
# ip netns exec foo2 /bin/bash
setting the network namespace "foo2" failed: Invalid argument

Run Code Online (Sandbox Code Playgroud)

linux ip namespaces linux-networking network-namespace

6
推荐指数
1
解决办法
3513
查看次数