标签: linux-networking

如何设置 docker 容器以在专用网络上进行通信?

我在机架空间有一个小型集群,其专用网络范围为 192.168.3.0/24。我希望我的工作人员服务使用这个网络相互交谈,但不知道如何让 docker 允许这样做。

我的理想配置是一个面向公众的容器,它代理与工作人员的连接,然后该工作人员可以与专用网络中的各种服务进行通信以完成其工作。

eth0 -> load balancer --> 192.168.3.3:80 --> 192.168.3.5:1234 (db)
                      \-> 192.168.3.4:80 /
                       \> 192.168.3.5:80/
Run Code Online (Sandbox Code Playgroud)

如果所有工人都在同一台机器上,我可以用它来完成这项工作,docker run --link ...但由于他们在不同的机器上,这将行不通。

上面示例中的工作人员使用类似于以下的命令启动:

docker run -d -p $PRIVATE_IPV4:80:80 myworker
Run Code Online (Sandbox Code Playgroud)

数据库是这样开始的:

docker run -d -p $PRIVATE_IPV4:1234:1234 mydb
Run Code Online (Sandbox Code Playgroud)

主机我可以很好地与每个容器通信,但每个容器都不能路由到任何其他容器。IEcurl http://192.168.3.4在主机上工作,但不能从主机上运行的容器中工作。

在这种情况下,负载均衡器是 nginx 启动的,如下所示:

docker run -d -p $PUBLIC_IPV4:80:80 nginx
Run Code Online (Sandbox Code Playgroud)

配置文件

upstream app {
  server 192.168.3.3:80;
  server 192.168.3.4:80;
  server 192.168.3.5:80;
}
...
Run Code Online (Sandbox Code Playgroud)

这似乎是一个非常标准的配置。我究竟做错了什么?

linux-networking docker

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

基于预定 MySQL 查询结果的 Nagios 警报

我已经在我的 Ubuntu 14.0 上安装了 Nagios 4.0,我想要一个插件来根据每天安排的 MySql 查询提醒我..

例如,如果( select count(*) from tableName > 10 ) 引发严重警报或< 10警告警报的结果每天运行此查询。

甚至有可能吗?!如果是这样,你能告诉任何建议的插件、想法或从哪里开始..

mysql nagios linux-networking

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

如果 ufw 上的传出和传入都被阻止,我是否需要打开任何端口才能使 NTP 同步工作?

我的其中一台生产服务器,UFW配置如下:

Status: active
Logging: on (low)
Default: deny (incoming), **deny (outgoing)**, disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere
22/tcp (v6)                ALLOW IN    Anywhere (uv6)
80/tcp                     ALLOW IN    Anywhere
80/tcp (v6)                ALLOW IN    Anywhere (v6)
Run Code Online (Sandbox Code Playgroud)

我通过安装 ntp 服务启用了 NTP 同步,并且它当前正在运行。当我运行时ntpq -p,我得到以下输出:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+209.114.111.1   132.163.4.103    2 u  52m 1024  374   44.591    3.390   0.983
+208.75.89.4     216.218.192.202  2 u  51m 1024  374 …
Run Code Online (Sandbox Code Playgroud)

firewall linux-networking ufw

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

AWS 如何在实例上配置 169.254.169.254 地址?

AWS 使用 169.254.169.254 作为链接本地地址,您可以使用它来提取有关实例的元数据,即:

卷曲http://169.254.169.254/latest/meta-data/

这个 IP 在实例上是如何/在哪里配置的?如果我执行“ip route”,我可以看到它的路由。如果我“netcat -Cvz 169.254.169.254 80”,我可以获得连接。但是,如果我执行“netstat -ntlp”,我实际上并没有看到实例在任何地方侦听。如果我尝试连接到另一个端口,“netcat -Cvz 169.254.169.254 22”,它会失败。事实上,我在 0.0.0.0:80 上运行了一个看起来有冲突的 Apache 服务。所以这个地址似乎是指外部主机。它会指向虚拟机管理程序吗?

linux-networking amazon-ami amazon-web-services

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

尽管应该有可用的 IP,但 dhcp 服务器给出了“无免费租用”错误

我们有一个由大约 40 台机器组成的小型 HPC 集群,运行着 Rocks Linux Distro 6.2(基于 Centos 6.6)。在过去的几天里,我一直在尝试向系统添加 6 台机器。前 3 台成功了,但我无法启动其他 3 台机器。/var/log/messages显示“无免费租约”错误如下:

[root@topaz ~]# tail -n3 /var/log/messages 
Jun 29 17:56:00 topaz dhcpd: DHCPDISCOVER from d0:bf:9c:03:3b:40 via eth0: network 10.1.0.0/16: no free leases
Jun 29 17:56:03 topaz dhcpd: DHCPDISCOVER from d0:bf:9c:03:3b:40 via eth0: network 10.1.0.0/16: no free leases
Jun 29 17:56:07 topaz dhcpd: DHCPDISCOVER from d0:bf:9c:03:3b:40 via eth0: network 10.1.0.0/16: no free leases
Run Code Online (Sandbox Code Playgroud)

除前端外,所有机器都只有本地 IP。应该有足够的 IP 可以分配给这些新机器。似乎没有任何意外的机器连接到网络:

[root@topaz ~]# arp -a | awk '{ …
Run Code Online (Sandbox Code Playgroud)

dhcp linux linux-networking dhcp-server

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

我的网站会在 iptables 重启期间停止吗?

在 CentOS 6 系统中通过以下命令重启 iptables 期间网站会停止吗?

$ service iptables restart
Run Code Online (Sandbox Code Playgroud)

linux firewall iptables linux-networking centos6

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

为什么在配置文件中而不是在命令行中接受身份验证文件?

我连接到需要通过身份验证的 VPN 服务器

/usr/sbin/openvpn --config /etc/openvpn/server.ovpn
Run Code Online (Sandbox Code Playgroud)

这提示我输入登录名/密码(= OK)。

我将登录名和密码添加到文件中并更新了/etc/openvpn/server.ovpn配置

auth-user-pass /etc/openvpn/auth.txt
Run Code Online (Sandbox Code Playgroud)

不再提示我输入密码 (= OK)。

我想从命令行提供身份验证凭据,而不是从配置文件中获取它们:

/usr/sbin/openvpn --auth-user-pass /etc/openvpn/auth.txt --config /etc/openvpn/server.ovpn
Run Code Online (Sandbox Code Playgroud)

这一次,我被提示输入凭据。为什么会这样?

凭证文件和配置都是一样的(除了auth-user-pass我在上次测试中删除的那一行)。

OpenVPN 版本是2.3.10并且它是用它编译的enable_password_save=yes(必须是这种情况,因为通过配置文件提供凭据有效,该软件包是从标准的 Ubuntu 存储库安装的)

linux openvpn linux-networking

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

如何通过SSH隧道将隔离节点连接到公共节点

我不知道如何用语言表达,所以创建了一个插图来展示我的设置是什么样的。

DB Server和Web Server在一个VLAN中,Web Server有公网IP,DB Server没有。通常 DB 只能与 Web 服务器通信。例外是它也应该能够与主服务器通信,但它应该是无法远程访问的。

我认为它可以设置为 DB>>Web>>Main Server,但我对 SSH 配置处于非常初级的水平,所以我不能自己做任何事情。

DB to Main 连接应该是永久的两种方式,并且只需要通过端口 80。

DB和Web服务器是CentOS 7.2,主服务器是Debian 8

这实际上可能吗?如果可能,如何实现?很感谢任何形式的帮助。谢谢。

在此处输入图片说明

ssh ssh-tunnel linux-networking

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

/etc/hosts 中的优先级是如何确定的?

出于太具体的原因,这里不详述……我尝试将域的两个条目添加到/etc/hostsCentOS-7 服务器上的文件中。为了让一个软件愉快地运行,需要有一个条目,如:

192.168.1.z  otherserver
Run Code Online (Sandbox Code Playgroud)

但是,我实际上希望该域解析为不同的 IP:

10.w.x.y     otherserver
Run Code Online (Sandbox Code Playgroud)

我的理解(由类似问题支持,例如将多个 IP 分配给主机文件中的 1 个条目)是将使用第一个匹配条目。

所以这个文件:

192.168.1.z  otherserver
10.w.x.y     otherserver
Run Code Online (Sandbox Code Playgroud)

应该导致域解析为192.168.1.z;而这个文件:

10.w.x.y     otherserver
192.168.1.z  otherserver
Run Code Online (Sandbox Code Playgroud)

应该导致它解析为10.w.x.y.

但是,无论我使用什么顺序(以及添加多少重复条目),域总是解析为192.168.1.z除非我完全删除该条目。

那么有没有办法包含这两行但确保10.w.x.y优先?

networking linux centos hosts linux-networking

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

/etc/network/interfaces.d/* 在 /etc/network/interfaces 文件的顶部有什么作用?

我注意到默认情况下,以下行包含在/etc/network/interfaces

source /etc/network/interfaces.d/*
Run Code Online (Sandbox Code Playgroud)

这条线的目的是什么,它实际上做了什么?

networking linux linux-networking

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