使用端口号的NAT(NAPT, Network Address and Port Translation)与UPnP (by quqi99)

作者:张华  发表于:2014-08-19
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明

(http://blog.csdn.net/quqi99 )

      

       Neutron中具有DNAT(floating ip)的概念,一个虚机可以绑定一个公网IP,但这比较浪费公网IP吧。那么可以使用基于端口的NAT(NAPT, Network Address and Port Translation)来减少公网IP。

        当然,人工添加端口映射也是可以的,不过UPnP提供可以自动完成端口映射的工作。使用UPnP,设备可以动态加入网络,自动获得一个IP地址,向其他设备公布它的能力或者获知其他设备的存在和服务,所有这些过程都是自动完成的,此后设备能够彼此直接通讯。必须同时满足三个条件:
       1, NAT网关设备必须支持UPnP功能;如果Neutron L3-agent要支持它的话方法见附录一。
       2, 操作系统必须支持UPnP功能;我们常见的Windows XP是支持UPnP的;
       3, 应用软件必须支持UPnP功能;比如BC、电骡eMule、MSN软件都是支持的;如何编写程序参见附录[2]
   
       但UPnP据说有很大的安全问题,如果对网络安全要求较高或要求高可控制性的网络,则不要安装配置UPnP支持,否则会导致网络NAT映射比较混乱,从而引发许多问题。建议小型网络或者家庭网络使用UPnP.
   
       实际上通过下列简单的iptables规则也可以实现NAPT, 缺点是对于一些如SIP协议在协商过程中动态确定后续port的可能预先无法知道这个port并去配置。
ip netns exec qrouter-xxx iptables -t nat -A neutron-l3-agent-PREROUTING -p tcp/udp -d gateway_ip  --dport outside_port -j DNAT --to inside_addr:inside_port
ip netns exec qrouter-xxx iptables -t nat -A neutron-l3-agent-snat -p tcp/udp -s inside_addr --sport inside_port -j SNAT --to outside_addr:outside_port


附件一,在Linux上配置UPnP网关
1, 下载下列软件并执行标准三步曲命令安装(./configure && make && sudo make install)
    UPnP SDK for Linux, http://sourceforge.net/projects/upnp/
    LinuxIGD, http://sourceforge.net/projects/linux-igd/files/linux-igd/linuxigd-1.0/
2, 使用root用户启动UPnP软件网关,实际上基于Linux的硬件路由器上集成的也是它
   export LD_LIBRARY_PATH=/usr/local/lib
   upnpd <外网接口> <内网接口>

参考:
[1], http://linux.chinaunix.net/docs/2007-01-04/3594.shtml

[2], http://blog.csdn.net/yanghao23/article/details/7684860

[3], https://review.openstack.org/#/c/60512/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

quqi99

你的鼓励就是我创造的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值