本站域名:http://goxia.maytide.net or http://sufan.maytide.net
移动设备请访问:http://goxia.maytide.net/m
转载文章,请务必保留出处与作者信息,未经许可严禁用于商业用途!
在 Hyper-V 上应用 Vyatta 的配置实例
在 Hyper-V 上应用 Vyatta 的配置实例
gOxiA 经常在 Hyper-V 上搭建测试环境,而这些虚拟环境通常使用一台事先部署好的 TMG 虚拟机来进行网络共享访问或一些高级的网络应用。但是最近在测试的 Windows Server 2012 Essentials 需要路由器才能执行最佳的测试和体验,否则在向导配置过程中会因找不到 upnp 或无法识别路由器而出现问题。找了不下5款基于 xNIX 的软路由系统,不是因为收费就是无法运行在 Hyper-V 下!郁闷的不得了……
最终无意间发现了 Vyatta 这款软路由系统,支持 upnp!!虽然 Vyatta 完整版也是收费的,但是基于 Vyatta Core 的 Community 版本确实免费的,而且最新版是 Vyatta 6.4,最为重要的是 Vyatta 能够运行在 Hyper-V 的虚拟机上。gOxiA 简单试用了一下发现上手很容易,命令也很简单,于是锁定这款了这款软件,但是好事多磨,最新的 6.4 版若要使用 upnp 需要单独进行安装和配置,用了整整一天的时间来学习和实践,最终总算是大功告成,由于 xNIX 都是基于命令行的,所以写个日志用来备忘是非常有必要,除了方便以后自己查阅,还能与大家分享,岂不是件美事!
gOxiA 本次的应用环境非常简单,真实环境是一台 Hyper-V 服务器与真实路由器相连,接入到外网,然后在 Hyper-V 上额外添加一个 VMs LAN Only 的虚拟交换机供 Windows Server 2012 Essentials 使用,然后再安装 Vyatta 充当路由器将两个网络连接,模拟真实的网络环境。大概的结构参考下图:
之后为 Vyatta 准备一台虚拟机,用 Hyper-V 管理器创建一台内存512M,硬盘10GB的虚拟机,并分配两块网卡(PS:Vyatta 能够识别 Hyper-V 的高性能网卡,所以无需担心!),其中第一块网卡桥接到真实环境网络中,并作为 Vyatta 的 eth0,而第二块网卡则使用 VMs LAN Only,并作为 Vyatta 的 eth1,模拟 Windows Server 2012 Essentials(WS2012Ess)的局域网。
接下来就要安装和配置 Vyatta,为了满足 WS2012Ess 的需求,除了要为 Vyatta 执行基本配置,还要在后面安装 upnp 支持。为了方便和清晰地记录过程,下面的命令行将不做详细的介绍。在开始前需要先下载 Vyatta 的安装镜像,可以点击下面的图标进入下载页面。
注意:请下载 32Bit 的 Vyatta Core Live CD iso。
- 安装 Vyatta,在 Hyper-V 上 mount 下载的 iso,引导后使用 vyatta 作为账号和密码登录,然后在提示符下键入“install system”执行安装,除了硬盘擦出需要键入 Yes 确认,和设置密码以外,一路下来基本上都是回车!过程简单,就不再叙述了……开始前大家需要了解一下简单的命令意思,commit 即:保存修改并生效(重启系统会丢失做过的修改);save 即:将修改应用到到配置(即永久写入);reboot 即:重启系统;poweroff 即:关机。
- 设置 Vyatta 主机名为 VR,每个命令前我会加上 # 或 $ 的符号,其中 # 就表示在配置模式下运行命令。
$configure(进入配置模式)
#set system host-name vr - 设置 Vyatta 的域
#set system domain-name contoso.local - 设置外部 IP – DHCP 模式
#set interfaces ethernet eth0 address dhcp - 设置内部 IP - 静态模式
#set interfaces ethernet eth1 address 192.168.11.254/24 - 设置时区
#set system time-zone Asia/Chongqing - 添加时间服务器
#set system ntp server time.windows.com - 开启 DHCP Server
#set service dhcp-server shared-network-name LAN-IP-Pool
#set service dhcp-server shared-network-name LAN-IP-Pool subnet 192.168.11.0/24
#set service dhcp-server shared-network-name LAN-IP-Pool dns-server 192.168.11.253
#set service dhcp-server shared-network-name LAN-IP-Pool start 192.168.11.1 stop 192.168.11.200 - 到这里,基本的设置可以说就完成了,执行 commit 保存,并启动 WS2012Ess 看是否能自动获取到 IP,如果没问题,我们就可以执行 save 存储到配置。下面可以开启 webproxy 来试试内网是否能通过 vyatta 代理方式访问外部网络。
#set service webproxy listen-address 192.168.11.254
#set service webproxy default-port 8080
在 WS2012Ess 上打开 IE 配置代理地址为 192.168.11.254,端口为 8080,然后访问外部网站试试!没问题即可将 WS2012 恢复原设置,并将 IP 改为规划的静态地址。 - 接下来就要配置 SNAT,允许内网访问外网(PS: webproxy 显然不满足环境要求)
#set nat source rule 1
#set nat source rule 1 source address 192.168.11.0/24
#set nat source rule 1 outbound-interface eth0
再次执行 commit,然后测试,如无问题就可 save。 - 从下面开始就要执行 upnp 的安装和设置,由于upnp 的 deb 格式已经无法下载(PS:估计是被墙了),所以我们需要先下载源码再进行编译,而 Vyatta 默认并不包含编译所需的汇编工具,为此我们需要做一些准备工作,首先添加软件源。
#set system package repository debian url http://debian.osuosl.org/debian
#set system package repository debian distribution stable
#set system package repository debian components main
#commit
#sudo apt-get update - 安装汇编工具
#sudo apt-get install build-essential automake dpkg-dev dh-make fakeroot autoconf libtool - 下载、解压、编译 upnp
#sudo wget http://www.maytide.net/vyatta-upnp.zip
#unzip vyatta-upnp.zip
#dpkg-buildpackage
注:解压后需要进入其子目录才能执行编译,之后回到上一级目录就 ls 到 deb 格式的安装包。此外,之前 gOxiA 强烈推荐大家使用 32Bit 的 Vyatta 版本也是因为 upnp,因为 gOxiA 早先使用 64Bit 测试时发现 upnp 无法编译。 - 下载 additional packages
#sudo wget http://packages.vyatta.com/debian/pool/main/libu/libupnp4/libupnp4_1.8.0~svn20100507-1_i386.deb
#sudo wget http://packages.vyatta.com/debian/pool/main/l/linux-igd/linux-igd_1.0+cvs20070630-3_i386.deb - 安装 deb 软件包
#sudo dpkg –i …(后面名字省略不再叙述) - 待上面三个 deb 都完成安装后就可以配置 upnp,非常简单!
#set service upnp listen-on eth1 outbound-interface eth0
#commit - 现在,就可以在 WS2012Ess 上配置随处访问,完毕后我们可以在环境中访问 WS2012Ess 的外网 IP 进行测试,当然也可执行下面的命令行查看状态。
$sudo iptables –nL –t nat - 除了 upnp,我们当然还会用到 DNAT,为此可参考下面的命令行。
#set nat destination rule 1
#set nat destination rule 1 description “Pub TCP25”
#set nat destination rule 1 protocol tcp
#set nat destination rule 1 port smtp
#set nat destination rule 1 inbound-interface eth0
#set nat destination rule 1 translation address 192.168.11.252
至此,配置工作就算完成了!一路下来也对 Vyatta 有了入门的认识吧,一些其他的功能,如防火墙、VPN,等等可以参考官方的文档,都是很容易理解的!
[TMG] 多外网 IP 环境下为特定计算机或网络集指定 NAT 出口
gOxiA 所在的公司前段时间进行了并网,将办公室网络与机房主干网进行了联结!至此,访问互联网的速度得到了质的提升。而办公室内的 Windows Small Business Server 2011 Standard(SBS2011)服务器不再需要通过 Smart Host 进行邮件的外发处理,而可以直接使用机房的公网IP。但是随即也引发了一些问题!因为前端部署有 TMG 服务器,而外网多个 IP 都绑定在 TMG 的外部网卡上(用于服务发布),默认情况下内网用户都会经由 TMG 的 Primary IP 进行 NAT 访问,因为业务需求 TMG 开放了内网 SMTP 的访问权限,那么此时就会出现安全问题。
因为邮件服务器与其他用户使用同一个 Primary IP 访问 Internet,那么一些用户的访问行为可能会影响邮件服务器的信用等级!该如何为特定的计算机或网络集指定 NAT 呢?!gOxiA 就此问题曾咨询了 Microsoft Partner Support,获得的解决方案是需要部署 Exchange Edge,但是对于 SBS 来讲此解决方案并不合适,后来向 China MVP 的 MailList(NDA) 发送了求助邮件,获得了一个简单可行的解决办法!
在 ISA/TMG 中我们可以利用网络规则来为特定资源指定 NAT 地址,这样 gOxiA 便可以为 SBS2011 单独指定一个 NAT IP,与办公室上网所用默认的 Primary IP 分离,从而保证了服务器的安全。为此,需要打开 TMG 控制器进行配置。
- 在左侧的“控制台树”中展开“Forefront TMG”,并切换至“网络连接”
- 在中间的内容窗体中点击“网络规则选项卡”
- 在任务窗体中点击“创建网络规则”
- 跟随向导执行操作,创建一个名为“SBS2011 to Internet”的网络规则
- 在网络通讯源中添加一个“计算机”源,其中计算机源就是 SBS2011
- 在网络通讯目标中添加“外部”
- 在网络关系中选择“网络地址转换”
- 在 NAT 地址选择中选择“使用指定的 IP 地址”,为 SBS2011 指定专用的 NAT IP
- 最后完成操作
至此,配置操作即告完成。现在我们可以服务器上访问 ip138 网站看看识别的 NAT IP 是否为指定的地址。最后感谢 王春海 和 刘力科 两位 MVP 提供的帮助!