Iptables

LVS 配置問題(使用食人魚工具)

  • March 31, 2012

我已經使用 piranha 工具在 cent os 上配置了 LVS。我使用內部 n/w 的 vip 作為真實伺服器的網關,我們有兩個 NIC,一個具有外部 Ip,另一個用於內部 n/w,位於 192.168.3.0/24 網路上。

但我無法從客戶端連接它顯示連接被拒絕錯誤

. 請建議 iptables 規則用於 private n public n/w 進行通信。可能是我錯過了這個。我們添加的 iptables 規則是:

iptables -t nat -A POSTROUTING -p tcp -s 192.168.3.0/24 --sport 5000 -j MASQUERADE

這是我的ipconfig:

eth0      Link encap:Ethernet  HWaddr 00:00:E8:F6:74:DA 
         inet addr:122.166.233.133  Bcast:122.166.233.255  Mask:255.255.255.0
         inet6 addr: fe80::200:e8ff:fef6:74da/64 Scope:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:94433 errors:0 dropped:0 overruns:0 frame:0
         TX packets:130966 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000
         RX bytes:9469972 (9.0 MiB)  TX bytes:19929308 (19.0 MiB)
         Interrupt:16 Base address:0x2000

eth0:1    Link encap:Ethernet  HWaddr 00:00:E8:F6:74:DA 
         inet addr:122.166.233.136  Bcast:122.166.233.255  Mask:255.255.255.0
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         Interrupt:16 Base address:0x2000

eth1      Link encap:Ethernet  HWaddr 00:E0:20:14:F9:2D 
         inet addr:192.168.3.1  Bcast:192.168.3.255  Mask:255.255.255.0
         inet6 addr: fe80::2e0:20ff:fe14:f92d/64 Scope:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:123718 errors:0 dropped:0 overruns:0 frame:0
         TX packets:148856 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000
         RX bytes:18738556 (17.8 MiB)  TX bytes:11697153 (11.1 MiB)
         Interrupt:17 Memory:60000400-600004ff

eth1:1    Link encap:Ethernet  HWaddr 00:E0:20:14:F9:2D 
         inet addr:192.168.3.10  Bcast:192.168.3.255  Mask:255.255.255.0
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         Interrupt:17 Memory:60000400-600004ff

eth2      Link encap:Ethernet  HWaddr 00:16:76:6E:D1:D2 
         UP BROADCAST MULTICAST  MTU:1500  Metric:1
         RX packets:0 errors:0 dropped:0 overruns:0 frame:0
         TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000
         RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
         Interrupt:21 Base address:0xa500

和 ipvsadm -ln 命令

[root@abts-kk-static-133 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
 -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  122.166.233.136:5000 wlc
TCP  122.166.233.136:5004 wlc

lvs server routing table
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.3.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
122.166.233.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
169.254.0.0     0.0.0.0         255.255.0.0     U     1003   0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1004   0        0 eth1
0.0.0.0         122.166.233.1   0.0.0.0         UG    0      0        0 eth0

真正的 1

真正的 2

我們從 5000:5008 配置了各種埠。

我們是否需要為所有埠使用這個 iptables?

建議我應該如何解決這個問題。

首先,您需要決定您想要哪種類型的 LVS:NAT、TUN 或 DR。

$$ packet-forwarding-method $$

      -g, --gatewaying  Use gatewaying (direct routing). This is the default.

      -i, --ipip  Use ipip encapsulation (tunneling).

      -m, --masquerading  Use masquerading (network access translation, or NAT).

您似乎需要 NAT,因此您需要 -m 選項來為您的真實伺服器設置 ipvsadm。

此處提供了一個測試食人魚配置:

http://www.linuxvirtualserver.org/docs/ha/piranha.html

您無需使用自己的 iptables 規則手動配置 NAT,而是讓 ipvsadm 為您執行 NAT。刪除您的 iptables 規則,並就此而言,刪除您在上面指定的別名介面,以 :1 結尾。這將大大簡化事情並使您走上正軌。

確保在 192.168.3.1 中的真實伺服器上使用預設 gw。從 Director 中,嘗試 ping 每個 realservers 並嘗試 telnet 到看起來是 5000/5004 的 LVS 埠。如果一切正常,請返回您的客戶端並嘗試在您的 VIP 上遠端登錄到 5000/5004。

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