posts - 5, comments - 91, trackbacks - 0, articles - 53
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Citrix XenServer上实现NAT

Posted on 2011-06-28 20:08 三块石头 阅读(...) 评论(...) 编辑 收藏

最近在研究公网访问私内网云应用的实现手段,有了点小心得,特此记录下。

先说下工作环境:Citrix XenServer 5.6 FP1,Citrix XenCenter

最终效果:内网虚拟机可以访问外网服务,外网可以访问内网虚拟机

效果截图:

效果截图

实现步骤:

1、通过XenCener创建“External NetWork”

     点击pool(比如devPool)→Network→External Network,输入好Name,然后选择NIC为NIC 0,假设网络的名字为virtual_router

2、通过模板创建一个名为Router的虚拟机

     选择模板为"Demo Linux"(其实一个Debian Linux),然后增加2个网卡,一个网卡连接到"Network 0",另一个网卡连接到“virtual_router"

3、启动Router后并编辑 /etc/network/interface

#配置lo
auto lo
iface lo inet loopback

#配置eth0
auto eth0
iface eth0 inet static
#10.4.44.179为外网IP地址
address
10.4.44.179
netmask
255.255.255.0
gateway
10.4.44.1

#配置eth1
auto eth1
iface eth1 inet static
address
192.168.22.254
netmask
255.255.255.0

4、配置端口转发及防火墙配置

#允许ip转发
echo "1" > /proc/sys/net/ipv4/ip_forward

#可以将下面的内容保存为一个bash文件来执行
#保存为bash文件需要执行chmod 744 file
#bash文件可以在/etc/rc.local中引入

#!/bin/bash
iptables
="/sbin/iptables"
$iptables --flush
$iptables --table nat --flush
$iptables --delete-chain
$iptables -I INPUT -p all -j ACCEPT

#内网外网实现
$iptables -t nat -A POSTROUTING -o eth0 -s 192.168.22.0/24 -j SNAT --to-source 10.4.44.179

#外网访问内网实现,将外网IP的5000好端口转发到虚拟机的3389端口
$iptables -t nat -A PREROUTING -i eth0 -p tcp -d 10.4.44.179 --dport 5000 -j DNAT --to-destination 192.168.22.2:3389
$iptables -A FORWARD -j ACCEPT

5、新建虚拟机并配置好IP

     新建一个名为TestNAT的虚拟机,并连接到网络"virtual_router",设置虚拟机的ip地址为192.168.22.2,网关为为192.168.22.254,如果是windows请开启远程访问

6、访问

      访问10.4.44.179:5000,就能连接到192.168.22.2:3389,内网访问外网也可以成功访问。


参考资料:

http://support.citrix.com/article/CTX116456

http://www.ec-os.net/misc/iptables.html