<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[gOxiA=苏繁=SuFan Blog]]></title> 
<link>https://maytide.net/index.php</link> 
<description><![CDATA[gOxiA,苏繁,sufan,Microsoft MVP]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[gOxiA=苏繁=SuFan Blog]]></copyright>
<item>
<link>https://maytide.net/read.php/1597.htm</link>
<title><![CDATA[在 Hyper-V 上应用 Vyatta 的配置实例]]></title> 
<author>gOxiA &lt;sufan_cn@msn.com&gt;</author>
<category><![CDATA[开源系统]]></category>
<pubDate>Mon, 16 Jul 2012 09:16:41 +0000</pubDate> 
<guid>https://maytide.net/read.php/1597.htm</guid> 
<description>
<![CDATA[ 
	<p><a href="http://goxia.maytide.net/ftpupfiles/Vyatta-_D83F/image.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://goxia.maytide.net/ftpupfiles/Vyatta-_D83F/image_thumb.png" width="506" height="80"></a></p> <p><font color="#fd3f0d" size="4"><strong>在&nbsp;&nbsp;Hyper-V 上应用 Vyatta 的配置实例</strong></font></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://goxia.maytide.net/" target="_blank">gOxiA</a> 经常在 Hyper-V 上搭建测试环境，而这些虚拟环境通常使用一台事先部署好的 TMG 虚拟机来进行网络共享访问或一些高级的网络应用。但是最近在测试的 Windows Server 2012 Essentials 需要路由器才能执行最佳的测试和体验，否则在向导配置过程中会因找不到 upnp 或无法识别路由器而出现问题。找了不下5款基于 xNIX 的软路由系统，不是因为收费就是无法运行在 Hyper-V 下！郁闷的不得了……</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最终无意间发现了 Vyatta 这款软路由系统，支持 upnp！！虽然 Vyatta 完整版也是收费的，但是基于 Vyatta Core 的 Community&nbsp;&nbsp;版本确实免费的，而且最新版是 Vyatta 6.4，最为重要的是 Vyatta 能够运行在 Hyper-V 的虚拟机上。gOxiA 简单试用了一下发现上手很容易，命令也很简单，于是锁定这款了这款软件，但是好事多磨，最新的 6.4 版若要使用 upnp 需要单独进行安装和配置，用了整整一天的时间来学习和实践，最终总算是大功告成，由于 xNIX 都是基于命令行的，所以写个日志用来备忘是非常有必要，除了方便以后自己查阅，还能与大家分享，岂不是件美事！</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gOxiA 本次的应用环境非常简单，真实环境是一台 Hyper-V 服务器与真实路由器相连，接入到外网，然后在 Hyper-V 上额外添加一个 VMs LAN Only 的虚拟交换机供 Windows Server 2012 Essentials 使用，然后再安装 Vyatta 充当路由器将两个网络连接，模拟真实的网络环境。大概的结构参考下图：</p> <p><a href="http://goxia.maytide.net/ftpupfiles/Vyatta-_D83F/image_3.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://goxia.maytide.net/ftpupfiles/Vyatta-_D83F/image_thumb_3.png" width="630" height="400"></a></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;之后为 Vyatta 准备一台虚拟机，用 Hyper-V 管理器创建一台内存512M，硬盘10GB的虚拟机，并分配两块网卡（PS：Vyatta 能够识别 Hyper-V&nbsp;&nbsp;的高性能网卡，所以无需担心！），其中第一块网卡桥接到真实环境网络中，并作为 Vyatta 的 eth0，而第二块网卡则使用 VMs LAN Only，并作为 Vyatta 的 eth1，模拟 Windows Server 2012 Essentials（WS2012Ess）的局域网。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;接下来就要安装和配置 Vyatta，为了满足 WS2012Ess 的需求，除了要为 Vyatta 执行基本配置，还要在后面安装 upnp 支持。为了方便和清晰地记录过程，下面的命令行将不做详细的介绍。在开始前需要先下载 Vyatta 的安装镜像，可以点击下面的图标进入下载页面。</p> <p><a href="http://www.vyatta.org/downloads" target="_blank"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="NetworkOS64_NowAvailable" border="0" alt="NetworkOS64_NowAvailable" src="http://goxia.maytide.net/ftpupfiles/Vyatta-_D83F/NetworkOS64_NowAvailable.png" width="191" height="238"></a>&nbsp;&nbsp;注意：请下载 32Bit 的 Vyatta Core Live CD iso。</p> <ul> <li>安装 Vyatta，在 Hyper-V 上 mount 下载的 iso，引导后使用 vyatta 作为账号和密码登录，然后在提示符下键入“install system”执行安装，除了硬盘擦出需要键入 Yes 确认，和设置密码以外，一路下来基本上都是回车！过程简单，就不再叙述了……开始前大家需要了解一下简单的命令意思，commit 即：保存修改并生效（重启系统会丢失做过的修改）；save 即：将修改应用到到配置（即永久写入）；reboot 即：重启系统；poweroff 即：关机。</li> <li>设置 Vyatta 主机名为 VR，每个命令前我会加上 # 或 $ 的符号，其中 # 就表示在配置模式下运行命令。<br/><font style="background-color: #ffff00">$configure（进入配置模式）<br/>#set system host-name vr</font></li> <li>设置 Vyatta 的域<br/><font style="background-color: #ffff00">#set system domain-name contoso.local</font></li> <li>设置外部 IP – DHCP 模式<br/><font style="background-color: #ffff00">#set interfaces ethernet eth0 address dhcp</font></li> <li>设置内部 IP - 静态模式<br/><font style="background-color: #ffff00">#set interfaces ethernet eth1 address 192.168.11.254/24</font></li> <li>设置时区<br/><font style="background-color: #ffff00">#set system time-zone Asia/Chongqing</font></li> <li>添加时间服务器<br/><font style="background-color: #ffff00">#set system ntp server time.windows.com</font></li> <li>开启 DHCP Server<br/><font style="background-color: #ffff00">#set service dhcp-server shared-network-name LAN-IP-Pool<br/>#set service dhcp-server shared-network-name LAN-IP-Pool subnet 192.168.11.0/24<br/>#set service dhcp-server shared-network-name LAN-IP-Pool dns-server 192.168.11.253<br/>#set service dhcp-server shared-network-name LAN-IP-Pool start 192.168.11.1 stop 192.168.11.200</font></li> <li>到这里，基本的设置可以说就完成了，执行 commit 保存，并启动 WS2012Ess 看是否能自动获取到 IP，如果没问题，我们就可以执行 save 存储到配置。下面可以开启 webproxy 来试试内网是否能通过 vyatta 代理方式访问外部网络。<br/><font style="background-color: #ffff00">#set service webproxy listen-address 192.168.11.254<br/>#set service webproxy default-port 8080</font><br/>在 WS2012Ess 上打开 IE 配置代理地址为 192.168.11.254，端口为 8080，然后访问外部网站试试！没问题即可将 WS2012 恢复原设置，并将 IP 改为规划的静态地址。</li> <li>接下来就要配置 SNAT，允许内网访问外网（PS: webproxy 显然不满足环境要求）<br/><font style="background-color: #ffff00">#set nat source rule 1<br/>#set nat source rule 1 source address 192.168.11.0/24<br/>#set nat source rule 1 outbound-interface eth0</font><br/>再次执行 commit，然后测试，如无问题就可 save。</li> <li>从下面开始就要执行 upnp 的安装和设置，由于upnp 的 deb 格式已经无法下载（PS：估计是被墙了），所以我们需要先下载源码再进行编译，而 Vyatta 默认并不包含编译所需的汇编工具，为此我们需要做一些准备工作，首先添加软件源。<br/><font style="background-color: #ffff00">#set system package repository debian url http://debian.osuosl.org/debian<br/>#set system package repository debian distribution stable<br/>#set system package repository debian components main<br/>#commit<br/>#sudo apt-get update</font></li> <li>安装汇编工具<br/><font style="background-color: #ffff00">#sudo apt-get install build-essential automake dpkg-dev dh-make fakeroot autoconf libtool</font></li> <li>下载、解压、编译 upnp<br/><font style="background-color: #ffff00">#sudo wget http://www.maytide.net/vyatta-upnp.zip<br/>#unzip vyatta-upnp.zip<br/>#dpkg-buildpackage</font><br/>注：解压后需要进入其子目录才能执行编译，之后回到上一级目录就 ls 到 deb 格式的安装包。此外，之前 gOxiA 强烈推荐大家使用 32Bit 的 Vyatta 版本也是因为 upnp，因为 gOxiA 早先使用 64Bit 测试时发现 upnp 无法编译。</li> <li>下载 additional packages<br/><font style="background-color: #ffff00">#sudo wget http://packages.vyatta.com/debian/pool/main/libu/libupnp4/libupnp4_1.8.0~svn20100507-1_i386.deb<br/>#sudo wget http://packages.vyatta.com/debian/pool/main/l/linux-igd/linux-igd_1.0+cvs20070630-3_i386.deb</font></li> <li>安装 deb 软件包<br/><font style="background-color: #ffff00">#sudo dpkg –i</font> …（后面名字省略不再叙述）</li> <li>待上面三个 deb 都完成安装后就可以配置 upnp，非常简单！<br/><font style="background-color: #ffff00">#set service upnp listen-on eth1 outbound-interface eth0<br/>#commit</font></li> <li>现在，就可以在 WS2012Ess 上配置随处访问，完毕后我们可以在环境中访问 WS2012Ess 的外网 IP 进行测试，当然也可执行下面的命令行查看状态。<br/><font style="background-color: #ffff00">$sudo iptables –nL –t nat</font></li> <li>除了 upnp，我们当然还会用到 DNAT，为此可参考下面的命令行。<br/><font style="background-color: #ffff00">#set nat destination rule 1<br/>#set nat destination rule 1 description “Pub TCP25”<br/>#set nat destination rule 1 protocol tcp<br/>#set nat destination rule 1 port smtp<br/>#set nat destination rule 1 inbound-interface eth0<br/>#set nat destination rule 1 translation address 192.168.11.252</font></li></ul> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;至此，配置工作就算完成了！一路下来也对 Vyatta 有了入门的认识吧，一些其他的功能，如防火墙、VPN，等等可以参考官方的文档，都是很容易理解的！</p><br/>Tags - <a href="https://maytide.net/go.php/tags/vyatta/" rel="tag">vyatta</a> , <a href="https://maytide.net/go.php/tags/upnp/" rel="tag">upnp</a> , <a href="https://maytide.net/go.php/tags/microsoft/" rel="tag">microsoft</a> , <a href="https://maytide.net/go.php/tags/windows/" rel="tag">windows</a> , <a href="https://maytide.net/go.php/tags/server/" rel="tag">server</a> , <a href="https://maytide.net/go.php/tags/2012/" rel="tag">2012</a> , <a href="https://maytide.net/go.php/tags/essentials/" rel="tag">essentials</a> , <a href="https://maytide.net/go.php/tags/router/" rel="tag">router</a> , <a href="https://maytide.net/go.php/tags/nat/" rel="tag">nat</a>
]]>
</description>
</item>
</channel>
</rss>