Centos

如何使用 PCS 強制 IPV4?(起搏器/Corosync)

  • November 23, 2017

我正在為安全環境中的高可用性 Web 應用程序設置一個帶有 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:* 聽 1746/ruby
  4. 在啟用 ipv6 的情況下重新啟動。
  5. 啟動 pcsd 服務 systemctl start pcsd.service
  6. 驗證 pcsd 是否正在執行並正在偵聽 :: netstat –inet -anp46 | grep 2224 tcp6 0 0 :::2224 :::*

LISTEN 356/ruby

Google搜尋在配置中強制使用 IPV4 的方法沒有產生任何結果。所以我現在卡住了。我必須將此埠強制為 0.0.0.0:2224 以通過安全合規性。

誰能告訴我怎麼做?

很晚了,但是如果您希望 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        

引用自:https://serverfault.com/questions/686260