在 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,等等可以参考官方的文档,都是很容易理解的!
[SBS] 解决因安装更新补丁引发的 MSExchangeAB 与 WSUS 端口冲突故障
前几日 gOxiA 将公司的 Windows Small Business Server 2011 Standard(SBS2011Std) 系统进行了升级更新,为其安装了 Exhange Server 2010 SP2 和后续的 Update Rollup 2,没想到却出现了问题。在 Update Rollup 2 安装接近结束时,更新进程停止了,日志中一直报 GPO 相关的错误,等待了近半个小时的时间,没有任何进展,无奈强制重启了 SBS2011Std 服务器,重启完毕后发现与 Exhcange Server 相关的服务都被禁用了,于是再次启动 Windows Update,并重新更新 Update Rollup 2 补丁,这次算是顺利的完成了更新,待重启服务器后发现 Exchange Server 相关服务还是禁用状态,随即手工将其他更改为自动,并启动服务。
Exchange Server 故障惊魂才过,今天登录 SBS2011Std 服务器才在 Dashboard 中发现“网络基础摘要”中“更新”状态没有查询结果。 启动 Windows Server Update Services 控制台提示错误,检查了 IIS 才发现“WSUS 管理”站点时停止状态,当手动去启动它时提示错误“另一个程序正在使用此文件,进程无法访问。(异常来自 HRESULT : 0x80070020)”,如下图所示:
从错误信息判断,该故障是典型的端口被其他程序占用所导致的问题,为了搞清是哪个程序占用了端口,我们可以用 netstat 进行查找,为此执行如下命令行:
在查询结果中我们能得到如下图类似的结果,确认每条信息结尾的数字就是该程序的 PID,然后在任务管理器中通过 PID 即可定位程序。
从截图中我们能看到占用 WSUS 8530 端口的进程是“MSExchangeAB”即“Microsoft Exchange 通讯簿”服务,看来应该是之前安装了 Exchange Server 的更新导致 MSExchangeAB 端口变更,并占用了 WSUS 的 8530 端口,参考了“安装指南模板 - 客户端访问服务器”,尝试手工为 MSExhangeAB 指定静态端口,为此执行如下步骤:
启动“regedit”注册表编辑器,定位到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MSExchangeAB”,创建一个新项并命名为“Parameters”,再其下创建一个名为“RpcTcpPort”的字符串,并将值设置为“59596”,该值就是 MSExchangeAB 的端口,当然也可以指定为其他不受冲突的端口。修改完毕后重启 MSExchangeAB 服务。
重新在 IIS 里启动“WSUS 管理”站点,故障消除!在恢复正常后,我们可以把之前设置的 MSExchangeAB 静态端口删除。
[SBS] 新一代 SBS Essentials 由 Windows Server 2012 Essentials 替代
新一代 Windows Small Business Server Essentials 将由 Windows Server 2012 Essentials 替代
众所周知 Windows Server 2012 SKUs 去除了之前很多的版本,而微软也表示之前的一些产品将不再更新,如:Windows Home Server。
因为 gOxiA 参与的一个项目(NDA)涉及到 Windows Small Business server(SBS),所以对 SBS 尤为关注,从此次微软公布的 Windows Server 2012 SKUs 来看,并未提到 SBS 2012,个人猜测可能是因为某些原因吧,但是紧接着 SBS 官方 Blog 公布了一条消息 Windows Small Business Server Essentials becomes Windows Server 2012 Essentials,确实是意外!
SBS 竟然被纳入到了 Windows Server 2012 Essentials,虽然早先就知道 Next SBS 将不会再有 Standard 版本,而 SBS2011Std 将是微软中小企业服务器解决方案中最后一个标准版产品,但是却没想新的策略竟是如此,这不也意味着 SBS 产品将被终结?!但是目前 Next SBS 中一些功能都是面向解决方案的,且针对性很强,难不成 Windows Server 2012 Essentials 将提供这些功能特性?!实在是让人搞不懂,最终怎样只能拭目以待了……
但是从升级方面的信息来看,微软已经给出了答复!
- 如果之前购买的是 SA(Software Assurance)的 Small Business Server 2011 Essentials,那么将获得一个 Windows Server 2011 Essentials 授权许可。
- 如果是 SA 的 Small Business 2011 Standard,将获得一个 Windows Server 2012 Standard 和一个 Exchange Server Standard 2010 授权许可。
- 如果是 SA 的 Small Business 2011 Premium Add-on,将获得一个 Windows Server 2012 Standard 和一个 SQL Server 2012 Standard 授权许可。
结尾,趁 Small Business Server 2011 Standard 还没退市,该下手的就赶紧下手吧!