如何使用 PCS 强制使用 IPV4?(Pacemaker/Corosync)

如何使用 PCS 强制使用 IPV4?(Pacemaker/Corosync)

我正在为安全环境中的高可用性 Webapp 设置带有 DRBD 挂载的 Pacemaker/Corosync 集群。它运行在 CentOS 7 上。集群正在运行。但是,为了让这个系统做好安全审计的准备,我必须禁用所有应用程序对 IPV6 的监听并强制使用 IPV4。

我已在全系统范围内禁用 IPV6:

# Contents of /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1

我还在网络级别禁用了 IPV6:

# Contents of /etc/sysconfig/network
NETWORKING_IPV6=no
IPV6_AUTOCONF=no

然而 PCSD 坚持监听 IPV6 端口:

# netstat -lnptu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1206/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1837/master
tcp6       0      0 :::2224                 :::*                    LISTEN      486/ruby
udp        0      0 192.168.4.100:60618     0.0.0.0:*                           10932/corosync
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           460/avahi-daemon: r
udp        0      0 192.168.4.100:5405      0.0.0.0:*                           10932/corosync
udp        0      0 0.0.0.0:57120           0.0.0.0:*                           460/avahi-daemon: r
udp        0      0 192.168.4.100:40891     0.0.0.0:*                           10932/corosync

没有 IPV6 接口:

ip a l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:50:56:8d:d1:76 brd ff:ff:ff:ff:ff:ff
    inet 192.168.4.100/24 brd 192.168.4.255 scope global ens160
       valid_lft forever preferred_lft forever
    inet 192.168.4.110/24 brd 192.168.4.255 scope global secondary ens160
       valid_lft forever preferred_lft forever

我按照另一个论坛的建议从 /etc/hosts 中删除了 IPV6 环回:

# Contents of /etc/hosts
192.168.4.100   node1 node1.network.dmn
192.168.4.101   node2 node2.network.dmn
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 

我还看到了一份旧的错误报告,报告称当 IPV6 被禁用时 PCSD 无法启动。这个问题已经解决,我可以确认我的实例可以正常启动,但是正如这个错误的评论中所述,当 IPV6 被禁用时,PCSD 应该监听 IPV4,但它并没有这样做。所以这似乎是异常行为:

来源: https://bugzilla.redhat.com/show_bug.cgi?id=1104359

Created attachment 933288 [details]
proposed fix

测试:

  1. 禁用 ipv6,将 ipv6.disable=1 添加到内核启动行并重新启动
  2. 启动 pcsd 服务 systemctl start pcsd.service
  3. 验证 pcsd 是否正在运行并监听 0.0.0.0 netstat --inet -anp46 | grep 2224 tcp 0 0 0.0.0.0:2224 0.0.0.0:* LISTEN 1746/ruby
  4. 重新启动并启用 ipv6。
  5. 启动 pcsd 服务 systemctl start pcsd.service
  6. 验证 pcsd 是否正在运行并监听 :: netstat --inet -anp46 | grep 2224 tcp6 0 0 :::2224 :::*
    LISTEN 356/ruby

在谷歌上搜索强制配置 IPV4 的方法没有得到任何结果。所以我现在陷入困境。我必须强制此端口为 0.0.0.0:2224 以通过安全合规性。

谁能告诉我怎么做?

答案1

很晚了,但是如果您希望 pcsd 仅在 IPv4 中运行,您需要修改该文件/etc/sysconfig/pcsd并替换默认值(并注释掉)

# PCSD_BIND_ADDR='::'

对于这样的事情:

 PCSD_BIND_ADDR='192.168.23.65'

接下来您需要重新启动 pcsd 服务,如果您运行,netstat -tulpn您应该会看到:

 tcp   0  0 192.168.23.65:2224   0.0.0.0:*     LISTEN   5191/ruby        

相关内容