searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

DPVS(二):DNAT & SNAT

2023-09-25 02:48:29
190
0

   在 DPVS 中,SNAT(Source Network Address Translation,源地址转换)和 DNAT(Destination Network Address Translation,目标地址转换)是常用的网络地址转换技术。
   SNAT 用于在数据包离开负载均衡设备时,将源 IP 地址修改为负载均衡设备的 IP 地址,从而实现客户端和负载均衡设备之间的解耦。这样,在回复响应时,响应的目标地址就是负载均衡设备的 IP 地址,而不是后端服务器的 IP 地址。这种方式可以确保响应流量直接由后端服务器返回给客户端,而不需要再经过负载均衡设备,减轻了负载均衡设备的处理压力。
   DNAT 则用于将客户端请求的目标 IP 地址转换为后端服务器的 IP 地址。负载均衡设备会将客户端请求中的目标 IP 地址修改为后端服务器的 IP 地址,并将请求转发给对应的后端服务器。这样,后端服务器可以根据自己的 IP 地址来处理请求。DNAT 技术常用于将外部请求映射到内部的服务器群组。

DPVS NAT

1、DNAT

DNAT 在网络中发挥了以下几个作用:

  1. 服务器负载均衡:在负载均衡环境中,DNAT 技术被用来将客户端请求的目标 IP 地址转换为后端服务器集群中的一个具体服务器的 IP 地址。这样,负载均衡设备可以根据预设的算法将请求转发到合适的服务器上,实现负载均衡和资源优化。

  2. 防火墙和网络安全:DNAT 可以用于实现网络隔离和访问控制。通过设置 DNAT 规则,可以将外部网络中的请求转发到内部网络中特定的服务器上,同时隐藏内部服务器的真实 IP 地址。这样做可以增加网络的安全性并减少暴露在互联网上的风险。

  3. 服务发布和端口转发:通过 DNAT,可以将公网上的某个 IP 地址及其指定端口映射到内部网络中的一个特定服务器的 IP 地址和端口上。这样,可以方便地将某个服务(例如 Web 服务器、FTP 服务器等)发布到公网上,或者实现端口转发功能,将外部请求的特定端口转发到内部特定服务器的不同端口上。

  1. conf:
  2. #!/bin/sh -
  3.  
  4. ! Configuration File for keepalived
  5. vrrp_instanceVI_1 {
  6. state BACKUP
  7. interface eth1
  8. virtual_router_id 123         # VID should be unique in network
  9. priority 50                   # master's priority is bigger than worker,如果是备点此项要小于100
  10. advert_int 1
  11. dpdk_interface eth1
  12. nopreempt
  13. authentication {
  14. auth_type PASS
  15. auth_pass portPsd!2048
  16. }
  17.  
  18. virtual_ipaddress {
  19. 192.168.100.100/32
  20. }
  21.  
  22. }
  23.  
  24. virtual_server192.168.100.100 8848 {
  25. delay_loop 6
  26. lb_algo rr
  27. lb_kind NAT
  28.  
  29. persistence_timeout 50
  30. protocol TCP
  31.  
  32. real_server 192.168.100.2 8848 {
  33. weight 1
  34. MISC_CHECK {
  35.    misc_timeout 3
  36. }
  37. }
  38. }

 

srv:nc -lk 8848

cli: nc 192.168.100.100 8848

 

2、SNAT

在实际生产环境中,有些服务器需要通过+SNAT+功能来访问外网服务,可能的需求原因如下:

  1、只提供内网服务,比如负载均衡反向代理后端的服务器,只配置内网地址

  2、机房环境的原因,相关服务器临近的交换机不能配置公网+IP+资源

  3、有些是出于公司商务成本考虑,为了节省开支,没有提供出公网的能力

  4、有些是系统架构的设计或系统安全性的考虑

dpvs.conf

  1. vi/usr/local/ctlb/etc/dpvs.conf修改配置,关闭flow_enable
  2. !sa_pool config
  3. sa_pool{
  4. pool_hash_size   8
  5. flow_enable off
  6. }

 

Snat.conf

  1. #!/bin/sh -
  2.  
  3. WAN_IP=100.1.1.2# WAN IP can access Internet.
  4. WAN_PREF=24# WAN side network prefix length.
  5. GATEWAY=100.1.1.1# WAN side gateway
  6.  
  7. WAN_IP_1=100.1.1.3
  8.  
  9. LAN_IP=192.168.0.2
  10. LAN_PREF=24
  11.  
  12. # add WAN-side IP with sapool
  13. /usr/local/ctlb/bin/dpipaddr add $WAN_IP/$WAN_PREF dev eth1 sapool # must add sapool for WAN-side IP
  14. /usr/local/ctlb/bin/dpipaddr add $WAN_IP_1/$WAN_PREF dev eth1 sapool
  15. # add LAN-side IP as well as LAN route (generated)
  16. /usr/local/ctlb/bin/dpipaddr add $LAN_IP/$LAN_PREF dev eth1
  17.  
  18. # add default route for WAN interface
  19. /usr/local/ctlb/bin/dpiproute add default via $GATEWAY dev eth1

keepalived.conf

  1. #!/bin/sh -
  2.  
  3. !Configuration File for keepalived
  4.  
  5. virtual_servermatch SNAT1 {
  6. protocol TCP
  7. delay_loop 3
  8. lb_algo rr
  9. lb_kind SNAT
  10. src-range 168.0.0-192.168.0.10
  11. oif eth1
  12. alpha
  13. omega
  14. quorum 1
  15.  
  16. real_server 100.1.1.2 0 {
  17. weight 50
  18. }
  19.  
  20. real_server 1.1.3 0 {
  21. weight 50
  22. }
  23. }

测试

srv:nc -lk 8848

cli: nc 100.1.1.1 8848

 

性能:

0条评论
0 / 1000
Tom
5文章数
0粉丝数
Tom
5 文章 | 0 粉丝
原创

DPVS(二):DNAT & SNAT

2023-09-25 02:48:29
190
0

   在 DPVS 中,SNAT(Source Network Address Translation,源地址转换)和 DNAT(Destination Network Address Translation,目标地址转换)是常用的网络地址转换技术。
   SNAT 用于在数据包离开负载均衡设备时,将源 IP 地址修改为负载均衡设备的 IP 地址,从而实现客户端和负载均衡设备之间的解耦。这样,在回复响应时,响应的目标地址就是负载均衡设备的 IP 地址,而不是后端服务器的 IP 地址。这种方式可以确保响应流量直接由后端服务器返回给客户端,而不需要再经过负载均衡设备,减轻了负载均衡设备的处理压力。
   DNAT 则用于将客户端请求的目标 IP 地址转换为后端服务器的 IP 地址。负载均衡设备会将客户端请求中的目标 IP 地址修改为后端服务器的 IP 地址,并将请求转发给对应的后端服务器。这样,后端服务器可以根据自己的 IP 地址来处理请求。DNAT 技术常用于将外部请求映射到内部的服务器群组。

DPVS NAT

1、DNAT

DNAT 在网络中发挥了以下几个作用:

  1. 服务器负载均衡:在负载均衡环境中,DNAT 技术被用来将客户端请求的目标 IP 地址转换为后端服务器集群中的一个具体服务器的 IP 地址。这样,负载均衡设备可以根据预设的算法将请求转发到合适的服务器上,实现负载均衡和资源优化。

  2. 防火墙和网络安全:DNAT 可以用于实现网络隔离和访问控制。通过设置 DNAT 规则,可以将外部网络中的请求转发到内部网络中特定的服务器上,同时隐藏内部服务器的真实 IP 地址。这样做可以增加网络的安全性并减少暴露在互联网上的风险。

  3. 服务发布和端口转发:通过 DNAT,可以将公网上的某个 IP 地址及其指定端口映射到内部网络中的一个特定服务器的 IP 地址和端口上。这样,可以方便地将某个服务(例如 Web 服务器、FTP 服务器等)发布到公网上,或者实现端口转发功能,将外部请求的特定端口转发到内部特定服务器的不同端口上。

  1. conf:
  2. #!/bin/sh -
  3.  
  4. ! Configuration File for keepalived
  5. vrrp_instanceVI_1 {
  6. state BACKUP
  7. interface eth1
  8. virtual_router_id 123         # VID should be unique in network
  9. priority 50                   # master's priority is bigger than worker,如果是备点此项要小于100
  10. advert_int 1
  11. dpdk_interface eth1
  12. nopreempt
  13. authentication {
  14. auth_type PASS
  15. auth_pass portPsd!2048
  16. }
  17.  
  18. virtual_ipaddress {
  19. 192.168.100.100/32
  20. }
  21.  
  22. }
  23.  
  24. virtual_server192.168.100.100 8848 {
  25. delay_loop 6
  26. lb_algo rr
  27. lb_kind NAT
  28.  
  29. persistence_timeout 50
  30. protocol TCP
  31.  
  32. real_server 192.168.100.2 8848 {
  33. weight 1
  34. MISC_CHECK {
  35.    misc_timeout 3
  36. }
  37. }
  38. }

 

srv:nc -lk 8848

cli: nc 192.168.100.100 8848

 

2、SNAT

在实际生产环境中,有些服务器需要通过+SNAT+功能来访问外网服务,可能的需求原因如下:

  1、只提供内网服务,比如负载均衡反向代理后端的服务器,只配置内网地址

  2、机房环境的原因,相关服务器临近的交换机不能配置公网+IP+资源

  3、有些是出于公司商务成本考虑,为了节省开支,没有提供出公网的能力

  4、有些是系统架构的设计或系统安全性的考虑

dpvs.conf

  1. vi/usr/local/ctlb/etc/dpvs.conf修改配置,关闭flow_enable
  2. !sa_pool config
  3. sa_pool{
  4. pool_hash_size   8
  5. flow_enable off
  6. }

 

Snat.conf

  1. #!/bin/sh -
  2.  
  3. WAN_IP=100.1.1.2# WAN IP can access Internet.
  4. WAN_PREF=24# WAN side network prefix length.
  5. GATEWAY=100.1.1.1# WAN side gateway
  6.  
  7. WAN_IP_1=100.1.1.3
  8.  
  9. LAN_IP=192.168.0.2
  10. LAN_PREF=24
  11.  
  12. # add WAN-side IP with sapool
  13. /usr/local/ctlb/bin/dpipaddr add $WAN_IP/$WAN_PREF dev eth1 sapool # must add sapool for WAN-side IP
  14. /usr/local/ctlb/bin/dpipaddr add $WAN_IP_1/$WAN_PREF dev eth1 sapool
  15. # add LAN-side IP as well as LAN route (generated)
  16. /usr/local/ctlb/bin/dpipaddr add $LAN_IP/$LAN_PREF dev eth1
  17.  
  18. # add default route for WAN interface
  19. /usr/local/ctlb/bin/dpiproute add default via $GATEWAY dev eth1

keepalived.conf

  1. #!/bin/sh -
  2.  
  3. !Configuration File for keepalived
  4.  
  5. virtual_servermatch SNAT1 {
  6. protocol TCP
  7. delay_loop 3
  8. lb_algo rr
  9. lb_kind SNAT
  10. src-range 168.0.0-192.168.0.10
  11. oif eth1
  12. alpha
  13. omega
  14. quorum 1
  15.  
  16. real_server 100.1.1.2 0 {
  17. weight 50
  18. }
  19.  
  20. real_server 1.1.3 0 {
  21. weight 50
  22. }
  23. }

测试

srv:nc -lk 8848

cli: nc 100.1.1.1 8848

 

性能:

文章来自个人专栏
弹性负载均衡
2 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0