NoOps

Ops make no ops | Ops的目标是没有Ops,嗯!

DSNAT support

作者: |   1,637 浏览  | 

dsnat简介

dsnat(Dynamic Source Network Address Translation) 是一个基于lvs的模块,在taobao开源的FNAT基础上开发,dsnat位于网络的网关位置,内网访问外网时,会将内网地址改成公网地址池中的ip,轮询选择

目前该模块只支持ipv4下的TCP,UDP协议, ICMP暂时还不支持

dsnat_tools包含ipvsadm和keepalived这2个工具,在官方源码的基础上修改添加了对dsnat的支持

  • ipvsadm是对lvs进行配置的用户空间工具,ipvsadm->lvs类似于iptables->netfilter
  • keepalived是对lvs集群的一个自动化配置工具(以服务形式常驻内存),可针对rs自动摘除和添加rs到vs中;并带有HA功能,提供热备容灾

安装

过程可以参考FNAT,将补丁换成dsnat即可

1. 下载 redhat 6.2的内核

2. 准备代码

3. 打补丁

4. 编译安装

LVS TOOL 安装

标准的ipvsadm和keepalive将无法正常使用,
需要编译安装ipvsadm和keepalived,在dsnat_tools下载工具源码

配置用例

将lvs放在网关的位置,假设网络环境是这样的

网络环境是(模拟一下)

  • client在内网
  • realserver在外网
  • 内网到外网的路由指向lvs
    • route add -net 1.2.0.0 netmask 255.255.0.0 gw 1.1.100.1(用默认路由也可以)
  • 外网服务器可以访问lvs的lip

Alt text

网关的配置

通过ipvsadm配置lvs规则

如果执行报错,请核对一下使用的内核补丁是否生效,ipvsadm是否为dsnat_tools编译安装版本

通过keepalive配置lvs规则

如果执行报错,请核对一下使用的内核补丁是否生效,keepalive是否为dsnat_tools编译安装版本,
keepalive需要2台机器了,这里给出一台的配置

  • 启动:service keepalived start
  • 更新:service keepalived reload
  • 停止:service keepalived stop

资源

9 Comments

  1. 2013/06/23 at 1:24 上午

    真是实用的东西哈~
    可以加下qq不? 麻烦邮件回复我下吧~ 常聊聊哈~

  2. 2013/12/12 at 9:30 下午

    中间的手绘图很好看,用的是什么工具能否告知?

    • myliyifei
      2015/02/07 at 12:53 下午

      我也想知道,中间的手绘图用什么生成的?

  3. 小七
    2014/04/14 at 5:30 下午

    请问怎么联系啊?想具体的实施,能否邮件回复下呢?

  4. 小七
    2014/05/12 at 11:54 上午

    执行命令后显示:
    #ipvsadm -P -t 0.0.0.0:0 -z 223.203.202.186
    Protocol not available

    能告诉具体原因吗?如何解决呢?

  5. 2014/05/29 at 4:44 下午

    请问多链路怎么支持,比如有电信,联通,移动三条上行链路,同一内网地址去不同的链路使用不同的local address

  6. 2014/06/30 at 5:03 下午

    很好很强大,我们也基于阿里的lvs-v2开发适用于多链路的nat网关,希望有机会跟小米同学交流一下
    https://github.com/jlijian3/lvs-snat

    virtual_server fwmark 1 {

    snat_rule {
    from 192.168.40.0/24
    gw 1.1.3.1
    oif eth2
    snat_ip 1.1.3.71-1.1.3.73
    algo random
    }
    }

    • mmtt
      2015/01/18 at 1:49 下午

      Lijian你好。看了你写的改造过的snat部署文章http://tech.uc.cn/?p=2274。发现有什么不明白的地方,也没有部署成功。不知小米这一篇的文章真的如你所说,配置方面真的存在顾些失彼的问题?小米的同事可以回应下么。

  7. holyshit
    2016/09/11 at 6:23 下午

    请问这个模式的实际应用场景是啥呢?

发表评论