<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>榆树网 &#187; 榆树网-网络</title>
	<atom:link href="http://www.wenzk.com/archives/category/network/feed" rel="self" type="application/rss+xml" />
	<link>http://www.wenzk.com</link>
	<description>http://www.wenzk.com</description>
	<lastBuildDate>Sun, 29 Jan 2012 15:15:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Weathermap如何使用Zabbix作为数据源</title>
		<link>http://www.wenzk.com/archives/1499</link>
		<comments>http://www.wenzk.com/archives/1499#comments</comments>
		<pubDate>Fri, 13 Jan 2012 01:08:37 +0000</pubDate>
		<dc:creator>ELM</dc:creator>
				<category><![CDATA[榆树网-杂项]]></category>
		<category><![CDATA[榆树网-网络]]></category>
		<category><![CDATA[Cacti]]></category>
		<category><![CDATA[MRTG]]></category>
		<category><![CDATA[RRD]]></category>
		<category><![CDATA[RRDtools]]></category>
		<category><![CDATA[WeatherMap]]></category>
		<category><![CDATA[zabbix]]></category>

		<guid isPermaLink="false">http://www.wenzk.com/?p=1499</guid>
		<description><![CDATA[I&#8217;ve started playing around with it and after some tinkering, I have a working weathermap. This adds an excellent visualization tool to ZABBIX, especially for complex networks. A very quick HOWTO: 1) Install php-weathermap somewhere. 2) Read the fine manual 3) Create a weathermap of the hosts you want to monitor. 4) Configure WeatherMapDataSource_zabbix.php (and [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve started playing around with it and after some tinkering, I have a working weathermap. This adds an excellent visualization tool to ZABBIX, especially for complex networks.</p>
<p>A very quick HOWTO:<span id="more-1499"></span></p>
<p>1) Install php-weathermap somewhere.<br />
2) Read the fine manual<br />
3) Create a weathermap of the hosts you want to monitor.<br />
4) Configure WeatherMapDataSource_zabbix.php (and put it in the right place at weathermap/lib/datasources &#8211; not in the ZABBIX directory).<br />
5) To get the id&#8217;s of the Items to put in the map, I&#8217;ve named all my traffic Items “Traffic&#8230;” so I ran the following MySQL query:</p>
<p>SELECT * FROM items i where description LIKE &#8216;Traffic%&#8217;;</p>
<p>this gets me the itemid I need to put into the weathermap configuration file. Note that I got error messages around lines 44 and 45 of the php file because my root MySQL user has a password. I guess these are for debugging purposes. I&#8217;ve also hardcoded the host, username and password of the database at around line 52 and hardcoded the datbase name at line 54. The variables didn&#8217;t seem to work. Also note that the Items must be Integers or the script won&#8217;t work.</p>
<p>6) Create the weathermap using “php ./weathermap &#8211;config mymap.conf”<br />
7) Enjoy<br />
8) If you want your map to auto-update itself, create a cron job or a Windows Scheduled Task to run the command at step 6)</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
// Zabbix Pluggable datasource for PHP Weathermap 0.9
// - read a pair of values from a database, and return it
// Actually the plugin look only in history_uint table
// TARGET zabbix:in:out

class WeatherMapDataSource_zabbix extends WeatherMapDataSource {

        function Init(&amp;$map)
        {
                if(! function_exists(&quot;mysql_real_escape_string&quot;) ) return FALSE;
                if(! function_exists(&quot;mysql_connect&quot;) ) return FALSE;

                return(TRUE);
        }

        function Recognise($targetstring)
        {

         if(preg_match(&quot;/^zabbix:([\-a-zA-Z0-9_]+):([\-a-zA-Z0-9_]+)$/&quot;,$targetstring,$matches))

                {
                        return TRUE;
                }
                else
                {
                        return FALSE;
                }
        }

        function ReadData($targetstring, &amp;$map, &amp;$item)
        {
                $data[IN] = NULL;
                $data[OUT] = NULL;
                $data_time = 0;

                if(preg_match(&quot;/^zabbix:([\-a-zA-Z0-9_]+):([\-a-zA-Z0-9_]+)$/&quot;,$targetstring,$matches))
                {
                        $database_user = $map-&gt;get_hint('zabbix_dbuser');
                        $database_pass = $map-&gt;get_hint('zabbix_dbpass');
                        $database_name = $map-&gt;get_hint('zabbix_dbname');
                        $database_host = $map-&gt;get_hint('zabbix_dbhost');

                        $raw_in = mysql_real_escape_string($matches[1]);
                        $raw_out= mysql_real_escape_string($matches[2]);

                        debug (&quot;Found for IN Value :  $raw_in \n&quot;);
                        debug (&quot;Found for OUT Value :  $raw_out \n&quot;);

                        $SQL_IN = &quot;select value from history_uint where itemid=$raw_in order by clock desc limit 1&quot;;
                        $SQL_OUT = &quot;select value,clock from history_uint where itemid=$raw_out order by clock desc limit 1&quot;;
                        if(mysql_connect($database_host,$database_user,$database_pass))
                        {
                                if(mysql_select_db($database_name))
                                {
                                        $result_IN = mysql_query($SQL_IN);
                                        if (!$result_IN)
                                        {
                                            warn(&quot;Zabbix ReadData: Invalid query for IN Value: &quot; . mysql_error().&quot;\n&quot;);
                                        }
                                        else
                                        {
                                                $row_IN = mysql_fetch_assoc($result_IN);
                                                $data[IN] = $row_IN['value'];
                                        }
                                        $result_OUT = mysql_query($SQL_OUT);
                                        if (!$result_OUT)
                                        {
                                            warn(&quot;Zabbix ReadData: Invalid query for OUT Value: &quot; . mysql_error().&quot;\n&quot;);
                                        }
                                        else
                                        {
                                                $row_OUT = mysql_fetch_assoc($result_OUT);
                                                $data[OUT] = $row_OUT['value'];
                                                $data_time = $row_OUT['clock'];
                                        }

                                }

                                else
                                {
                                        warn(&quot;Zabbix ReadData: failed to select database ($database_name): &quot;.mysql_error().&quot;\n&quot;);
                                }
                        }
                        else
                        {
                                warn(&quot;Zabbix ReadData: failed to connect to database server: &quot;.mysql_error().&quot;\n&quot;);
                        }

                //      $data_time = now();
                }

                debug (&quot;RRD ReadData: Returning (&quot;.($data[IN]===NULL?'NULL':$data[IN]).&quot;,&quot;.($data[OUT]===NULL?'NULL':$data[IN]).&quot;,$data_time)\n&quot;);

                return( array($data[IN], $data[OUT], $data_time) );
        }
}
?&gt;</pre>
<p>转自: http://www.zabbix.com/forum/showthread.php?t=9873</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://www.wenzk.com/archives/880" title="Zabbix Agentd在Windows下如何获得网卡流量">Zabbix Agentd在Windows下如何获得网卡流量</a> (0)</li><li><a href="http://www.wenzk.com/archives/586" title="FreeBSD下运行Zabbix出现错误">FreeBSD下运行Zabbix出现错误</a> (0)</li><li><a href="http://www.wenzk.com/archives/494" title="Zabbix在FreeBSD启动错误">Zabbix在FreeBSD启动错误</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.wenzk.com/archives/1499/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux PPPoE拨号频繁掉线问题</title>
		<link>http://www.wenzk.com/archives/1481</link>
		<comments>http://www.wenzk.com/archives/1481#comments</comments>
		<pubDate>Sun, 27 Nov 2011 02:06:41 +0000</pubDate>
		<dc:creator>ELM</dc:creator>
				<category><![CDATA[榆树网-系统]]></category>
		<category><![CDATA[榆树网-网络]]></category>
		<category><![CDATA[ADSL]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PPPoE]]></category>
		<category><![CDATA[拨号]]></category>
		<category><![CDATA[掉线]]></category>
		<category><![CDATA[终端]]></category>

		<guid isPermaLink="false">http://www.wenzk.com/?p=1481</guid>
		<description><![CDATA[家里的网络是通过小区宽带接入的，通过PPPoE进行认证，最近发现总是掉线，几小时掉线一次，频繁的时候一小时几次。由于特殊需求，需要通过VPN上网，所以掉线对网络体验影响是很大的，通过查看日志，掉线时的日志是： No response to 3 echo-requests Serial link appears to be disconnected. 既然是3个echo-requests没有响应就重新连接了，那说明是Linux主动发起的重连请求，网络未必不可用，查看PPPoE的配置： 默认配置是，没10秒检测一次，如果连续3次失败则认为网络不可用，重新连接。 可否通过调整这两个参数来减少掉线次数呢？ 将配置改成： 修改后，一天已经没有掉线了，如果你也遇到类似的问题，修改这里两个参数试试。 相关文章单网卡多次PPPoE拨号问题 (0)Linux下如何使用tar进行整系统备份["Ghost"] (0)如何为逻辑卷创建镜像 (0)LVM在线更换物理硬盘 (0)让CentOS6提供基于OpenVZ的虚拟化服务 (0)]]></description>
			<content:encoded><![CDATA[<p>家里的网络是通过小区宽带接入的，通过PPPoE进行认证，最近发现总是掉线，几小时掉线一次，频繁的时候一小时几次。由于特殊需求，需要通过VPN上网，所以掉线对网络体验影响是很大的，通过查看日志，掉线时的日志是：</p>
<p>No response to 3 echo-requests<br />
Serial link appears to be disconnected.</p>
<p>既然是3个echo-requests没有响应就重新连接了，那说明是Linux主动发起的重连请求，网络未必不可用，查看PPPoE的配置：</p>
<pre class="brush: plain; title: ; notranslate">LCP_FAILURE=3
LCP_INTERVAL=10</pre>
<p>默认配置是，没10秒检测一次，如果连续3次失败则认为网络不可用，重新连接。<br />
可否通过调整这两个参数来减少掉线次数呢？<br />
将配置改成：</p>
<pre class="brush: plain; title: ; notranslate">LCP_FAILURE=10
LCP_INTERVAL=30</pre>
<p>修改后，一天已经没有掉线了，如果你也遇到类似的问题，修改这里两个参数试试。</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://www.wenzk.com/archives/935" title="单网卡多次PPPoE拨号问题">单网卡多次PPPoE拨号问题</a> (0)</li><li><a href="http://www.wenzk.com/archives/1469" title="Linux下如何使用tar进行整系统备份["Ghost"]">Linux下如何使用tar进行整系统备份["Ghost"]</a> (0)</li><li><a href="http://www.wenzk.com/archives/1464" title="如何为逻辑卷创建镜像">如何为逻辑卷创建镜像</a> (0)</li><li><a href="http://www.wenzk.com/archives/1461" title="LVM在线更换物理硬盘">LVM在线更换物理硬盘</a> (0)</li><li><a href="http://www.wenzk.com/archives/1429" title="让CentOS6提供基于OpenVZ的虚拟化服务">让CentOS6提供基于OpenVZ的虚拟化服务</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.wenzk.com/archives/1481/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>为什么不能用Outlook、Foxmail收取Zimbra的邮件</title>
		<link>http://www.wenzk.com/archives/1477</link>
		<comments>http://www.wenzk.com/archives/1477#comments</comments>
		<pubDate>Sat, 26 Nov 2011 05:16:09 +0000</pubDate>
		<dc:creator>ELM</dc:creator>
				<category><![CDATA[榆树网-系统]]></category>
		<category><![CDATA[榆树网-网络]]></category>
		<category><![CDATA[Foxmail]]></category>
		<category><![CDATA[OutLook]]></category>
		<category><![CDATA[POP3]]></category>
		<category><![CDATA[SMTP]]></category>
		<category><![CDATA[Zimbra]]></category>

		<guid isPermaLink="false">http://www.wenzk.com/?p=1477</guid>
		<description><![CDATA[用OutLook连接提示错误： -ERR only valid after entering TLS mode 原因：Zimbra默认不允许在使用非加密传输时进行身份认证，需要关闭相关安全设置。 在Zimbra上切换至zimbra用户，执行如下命令： 重新启动Zimbra服务后试试OutLook是否可以接收邮件了 相关文章OutLook如何使用Zimbra LDAP提供的地址簿 (0)Zimbra-proxy配置步骤 (0)解决Zimbra收取POP3邮件问题 (4)将 Zimbra Desktop 设为默认电子邮件程序 (0)zmmailbox导入邮件提示：Code:zclient.UPLOAD_SIZE_LIMIT_EXCEEDED (0)]]></description>
			<content:encoded><![CDATA[<p>用OutLook连接提示错误：</p>
<p>-ERR only valid after entering TLS mode</p>
<p>原因：Zimbra默认不允许在使用非加密传输时进行身份认证，需要关闭相关安全设置。</p>
<p><span id="more-1477"></span>在Zimbra上切换至zimbra用户，执行如下命令：</p>
<pre class="brush: plain; title: ; notranslate">zmprov ms `zmhostname` zimbraImapCleartextLoginEnabled TRUE
zmprov ms `zmhostname` zimbraPop3CleartextLoginEnabled TRUE
zmprov ms `zmhostname` zimbraMtaTlsAuthOnly FALSE</pre>
<p>重新启动Zimbra服务后试试OutLook是否可以接收邮件了</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://www.wenzk.com/archives/1407" title="OutLook如何使用Zimbra LDAP提供的地址簿">OutLook如何使用Zimbra LDAP提供的地址簿</a> (0)</li><li><a href="http://www.wenzk.com/archives/1388" title="Zimbra-proxy配置步骤">Zimbra-proxy配置步骤</a> (0)</li><li><a href="http://www.wenzk.com/archives/1380" title="解决Zimbra收取POP3邮件问题">解决Zimbra收取POP3邮件问题</a> (4)</li><li><a href="http://www.wenzk.com/archives/1509" title="将 Zimbra Desktop 设为默认电子邮件程序">将 Zimbra Desktop 设为默认电子邮件程序</a> (0)</li><li><a href="http://www.wenzk.com/archives/1501" title="zmmailbox导入邮件提示：Code:zclient.UPLOAD_SIZE_LIMIT_EXCEEDED">zmmailbox导入邮件提示：Code:zclient.UPLOAD_SIZE_LIMIT_EXCEEDED</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.wenzk.com/archives/1477/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zimbra-proxy配置步骤</title>
		<link>http://www.wenzk.com/archives/1388</link>
		<comments>http://www.wenzk.com/archives/1388#comments</comments>
		<pubDate>Sun, 18 Sep 2011 04:49:22 +0000</pubDate>
		<dc:creator>ELM</dc:creator>
				<category><![CDATA[榆树网-系统]]></category>
		<category><![CDATA[榆树网-网络]]></category>
		<category><![CDATA[IMAP]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[POP3]]></category>
		<category><![CDATA[ZCS]]></category>
		<category><![CDATA[Zimbra]]></category>

		<guid isPermaLink="false">http://www.wenzk.com/?p=1388</guid>
		<description><![CDATA[昨天开始测试ZCS多Mailbox服务器时的部署，下面对部署过程中的一些体会记录下来： 1、安装第二台Mailbox时可以不创建管理员帐号，通过原来的管理员在帐号访问任何一台Mailbox服务器都可以看到其他服务器状态，创建用户系统自动分配Mailbox，估计根据用户数情况，尽量平衡一些。 2、对于HTTP访问，可以访问任何一台Mailbox服务器，待验证通过后将重新定向到真实的Mailbox服务器中（即：用户数据所在的Mailbox服务器）。 3、对于POP/IMAP服务，由于不支持定向，所以验证通过后，会提示：-ERR operation sent to wrong host (you want &#8216;zimbra-mailbox-02.xxx.cn&#8217;)，还得手工修改POP/IMAP的服务器地址，于是需要使用Zimbra-Proxy来协助了。 安装Zimbra-Proxy可以参考官方的多服务器安装手册，理论上应该一切顺利。 配置Zimbra-Proxy，官方多服务器安装文档提供了一堆端口号，在管理员手册中有写明将哪些变量设置成什么值，但是也没有提供相应的配置方法，按照手册提供的zmproxyconfig命令也没配置成功，经过N多Google最终摸索一个方法（对于非新手，看管理员手册就知道怎么做了）。 开启POP/IMAP代理： 1、以下操作在所有Mailbox服务器上以zimbra用户执行： 2、以下操作在Proxy服务器上操作，且以zimbra用户执行 开启HTTP代理： 1、以下操作以zimbra用户身份在所有Mailbox服务器上执行 2、以下操作以zimbra身份在Proxy服务器上执行： 在任何一台对LDAP有些权限的机器上以zimbra用户身份执行如下命令： 注：10.10.5.4为zimbra-proxy的IP地址，如果有多台，需要将所有机器的IP地址增加到TrustedIP中。关于Web部分，还有设置PublicDomain等设置，参见手册。 默认Proxy是不支持POP3/IMAP代理的，只支持加密传输的POP3s/IMAPs服务，使用pop3连接系统提示：-ERR invalid command，通过设置：zimbraReverseProxyPop3StartTlsMode 和 zimbraReverseProxyPop3StartTlsMode 来搞定。 Zimbra考虑挺全面的，在端口设置上，充分考虑了Proxy和Mailbox在同一机器上的情况，所以统一修改Mailbox相关服务的端口为7xxx、8xxx。 Zimbra大部分配置不建议直接修改配置文件，每次启动时系统会读取LADP上的配置，重新生成新的配置文件。 启用HTTP代理后，管理控制台依旧通过访问真实的Mailbox来获得。 相关文章为什么不能用Outlook、Foxmail收取Zimbra的邮件 (0)Zimbra管理员总是能收到MySQL检查出错的邮件 (0)Moving ZCS to Another Server (0)解决Zimbra收取POP3邮件问题 (4)将 Zimbra Desktop 设为默认电子邮件程序 (0)]]></description>
			<content:encoded><![CDATA[<p>昨天开始测试ZCS多Mailbox服务器时的部署，下面对部署过程中的一些体会记录下来：</p>
<p>1、安装第二台Mailbox时可以不创建管理员帐号，通过原来的管理员在帐号访问任何一台Mailbox服务器都可以看到其他服务器状态，创建用户系统自动分配Mailbox，估计根据用户数情况，尽量平衡一些。</p>
<p>2、对于HTTP访问，可以访问任何一台Mailbox服务器，待验证通过后将重新定向到真实的Mailbox服务器中（即：用户数据所在的Mailbox服务器）。</p>
<p>3、对于POP/IMAP服务，由于不支持定向，所以验证通过后，会提示：-ERR operation sent to wrong host (you want &#8216;zimbra-mailbox-02.xxx.cn&#8217;)，还得手工修改POP/IMAP的服务器地址，于是需要使用Zimbra-Proxy来协助了。</p>
<p><span id="more-1388"></span>安装Zimbra-Proxy可以参考官方的多服务器安装手册，理论上应该一切顺利。</p>
<p>配置Zimbra-Proxy，官方多服务器安装文档提供了一堆端口号，在管理员手册中有写明将哪些变量设置成什么值，但是也没有提供相应的配置方法，按照手册提供的zmproxyconfig命令也没配置成功，经过N多Google最终摸索一个方法（对于非新手，看管理员手册就知道怎么做了）。</p>
<p>开启POP/IMAP代理：</p>
<p>1、以下操作在所有Mailbox服务器上以zimbra用户执行：</p>
<pre class="brush: plain; title: ; notranslate">zmprov ms `zmhostname` zimbraImapBindPort 7143 zimbraImapProxyBindPort 143
zmprov ms `zmhostname` zimbraImapSSLBindPort 7993 zimbraImapSSLProxyBindPort 993
zmprov ms `zmhostname` zimbraPop3BindPort 7110 zimbraPop3ProxyBindPort 110
zmprov ms `zmhostname` zimbraPop3SSLBindPort 7995 zimbraPop3SSLProxyBindPort 995
zmprov ms `zmhostname` zimbraImapCleartextLoginEnabled TRUE
zmprov ms `zmhostname` zimbraReverseProxyLookupTarget TRUE
zmprov ms `zmhostname` zimbraPop3CleartextLoginEnabled TRUE
zmcontrol restart</pre>
<p>2、以下操作在Proxy服务器上操作，且以zimbra用户执行</p>
<pre class="brush: plain; title: ; notranslate">zmprov ms `zmhostname` zimbraImapBindPort 7143 zimbraImapProxyBindPort 143
zmprov ms `zmhostname` zimbraImapSSLBindPort 7993 zimbraImapSSLProxyBindPort 993
zmprov ms `zmhostname` zimbraPop3BindPort 7110 zimbraPop3ProxyBindPort 110
zmprov ms `zmhostname` zimbraPop3SSLBindPort 7995 zimbraPop3SSLProxyBindPort 995
zmprov ms `zmhostname` zimbraReverseProxyMailEnabled TRUE
zmprov ms `zmhostname` zimbraReverseProxyPop3StartTlsMode on
zmprov ms `zmhostname` zimbraReverseProxyImapStartTlsMode on
zmcontrol restart</pre>
<p>开启HTTP代理：</p>
<p>1、以下操作以zimbra用户身份在所有Mailbox服务器上执行</p>
<pre class="brush: plain; title: ; notranslate">zmprov ms `zmhostname` zimbraMailPort 8080 zimbraMailProxyPort 80 zimbraMailSSLPort 8443 zimbraMailSSLProxyPort 443
zmprov ms `zmhostname` zimbraReverseProxyLookupTarget TRUE
zmprov ms `zmhostname` zimbraMailMode http
zmprov ms `zmhostname` zimbraMailReferMode reverse-proxied
zmcontrol restart</pre>
<p>2、以下操作以zimbra身份在Proxy服务器上执行：</p>
<pre class="brush: plain; title: ; notranslate">zmprov ms `zmhostname` zimbraMailPort 8080 zimbraMailProxyPort 80 zimbraMailSSLPort 8443 zimbraMailSSLProxyPort 443
zmprov ms `zmhostname` zimbraReverseProxyHttpEnabled TRUE
zmprov ms `zmhostname` zimbraMailMode http
zmprov ms `zmhostname` zimbraMailReferMode reverse-proxied
zmcontrol restart</pre>
<p>在任何一台对LDAP有些权限的机器上以zimbra用户身份执行如下命令：</p>
<pre class="brush: plain; title: ; notranslate">zmprov mcf +zimbraMailTrustedIP 10.10.5.4</pre>
<p>注：10.10.5.4为zimbra-proxy的IP地址，如果有多台，需要将所有机器的IP地址增加到TrustedIP中。关于Web部分，还有设置PublicDomain等设置，参见手册。</p>
<p>默认Proxy是不支持POP3/IMAP代理的，只支持加密传输的POP3s/IMAPs服务，使用pop3连接系统提示：-ERR invalid command，通过设置：zimbraReverseProxyPop3StartTlsMode 和 zimbraReverseProxyPop3StartTlsMode 来搞定。</p>
<p>Zimbra考虑挺全面的，在端口设置上，充分考虑了Proxy和Mailbox在同一机器上的情况，所以统一修改Mailbox相关服务的端口为7xxx、8xxx。</p>
<p>Zimbra大部分配置不建议直接修改配置文件，每次启动时系统会读取LADP上的配置，重新生成新的配置文件。</p>
<p>启用HTTP代理后，管理控制台依旧通过访问真实的Mailbox来获得。</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://www.wenzk.com/archives/1477" title="为什么不能用Outlook、Foxmail收取Zimbra的邮件">为什么不能用Outlook、Foxmail收取Zimbra的邮件</a> (0)</li><li><a href="http://www.wenzk.com/archives/1447" title="Zimbra管理员总是能收到MySQL检查出错的邮件">Zimbra管理员总是能收到MySQL检查出错的邮件</a> (0)</li><li><a href="http://www.wenzk.com/archives/1424" title="Moving ZCS to Another Server">Moving ZCS to Another Server</a> (0)</li><li><a href="http://www.wenzk.com/archives/1380" title="解决Zimbra收取POP3邮件问题">解决Zimbra收取POP3邮件问题</a> (4)</li><li><a href="http://www.wenzk.com/archives/1509" title="将 Zimbra Desktop 设为默认电子邮件程序">将 Zimbra Desktop 设为默认电子邮件程序</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.wenzk.com/archives/1388/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenVPN:内网无端口映射建立VPN问题</title>
		<link>http://www.wenzk.com/archives/1372</link>
		<comments>http://www.wenzk.com/archives/1372#comments</comments>
		<pubDate>Sun, 11 Sep 2011 14:20:54 +0000</pubDate>
		<dc:creator>ELM</dc:creator>
				<category><![CDATA[榆树网-系统]]></category>
		<category><![CDATA[榆树网-网络]]></category>
		<category><![CDATA[热门]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[NAT]]></category>
		<category><![CDATA[OpenVPN]]></category>
		<category><![CDATA[Port MAP]]></category>
		<category><![CDATA[端口映射]]></category>

		<guid isPermaLink="false">http://www.wenzk.com/?p=1372</guid>
		<description><![CDATA[本文介绍的操作均在CentOS 6.0下完成，关于CentOS下如何安装OpenVPN，参考：CentOS6下如何快速安装OpenVPN，本文介绍OpenVPN使用静态密钥建立VPN的方法，关于使用Mode server方式建立OpenVPN，参考本人以前写的文章：   OpenVPN在Linux下的安装[CA] 、OpenVPN使用User/Pass验证登录、OpenVPN在Windows下使用User/Pass验证、Windows 下使用 CA 验证的 OpenVPN Server 的配置方法。大家慢慢参考。 相信大家都知道，OpenVPN是很灵活的一个OpenVPN程序，可以在各种网络环境下工作，如：NAT、代理等，甚至可以使用OpenVPN over SSH tunnel来建立VPN连接，但是，目前互联网上介绍的大部分文章重点都在介绍，如果搭建VPN服务，如果OpenVPN服务器在防火墙（或NAT）的后面，都必须通过端口映射来实现VPN连接的建立，如果VPN的双方都在NAT后面，那必须通过第三方的一台VPN server建立连接，那是否有例外呢？请继续往下看。 我们知道，公司（企业）的防火墙都是掌握在公司网管手中的，如果要网管帮你做个端口映射，有可能比登天还难（除非网管是你哥们），如果网管不帮你做端口映射，是否就无法建立VPN连接呢，请大家移步至：单IP做NAT支持的最大连接数问题，仔细观察文中提到的2个例子，从例子中不难看出，Linux（其他的路由器是否这样，有待验证）在做NAT的时候，尽量保证源端口（不要用1024以下的端口）不变，利用NAT的这个特性和UDP没有建立连接过程这个特性，就可以实现NAT后面两台机器无需端口映射建立VPN连接。 本文首发：榆树网 http://www.wenzk.com/ 作者： 温占考 wzk AT wenzk DOT net 转载请注明出处，谢谢 ======================================= 环境： A服务器： 内网IP：192.168.0.1 公网IP：202.96.1.1 VPN IP：192.168.254.1 B服务器： 内网IP：192.168.1.1 公网IP：202.97.1.1 VPN IP：192.168.254.2 ====================================== 1、生成共享密钥，在A或B机器均可，生成后两台机器使用同一个密钥。 2、生成A机器配置文件，文件/etc/openvpn/test.conf文件内容为： 3、生成B机器配置文件，文件/etc/openvpn/test.conf文件内容为： 4、分别在A、B机器启动OpenVPN服务 5、测试OpenVPN连接，通过ifconfig检查tun设备是否启动，ping VPN对端地址是否可达。 注意： 1、如果公司公网地址为动态地址，可以通过动态域名，只需将配置文件中的对方服务器IP地址换成域名即可。 2、A、B所使用的本地端口最好完全一致，否则必须保证A机器配置的lport与B机器配置的remote后面的端口一致，及B机器配置的lport与A机器配置的remote后面的端口一致。 3、如果公司的NAT修改源IP的同时也修改源端口，此方法可能不work了。 4、欢迎反馈可行的路由器型号，Linux iptables本人已验证。 相关文章让VPS支持Tun/Tap？ (0)CentOS6下如何快速安装OpenVPN [...]]]></description>
			<content:encoded><![CDATA[<p>本文介绍的操作均在CentOS 6.0下完成，关于CentOS下如何安装OpenVPN，参考：<a href="http://www.wenzk.com/archives/1367" target="_blank">CentOS6下如何快速安装OpenVPN</a>，本文介绍OpenVPN使用静态密钥建立VPN的方法，关于使用Mode server方式建立OpenVPN，参考本人以前写的文章：<label>  </label> <a href="http://www.wenzk.net/bbs/thread-5-1-1.html" target="_blank">OpenVPN在Linux下的安装[CA]</a> 、<a href="http://www.wenzk.net/bbs/thread-6-1-1.html" target="_blank">OpenVPN使用User/Pass验证登录</a>、<a href="http://www.wenzk.net/bbs/thread-11-1-1.html" target="_blank">OpenVPN在Windows下使用User/Pass验证</a>、<a href="http://www.wenzk.net/bbs/thread-7-1-1.html" target="_blank">Windows 下使用 CA 验证的 OpenVPN Server 的配置方法</a>。大家慢慢参考。</p>
<p><span id="more-1372"></span>相信大家都知道，OpenVPN是很灵活的一个OpenVPN程序，可以在各种网络环境下工作，如：NAT、代理等，甚至可以使用OpenVPN over SSH tunnel来建立VPN连接，但是，目前互联网上介绍的大部分文章重点都在介绍，如果搭建VPN服务，如果OpenVPN服务器在防火墙（或NAT）的后面，都必须通过端口映射来实现VPN连接的建立，如果VPN的双方都在NAT后面，那必须通过第三方的一台VPN server建立连接，那是否有例外呢？请继续往下看。</p>
<p>我们知道，公司（企业）的防火墙都是掌握在公司网管手中的，如果要网管帮你做个端口映射，有可能比登天还难（除非网管是你哥们），如果网管不帮你做端口映射，是否就无法建立VPN连接呢，请大家移步至：<a href="http://www.wenzk.com/archives/1356" target="_blank">单IP做NAT支持的最大连接数问题</a>，仔细观察文中提到的2个例子，从例子中不难看出，Linux（其他的路由器是否这样，有待验证）在做NAT的时候，尽量保证源端口（不要用1024以下的端口）不变，利用NAT的这个特性和UDP没有建立连接过程这个特性，就可以实现NAT后面两台机器无需端口映射建立VPN连接。</p>
<p>本文首发：<a href="http://www.wenzk.com/" target="_blank">榆树网</a> <a href="http://www.wenzk.com/" target="_blank">http://www.wenzk.com/</a><br />
作者： 温占考 wzk AT wenzk DOT net<br />
转载请注明出处，谢谢<br />
=======================================<br />
环境：</p>
<p>A服务器：<br />
内网IP：192.168.0.1<br />
公网IP：202.96.1.1<br />
VPN IP：192.168.254.1</p>
<p>B服务器：<br />
内网IP：192.168.1.1<br />
公网IP：202.97.1.1<br />
VPN IP：192.168.254.2<br />
======================================</p>
<p>1、生成共享密钥，在A或B机器均可，生成后两台机器使用同一个密钥。</p>
<pre class="brush: plain; title: ; notranslate">openvpn --genkey --secret secret.key</pre>
<p>2、生成A机器配置文件，文件/etc/openvpn/test.conf文件内容为：</p>
<pre class="brush: plain; title: ; notranslate">dev tun
proto udp
lport 1194
remote 202.97.1.1 1194
ifconfig 192.168.254.1 192.168.254.2
keepalive 10 60
ping-timer-rem
persist-key
persist-tun
secret secret.key
comp-lzo
verb 3
</pre>
<p>3、生成B机器配置文件，文件/etc/openvpn/test.conf文件内容为：</p>
<pre class="brush: plain; title: ; notranslate">dev tun
proto udp
lport 1194
remote 202.96.1.1 1194
ifconfig 192.168.254.2 192.168.254.1
keepalive 10 60
ping-timer-rem
persist-key
persist-tun
secret secret.key
comp-lzo
verb 3
</pre>
<p>4、分别在A、B机器启动OpenVPN服务</p>
<pre class="brush: plain; title: ; notranslate">/etc/init.d/openvpn start</pre>
<p>5、测试OpenVPN连接，通过ifconfig检查tun设备是否启动，ping VPN对端地址是否可达。</p>
<p>注意：<br />
1、如果公司公网地址为动态地址，可以通过动态域名，只需将配置文件中的对方服务器IP地址换成域名即可。<br />
2、A、B所使用的本地端口最好完全一致，否则必须保证A机器配置的lport与B机器配置的remote后面的端口一致，及B机器配置的lport与A机器配置的remote后面的端口一致。<br />
3、如果公司的NAT修改源IP的同时也修改源端口，此方法可能不work了。<br />
4、欢迎反馈可行的路由器型号，Linux iptables本人已验证。</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://www.wenzk.com/archives/1434" title="让VPS支持Tun/Tap？">让VPS支持Tun/Tap？</a> (0)</li><li><a href="http://www.wenzk.com/archives/1367" title="CentOS6下如何快速安装OpenVPN">CentOS6下如何快速安装OpenVPN</a> (0)</li><li><a href="http://www.wenzk.com/archives/1362" title="Linux NAT之LOG问题">Linux NAT之LOG问题</a> (0)</li><li><a href="http://www.wenzk.com/archives/1356" title="单IP做NAT支持的最大连接数问题">单IP做NAT支持的最大连接数问题</a> (0)</li><li><a href="http://www.wenzk.com/archives/1320" title="用iptables做NAT地址池问题">用iptables做NAT地址池问题</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.wenzk.com/archives/1372/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CentOS下建立IPv6 over IPv4隧道</title>
		<link>http://www.wenzk.com/archives/1364</link>
		<comments>http://www.wenzk.com/archives/1364#comments</comments>
		<pubDate>Fri, 09 Sep 2011 14:20:43 +0000</pubDate>
		<dc:creator>ELM</dc:creator>
				<category><![CDATA[榆树网-系统]]></category>
		<category><![CDATA[榆树网-网络]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[IPv4]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.wenzk.com/?p=1364</guid>
		<description><![CDATA[免费的IPv6隧道可以在he.net上申请，具体可以Google一下。 CentOS下如何设置IPv6 over IPv4隧道呢，系统提供了相应的启动脚本，只需修改相应的配置文件即可。 打开系统的IPv6功能，修改/etc/sysconfig/network文件，增加： 增加隧道及相关配置文件，在Linux系统中，IPv6 over IPv4接口叫sit，通过ifconfig可以看到，系统默认使用了sit0，因此我们这里使用sit1，配置文件存放在/etc/sysconfig/network-scripts/ifcfg-sit1,文件不存在，创建即可，内容如下： 修改/etc/sysconfig/iptables文件，在相应的位置增加： 最好放在“-A INPUT -i lo -j ACCEPT”的后面。 重新启动系统就可以测试IPv6了。（或重新启动network、iptables即可）。 相关文章RedHat / Centos Disable IPv6 Networking (0)Linux PPPoE拨号频繁掉线问题 (0)Linux下如何使用tar进行整系统备份["Ghost"] (0)如何为逻辑卷创建镜像 (0)LVM在线更换物理硬盘 (0)]]></description>
			<content:encoded><![CDATA[<p>免费的IPv6隧道可以在he.net上申请，具体可以Google一下。</p>
<p>CentOS下如何设置IPv6 over IPv4隧道呢，系统提供了相应的启动脚本，只需修改相应的配置文件即可。</p>
<p>打开系统的IPv6功能，修改/etc/sysconfig/network文件，增加：</p>
<p><span id="more-1364"></span>
<pre class="brush: plain; title: ; notranslate">NETWORKING_IPV6=yes</pre>
<p>增加隧道及相关配置文件，在Linux系统中，IPv6 over IPv4接口叫sit，通过ifconfig可以看到，系统默认使用了sit0，因此我们这里使用sit1，配置文件存放在/etc/sysconfig/network-scripts/ifcfg-sit1,文件不存在，创建即可，内容如下：</p>
<pre class="brush: plain; title: ; notranslate">DEVICE=sit1
BOOTPROTO=none
ONBOOT=yes
IPV6INIT=yes
IPV6TUNNELIPV4=x.x.x.x #隧道对端的IPv4地址
IPV6TUNNELIPV4LOCAL=y.y.y.y #本地的IPv4地址
IPV6ADDR=2::2/64 #隧道本地的IPv6地址
IPV6_DEFAULTGW=2::1 #默认路由地址，其实就是隧道对端的地址
</pre>
<p>修改/etc/sysconfig/iptables文件，在相应的位置增加：</p>
<pre class="brush: plain; title: ; notranslate">-A INPUT -p ipv6 -s x.x.x.x -j ACCEPT</pre>
<p>最好放在“-A INPUT -i lo -j ACCEPT”的后面。</p>
<p>重新启动系统就可以测试IPv6了。（或重新启动network、iptables即可）。</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://www.wenzk.com/archives/1023" title="RedHat / Centos Disable IPv6 Networking">RedHat / Centos Disable IPv6 Networking</a> (0)</li><li><a href="http://www.wenzk.com/archives/1481" title="Linux PPPoE拨号频繁掉线问题">Linux PPPoE拨号频繁掉线问题</a> (0)</li><li><a href="http://www.wenzk.com/archives/1469" title="Linux下如何使用tar进行整系统备份["Ghost"]">Linux下如何使用tar进行整系统备份["Ghost"]</a> (0)</li><li><a href="http://www.wenzk.com/archives/1464" title="如何为逻辑卷创建镜像">如何为逻辑卷创建镜像</a> (0)</li><li><a href="http://www.wenzk.com/archives/1461" title="LVM在线更换物理硬盘">LVM在线更换物理硬盘</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.wenzk.com/archives/1364/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux NAT之LOG问题</title>
		<link>http://www.wenzk.com/archives/1362</link>
		<comments>http://www.wenzk.com/archives/1362#comments</comments>
		<pubDate>Thu, 08 Sep 2011 12:19:21 +0000</pubDate>
		<dc:creator>ELM</dc:creator>
				<category><![CDATA[榆树网-系统]]></category>
		<category><![CDATA[榆树网-网络]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[LOG]]></category>
		<category><![CDATA[NAT]]></category>

		<guid isPermaLink="false">http://www.wenzk.com/?p=1362</guid>
		<description><![CDATA[NAT在现实生活中解决了不少问题，随之而来的事件追踪也是一件麻烦事，由于NAT修改数据包的源地址（或端口），因此，只能通过记录NAT前后的IP地址来解决。 在使用Linux来实现NAT时，iptables有LOG模块，但是该模块并不能很好的把NAT前后的IP地址对应关系对应起来，如果使用LOG模块，只能记录NAT前的源地址及目的地址对。 conntrack-tools是Linux下不同主机之间同步conntrack表的一个用户空间运行的程序，可以实现有状态防火墙之间的状态同步，实现防火墙的HA。通过conntrack-tools及syslog可以实现NAT的log功能。 1、安装conntrack-tools工具（该方法暂时只支持RHEL5、CentOS5） /etc/yum.repo.d目录增加CentALT.repo，内容如下： 运行如下命令： 2、新增/usr/local/bin/conn-to-syslog,其内容为： 为程序增加执行权限： 3、修改/etc/syslog.conf文件： 注意配置文件中的facility盈余conn-to-syslog一致，这里使用的是local3，完毕后重启syslogd服务。 5、启动conntrack程序： 本例将状态为ESTABLISHED的TCP连接记录到日志中，大家可以根据man conntrack来调整相应的参数，可以实现TCP、UDP都记录，记录与/proc/net/ip_conntrack内容格式一致。 相关文章单IP做NAT支持的最大连接数问题 (0)用iptables做NAT地址池问题 (0)Netfilter Connmark (0)OpenVZ的VPS里不支持nat表？ (0)OpenVPN:内网无端口映射建立VPN问题 (1)]]></description>
			<content:encoded><![CDATA[<p>NAT在现实生活中解决了不少问题，随之而来的事件追踪也是一件麻烦事，由于NAT修改数据包的源地址（或端口），因此，只能通过记录NAT前后的IP地址来解决。</p>
<p><span id="more-1362"></span>在使用Linux来实现NAT时，iptables有LOG模块，但是该模块并不能很好的把NAT前后的IP地址对应关系对应起来，如果使用LOG模块，只能记录NAT前的源地址及目的地址对。</p>
<p>conntrack-tools是Linux下不同主机之间同步conntrack表的一个用户空间运行的程序，可以实现有状态防火墙之间的状态同步，实现防火墙的HA。通过conntrack-tools及syslog可以实现NAT的log功能。</p>
<p>1、安装conntrack-tools工具（该方法暂时只支持RHEL5、CentOS5）</p>
<p>/etc/yum.repo.d目录增加CentALT.repo，内容如下：</p>
<pre class="brush: plain; title: ; notranslate">[CentALT]
name=CentALT Packages for Enterprise Linux 5 - $basearch
baseurl=http://centos.alt.ru/repository/centos/5/$basearch/
enabled=1
gpgcheck=0</pre>
<p>运行如下命令：</p>
<pre class="brush: plain; title: ; notranslate">yum install conntrack-tools</pre>
<p>2、新增/usr/local/bin/conn-to-syslog,其内容为：</p>
<pre class="brush: perl; title: ; notranslate">#!/usr/bin/perl -w
# Usage: conntrack -E -p tcp --state ESTABLISHED -j | conn-to-syslog

#by wzk@neu 2011

use Sys::Syslog;

$log_ident=&quot;NAT&quot;;
$log_opt=&quot;pid,cons&quot;;
$log_facility=&quot;local3&quot;;

openlog $log_ident, $log_opt, $log_facility;

while (&lt;STDIN&gt;) {

syslog ('notice', &quot;%s&quot;, $_);

#syslog ('err', &quot;Test Error Log Entry: %s&quot;, $_);
#syslog ('debug', &quot;Test Debug Log Entry: %s&quot;, $_);
}

closelog();
</pre>
<p>为程序增加执行权限：</p>
<pre class="brush: plain; title: ; notranslate">chmod +x /usr/local/bin/conn-to-syslog</pre>
<p>3、修改/etc/syslog.conf文件：</p>
<pre class="brush: plain; title: ; notranslate"># Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*                                                 /dev/console

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none;local3.none            /var/log/messages

# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure

# Log all the mail messages in one place.
mail.*                                                  -/var/log/maillog

# Log cron stuff
cron.*                                                  /var/log/cron

# Everybody gets emergency messages
*.emerg                                                 *

# Save news errors of level crit and higher in a special file.
uucp,news.crit                                          /var/log/spooler

# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log

local3.*                                                -/var/log/nat.log
</pre>
<p>注意配置文件中的facility盈余conn-to-syslog一致，这里使用的是local3，完毕后重启syslogd服务。</p>
<p>5、启动conntrack程序：</p>
<pre class="brush: plain; title: ; notranslate">/usr/sbin/conntrack -b 1048576 -E -p tcp --state ESTABLISHED -j | /usr/local/bin/conn-to-syslog</pre>
<p>本例将状态为ESTABLISHED的TCP连接记录到日志中，大家可以根据man conntrack来调整相应的参数，可以实现TCP、UDP都记录，记录与/proc/net/ip_conntrack内容格式一致。</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://www.wenzk.com/archives/1356" title="单IP做NAT支持的最大连接数问题">单IP做NAT支持的最大连接数问题</a> (0)</li><li><a href="http://www.wenzk.com/archives/1320" title="用iptables做NAT地址池问题">用iptables做NAT地址池问题</a> (0)</li><li><a href="http://www.wenzk.com/archives/942" title="Netfilter Connmark">Netfilter Connmark</a> (0)</li><li><a href="http://www.wenzk.com/archives/1431" title="OpenVZ的VPS里不支持nat表？">OpenVZ的VPS里不支持nat表？</a> (0)</li><li><a href="http://www.wenzk.com/archives/1372" title="OpenVPN:内网无端口映射建立VPN问题">OpenVPN:内网无端口映射建立VPN问题</a> (1)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.wenzk.com/archives/1362/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>通过CURL获得平均下载输率</title>
		<link>http://www.wenzk.com/archives/1360</link>
		<comments>http://www.wenzk.com/archives/1360#comments</comments>
		<pubDate>Thu, 08 Sep 2011 08:56:55 +0000</pubDate>
		<dc:creator>ELM</dc:creator>
				<category><![CDATA[榆树网-系统]]></category>
		<category><![CDATA[榆树网-网络]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[下载]]></category>
		<category><![CDATA[测速]]></category>
		<category><![CDATA[网速]]></category>
		<category><![CDATA[速率]]></category>

		<guid isPermaLink="false">http://www.wenzk.com/?p=1360</guid>
		<description><![CDATA[CURL提供了相应的输出接口，可以直接把平均下载输率输出出来： -m 表示cur最长运行时长，10秒后退出。 -s 不输出任何错误信息 -w 输出格式定义 以前是通过grep + cut 来获取的，那个方法太笨了。。。 相关文章秦皇岛联通（网通）测速地址 (0)MySQL镜像站点 (0)网络测速-铁岭联通-网通 (0)对PHPDisk做一点点小的调整 (0)]]></description>
			<content:encoded><![CDATA[<p>CURL提供了相应的输出接口，可以直接把平均下载输率输出出来：</p>
<pre class="brush: plain; title: ; notranslate">curl -s -w &quot;%{speed_download}&quot; -m 10 http://www.wenzk.com/ -o /dev/null</pre>
<p>-m 表示cur最长运行时长，10秒后退出。</p>
<p>-s 不输出任何错误信息</p>
<p>-w 输出格式定义</p>
<p>以前是通过grep + cut 来获取的，那个方法太笨了。。。</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://www.wenzk.com/archives/1302" title="秦皇岛联通（网通）测速地址">秦皇岛联通（网通）测速地址</a> (0)</li><li><a href="http://www.wenzk.com/archives/1053" title="MySQL镜像站点">MySQL镜像站点</a> (0)</li><li><a href="http://www.wenzk.com/archives/764" title="网络测速-铁岭联通-网通">网络测速-铁岭联通-网通</a> (0)</li><li><a href="http://www.wenzk.com/archives/570" title="对PHPDisk做一点点小的调整">对PHPDisk做一点点小的调整</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.wenzk.com/archives/1360/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>单IP做NAT支持的最大连接数问题</title>
		<link>http://www.wenzk.com/archives/1356</link>
		<comments>http://www.wenzk.com/archives/1356#comments</comments>
		<pubDate>Fri, 02 Sep 2011 13:48:13 +0000</pubDate>
		<dc:creator>ELM</dc:creator>
				<category><![CDATA[榆树网-系统]]></category>
		<category><![CDATA[榆树网-网络]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[NAT]]></category>
		<category><![CDATA[地址池]]></category>
		<category><![CDATA[连接数]]></category>
		<category><![CDATA[防火墙]]></category>

		<guid isPermaLink="false">http://www.wenzk.com/?p=1356</guid>
		<description><![CDATA[和一些做NAT的老师接触，谈起NAT的问题，大多数都是自己用Linux使用iptables来搞定的，在具体谈到地址池的时候，发现很多老师都习惯将1个C网络NAT到一个单独的IP地址上，如果有N个C类地址，那就需要写N条iptables规则，当然这样做的好处是用户的源地址永远不会变，便于事件的追查等，当问到为什么非要把1个C映射到一个IP地址上时，大家的回答都是：怕一个地址的端口数量不够，导致连接数不够。 想想也是，TCP/IP的端口数是16位的，最大也就支持65535个端口，难道单个IP地址做NAT的最大连接数就是65535？ 我们知道，Linux做NAT的时候，将NAT前后的IP地址及端口都记录在/proc/net/ip_conntrack里，通过查找这个文件，可以推断出某个报文NAT前后的IP地址及端口，也就是所谓的一个连接。 下面我们来看一个实际的例子【1】： 处于同一子网内的主机A、B，IP地址分别为：192.168.1.2、192.168.1.3，他们使用TCP协议，使用相同的源端口访问不同目的IP地址的web服务，看看NAT前后的IP地址及端口： 从上面可以看出，NAT之后只是把数据包的源地址修改了，都改成60.16.128.110，他们的源端口依然不变。 我们继续看另外一个例子【2】： 同样是以上两台主机，同时TCP协议访问同一主机的web服务： 从结果可以看出，有一个连接的源端口号被修改成60121了。 比较上面两个例子，不难看出，识别一个连接只需5元组即可： 协议、源地址、源端口、目的地址、目的端口 对于【1】的两个连接，NAT前后的5元组为： NAT前： TCP、192.168.1.3、7777、121.194.0.206、80 TCP、192.186.1.2、7777、60.215.128.148、80 NAT后： TCP、60.16.128.110、7777、121.194.0.206、80 TCP、60.16.128.110、7777、60.215.128.148、80 将内网地址修改成功网地址后，五元组中的目的地址不一致，可以区分两个连接，无需修改 源端口。 对于【2】的两个连接，NAT前的五元组为： TCP、192.168.1.3、6666、121.194.0.206、80 TCP、192.168.1.2、6666、121.194.0.206、80 如果NAT服务器只是简单的将源地址替换成一个IP地址，则两个连接的五元组完全一致，无法区分两个连接，所以NAT后将其中一个连接的源端口做了相应的修改： TCP、60.16.128.110、6666、121.194.0.206、80 TCP、60.16.128.110、60121、121.194.0.206、80 这样，两个连接的源端口不同，仍然可以区分两个连接。 从上面的分析，可以得出如下结论： NAT支持最大连接数主要看可以产生多少个不重复的5元组。 因此单个IP地址做NAT支持的最大连接数是多少呢？ 协议× 源地址×源端口×目的地址×目的端口 =  2 * 1 * 2^16 * 2^32 * 2^16 = 3.68934881e+019 个连接(理想状态) 最差的情况，所有的用户都访问同一个IP地址的同一协议的同一端口，则： 协议×源地址×源端口×目的地址×目的端口 =  1 * 1 * 2^16 * 1 [...]]]></description>
			<content:encoded><![CDATA[<p>和一些做NAT的老师接触，谈起NAT的问题，大多数都是自己用Linux使用iptables来搞定的，在具体谈到地址池的时候，发现很多老师都习惯将1个C网络NAT到一个单独的IP地址上，如果有N个C类地址，那就需要写N条iptables规则，当然这样做的好处是用户的源地址永远不会变，便于事件的追查等，当问到为什么非要把1个C映射到一个IP地址上时，大家的回答都是：怕一个地址的端口数量不够，导致连接数不够。</p>
<p><span id="more-1356"></span>想想也是，TCP/IP的端口数是16位的，最大也就支持65535个端口，难道单个IP地址做NAT的最大连接数就是65535？</p>
<p>我们知道，Linux做NAT的时候，将NAT前后的IP地址及端口都记录在/proc/net/ip_conntrack里，通过查找这个文件，可以推断出某个报文NAT前后的IP地址及端口，也就是所谓的一个连接。</p>
<p>下面我们来看一个实际的例子【1】：</p>
<p>处于同一子网内的主机A、B，IP地址分别为：192.168.1.2、192.168.1.3，他们使用TCP协议，使用相同的源端口访问不同目的IP地址的web服务，看看NAT前后的IP地址及端口：</p>
<pre class="brush: plain; title: ; notranslate">tcp      6 431994 ESTABLISHED src=192.168.1.3 dst=121.194.0.206 sport=7777 dport=80 src=121.194.0.206 dst=60.16.128.110 sport=80 dport=7777 [ASSURED] use=1
tcp      6 431983 ESTABLISHED src=192.168.1.2 dst=60.215.128.148 sport=7777 dport=80 src=60.215.128.148 dst=60.16.128.110 sport=80 dport=7777 [ASSURED] use=1</pre>
<p>从上面可以看出，NAT之后只是把数据包的源地址修改了，都改成60.16.128.110，他们的源端口依然不变。</p>
<p>我们继续看另外一个例子【2】：</p>
<p>同样是以上两台主机，同时TCP协议访问同一主机的web服务：</p>
<pre class="brush: plain; title: ; notranslate">tcp      6 431997 ESTABLISHED src=192.168.1.3 dst=121.194.0.206 sport=6666 dport=80 src=121.194.0.206 dst=60.16.128.110 sport=80 dport=6666 [ASSURED] use=1
tcp      6 431990 ESTABLISHED src=192.168.1.2 dst=121.194.0.206 sport=6666 dport=80 src=121.194.0.206 dst=60.16.128.110 sport=80 dport=60121 [ASSURED] use=1</pre>
<p>从结果可以看出，有一个连接的源端口号被修改成60121了。</p>
<p>比较上面两个例子，不难看出，识别一个连接只需5元组即可：</p>
<p>协议、源地址、源端口、目的地址、目的端口</p>
<p>对于【1】的两个连接，NAT前后的5元组为：</p>
<p>NAT前：</p>
<p>TCP、192.168.1.3、7777、121.194.0.206、80</p>
<p>TCP、192.186.1.2、7777、60.215.128.148、80</p>
<p>NAT后：</p>
<p>TCP、60.16.128.110、7777、121.194.0.206、80</p>
<p>TCP、60.16.128.110、7777、60.215.128.148、80</p>
<p>将内网地址修改成功网地址后，五元组中的目的地址不一致，可以区分两个连接，无需修改 源端口。</p>
<p>对于【2】的两个连接，NAT前的五元组为：</p>
<p>TCP、192.168.1.3、6666、121.194.0.206、80</p>
<p>TCP、192.168.1.2、6666、121.194.0.206、80</p>
<p>如果NAT服务器只是简单的将源地址替换成一个IP地址，则两个连接的五元组完全一致，无法区分两个连接，所以NAT后将其中一个连接的源端口做了相应的修改：</p>
<p>TCP、60.16.128.110、6666、121.194.0.206、80</p>
<p>TCP、60.16.128.110、60121、121.194.0.206、80</p>
<p>这样，两个连接的源端口不同，仍然可以区分两个连接。</p>
<p>从上面的分析，可以得出如下结论：</p>
<p>NAT支持最大连接数主要看可以产生多少个不重复的5元组。</p>
<p>因此单个IP地址做NAT支持的最大连接数是多少呢？</p>
<p>协议× 源地址×源端口×目的地址×目的端口 =  2 * 1 * 2^16 * 2^32 * 2^16 = 3.68934881e+019 个连接(理想状态)</p>
<p>最差的情况，所有的用户都访问同一个IP地址的同一协议的同一端口，则：</p>
<p>协议×源地址×源端口×目的地址×目的端口 =  1 * 1 * 2^16 * 1 * 1 = 65536个连接（最糟糕情况）。</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://www.wenzk.com/archives/1320" title="用iptables做NAT地址池问题">用iptables做NAT地址池问题</a> (0)</li><li><a href="http://www.wenzk.com/archives/1362" title="Linux NAT之LOG问题">Linux NAT之LOG问题</a> (0)</li><li><a href="http://www.wenzk.com/archives/942" title="Netfilter Connmark">Netfilter Connmark</a> (0)</li><li><a href="http://www.wenzk.com/archives/417" title="Linux NAT优化手册">Linux NAT优化手册</a> (0)</li><li><a href="http://www.wenzk.com/archives/1431" title="OpenVZ的VPS里不支持nat表？">OpenVZ的VPS里不支持nat表？</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.wenzk.com/archives/1356/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CentOS 6.0下安装Zimbra简单步骤及故障排查</title>
		<link>http://www.wenzk.com/archives/1339</link>
		<comments>http://www.wenzk.com/archives/1339#comments</comments>
		<pubDate>Thu, 01 Sep 2011 06:24:30 +0000</pubDate>
		<dc:creator>ELM</dc:creator>
				<category><![CDATA[榆树网-系统]]></category>
		<category><![CDATA[榆树网-网络]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[sudo]]></category>
		<category><![CDATA[Zimbra]]></category>
		<category><![CDATA[错误]]></category>

		<guid isPermaLink="false">http://www.wenzk.com/?p=1339</guid>
		<description><![CDATA[最小化安装CentOS 6.0。 通过visudo编辑/etc/sudoers文件，注释 #Defaults    requiretty 如果不注释这行，安装过程会提示：sudo: sorry, you must have a tty to run sudo 停止系统自带的MTA服务： 否则后台显示mta服务不正常。 运行 进行安装，注意域名服务的配合。 如果/var/log/secure提示错误信息 有两个解决办法： 1）、禁用fingerprint验证 2）、安装frpintd-pam程序 如果多服务器安装： 1、记得以root身份运行： /opt/zimbra/libexec/zmsyslogsetup 配置系统的syslog，将日志送到远程的log server。 2、以zimbra身份运行： zmupdateauthkeys PS: 1、如果没有安装file，在MTA会提示：“parts_decode_ext FAILED: Unix utility file(1) not available”导致邮件无法正常收发。 2、如果不安装nc，则会导致zimconfigd无法启动，提示“zmconfigd is not running”。 3、CentOS 6让rsyslogd接收远程的syslog，修改/etc/sysconfig/rsyslog文件，改成：SYSLOGD_OPTIONS=”-c 2 -r514&#8243; 4、如果系统所有组件不是安装在一台机器上，记得一定配置好zimbra-logger所在主机的rsyslog，否则管理界面将无法监控到其他服务器的运行状态。 相关文章解决Zimbra收取POP3邮件问题 (4)将 Zimbra Desktop 设为默认电子邮件程序 (0)zmmailbox导入邮件提示：Code:zclient.UPLOAD_SIZE_LIMIT_EXCEEDED (0)Linux PPPoE拨号频繁掉线问题 [...]]]></description>
			<content:encoded><![CDATA[<p>最小化安装CentOS 6.0。</p>
<pre class="brush: plain; title: ; notranslate">yum install perl sysstat file openssh-clients nc sudo
cd /usr/lib/
ln -s /usr/lib64/libstdc++.so.6 .</pre>
<p>通过visudo编辑/etc/sudoers文件，注释</p>
<blockquote><p>#Defaults    requiretty</p></blockquote>
<p>如果不注释这行，安装过程会提示：sudo: sorry, you must have a tty to run sudo</p>
<p>停止系统自带的MTA服务：</p>
<pre class="brush: plain; title: ; notranslate">chkconfig postfix off</pre>
<p>否则后台显示mta服务不正常。</p>
<p>运行</p>
<pre class="brush: plain; title: ; notranslate">./install.sh --platform-override</pre>
<p>进行安装，注意域名服务的配合。</p>
<p>如果/var/log/secure提示错误信息</p>
<pre class="brush: plain; title: ; notranslate">Sep 17 18:31:29 Zimbra-Mailbox-01 sudo:   zimbra : TTY=unknown ; PWD=/opt/zimbra ; USER=root ; COMMAND=/opt/zimbra/libexec/zmmailboxdmgr status
Sep 17 18:31:29 Zimbra-Mailbox-01 sudo: PAM unable to dlopen(/lib64/security/pam_fprintd.so): /lib64/security/pam_fprintd.so: cannot open shared object file: No such file or directory
Sep 17 18:31:29 Zimbra-Mailbox-01 sudo: PAM adding faulty module: /lib64/security/pam_fprintd.so</pre>
<p>有两个解决办法：</p>
<p>1）、禁用fingerprint验证</p>
<pre class="brush: plain; title: ; notranslate">authconfig --disablefingerprint --update</pre>
<p>2）、安装frpintd-pam程序</p>
<pre class="brush: plain; title: ; notranslate">yum install fprintd-pam</pre>
<p>如果多服务器安装：<br />
1、记得以root身份运行：<br />
/opt/zimbra/libexec/zmsyslogsetup<br />
配置系统的syslog，将日志送到远程的log server。<br />
2、以zimbra身份运行：<br />
zmupdateauthkeys</p>
<p>PS:<br />
1、如果没有安装file，在MTA会提示：“parts_decode_ext FAILED: Unix utility file(1) not available”导致邮件无法正常收发。<br />
2、如果不安装nc，则会导致zimconfigd无法启动，提示“zmconfigd is not running”。<br />
3、CentOS 6让rsyslogd接收远程的syslog，修改/etc/sysconfig/rsyslog文件，改成：SYSLOGD_OPTIONS=”-c 2 -r514&#8243;<br />
4、如果系统所有组件不是安装在一台机器上，记得一定配置好zimbra-logger所在主机的rsyslog，否则管理界面将无法监控到其他服务器的运行状态。</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://www.wenzk.com/archives/1380" title="解决Zimbra收取POP3邮件问题">解决Zimbra收取POP3邮件问题</a> (4)</li><li><a href="http://www.wenzk.com/archives/1509" title="将 Zimbra Desktop 设为默认电子邮件程序">将 Zimbra Desktop 设为默认电子邮件程序</a> (0)</li><li><a href="http://www.wenzk.com/archives/1501" title="zmmailbox导入邮件提示：Code:zclient.UPLOAD_SIZE_LIMIT_EXCEEDED">zmmailbox导入邮件提示：Code:zclient.UPLOAD_SIZE_LIMIT_EXCEEDED</a> (0)</li><li><a href="http://www.wenzk.com/archives/1481" title="Linux PPPoE拨号频繁掉线问题">Linux PPPoE拨号频繁掉线问题</a> (0)</li><li><a href="http://www.wenzk.com/archives/1477" title="为什么不能用Outlook、Foxmail收取Zimbra的邮件">为什么不能用Outlook、Foxmail收取Zimbra的邮件</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.wenzk.com/archives/1339/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

