<?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/"
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>藍天浮雲</title>
	<atom:link href="http://dennylin93.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://dennylin93.wordpress.com</link>
	<description>This is our world... Nothing changes. It's here, that we are going to live on...</description>
	<lastBuildDate>Thu, 05 Nov 2009 13:53:46 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>zh-tw</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='dennylin93.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/adca19793b17aea8b4cc025c8258656d?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>藍天浮雲</title>
		<link>http://dennylin93.wordpress.com</link>
	</image>
			<item>
		<title>glabel</title>
		<link>http://dennylin93.wordpress.com/2009/11/05/glabel/</link>
		<comments>http://dennylin93.wordpress.com/2009/11/05/glabel/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 13:47:51 +0000</pubDate>
		<dc:creator>dennylin93</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[硬體]]></category>
		<category><![CDATA[電腦科學]]></category>

		<guid isPermaLink="false">http://dennylin93.wordpress.com/?p=1195</guid>
		<description><![CDATA[其實 glabel 在 FreeBSD 上是一個很實用的程式，不過平常可能很少聽到他。之前灌 FreeBSD 有提過 glabel。
當硬碟、隨身碟插在不同的 port，名稱會變來變去。硬碟可能從 /dev/ad0 變成 /dev/ad1，隨身碟可能從 /dev/da3 變成 /dev/da7。原因是作業系統通常指認得硬體插在主機板上那一個 port。
如果插在不同電腦或 port 上名稱會改變是一件非常麻煩的事。因此，就會想給他一個固定的名稱。此時，glabel 就可以發揮公用。
因為 glabel 會將資料寫入硬體當中，因此必須先卸載裝置才能 label 上去。最簡單的方式就是重新開機，然後進入「single user mode」。
使用 glabel 前請先確認 kernel 是否有加 GEOM_LABEL 這個選項（GENERIC 預設有）或有 geom_label.ko 這個模組。沒有的話，請先重新編譯 kernel。
進入 single user mode 之後就可以開始下 # glabel label -v name dev（-v 會增加訊息的詳細程度）。
之前灌新的 mail server 的時候，我就開始用 glabel 了（主要原因其實是建 RAID-Z）。按照 /etc/fstab 的順序 label [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dennylin93.wordpress.com&blog=494489&post=1195&subd=dennylin93&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>其實 <a href="http://www.freebsd.org/cgi/man.cgi?query=glabel"><code>glabel</code></a> 在 FreeBSD 上是一個很實用的程式，不過平常可能很少聽到他。之前<a href="http://dennylin93.wordpress.com/2009/10/16/installing-freebsd/">灌 FreeBSD</a> 有提過 <code>glabel</code>。</p>
<p>當硬碟、隨身碟插在不同的 port，名稱會變來變去。硬碟可能從 <code>/dev/ad0</code> 變成 <code>/dev/ad1</code>，隨身碟可能從 <code>/dev/da3</code> 變成 <code>/dev/da7</code>。原因是作業系統通常指認得硬體插在主機板上那一個 port。</p>
<p>如果插在不同電腦或 port 上名稱會改變是一件非常麻煩的事。因此，就會想給他一個固定的名稱。此時，<code>glabel</code> 就可以發揮公用。</p>
<p>因為 <code>glabel</code> 會將資料寫入硬體當中，因此必須先卸載裝置才能 label 上去。最簡單的方式就是重新開機，然後進入「single user mode」。</p>
<p style="border:1px solid #AAA;background-color:#F9F9F9;color:#000;padding:2px 5px;">使用 <code>glabel</code> 前請先確認 kernel 是否有加 <code>GEOM_LABEL</code> 這個選項（<code>GENERIC</code> 預設有）或有 <code>geom_label.ko</code> 這個模組。沒有的話，請先重新編譯 kernel。</p>
<p>進入 single user mode 之後就可以開始下 <code># glabel label -v name dev</code>（<code>-v</code> 會增加訊息的詳細程度）。</p>
<p>之前灌新的 mail server 的時候，我就開始用 <code>glabel</code> 了（主要原因其實是建 RAID-Z）。按照 <code>/etc/fstab</code> 的順序 label 比較不會搞混或漏掉：</p>
<pre># glabel label -v swap /dev/ad4s1b
# glabel label -v root /dev/ad4s1a
# glabel label -v home /dev/ad4s1g
# glabel label -v tmp /dev/ad4s1e
# glabel label -v usr /dev/ad4s1f
# glabel label -v var /dev/ad4s1d</pre>
<p></p>
<p>標完後可以用 <code># glabel status</code> 或 <code># glabel list</code> 看結果：</p>
<pre># glabel status
       Name  Status  Components
 label/root     N/A  ad4s1a
 label/swap     N/A  ad4s1b
  label/var     N/A  ad4s1d
  label/tmp     N/A  ad4s1e
  label/usr     N/A  ad4s1f
 label/home     N/A  ad4s1g</pre>
<p></p>
<p>確定 label 成功後就更新一下 <code>/etc/fstab</code> ：</p>
<pre class="brush: bash;">
# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/label/swap         none            swap    sw              0       0
/dev/label/root         /               ufs     rw              1       1
/dev/label/home         /home           ufs     rw              2       2
/dev/label/tmp          /tmp            ufs     rw              2       2
/dev/label/usr          /usr            ufs     rw              2       2
/dev/label/var          /var            ufs     rw              2       2
</pre>
<p>下次開機就會使用這些 label 了。<strong>重新開機前，請再三確認 label 有成功和 <code>/etc/fstab</code> 沒有錯誤</strong>，因為沒弄好的話可能無法開機，需要用救援光碟去救回來。</p>
<p>這樣就完成了。Man page 上有更詳細的說明。</p>
Posted in 硬體, 電腦科學, FreeBSD  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dennylin93.wordpress.com/1195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dennylin93.wordpress.com/1195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dennylin93.wordpress.com/1195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dennylin93.wordpress.com/1195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dennylin93.wordpress.com/1195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dennylin93.wordpress.com/1195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dennylin93.wordpress.com/1195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dennylin93.wordpress.com/1195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dennylin93.wordpress.com/1195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dennylin93.wordpress.com/1195/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dennylin93.wordpress.com&blog=494489&post=1195&subd=dennylin93&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dennylin93.wordpress.com/2009/11/05/glabel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/38f82c510e5909b7870765269de1d630?s=96&#38;d=http%3A%2F%2Fa.wordpress.com%2Fi%2Fmu.gif" medium="image">
			<media:title type="html">dennylin93</media:title>
		</media:content>
	</item>
		<item>
		<title>OpenSSH</title>
		<link>http://dennylin93.wordpress.com/2009/11/05/openssh/</link>
		<comments>http://dennylin93.wordpress.com/2009/11/05/openssh/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 13:08:44 +0000</pubDate>
		<dc:creator>dennylin93</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[網路]]></category>
		<category><![CDATA[電腦科學]]></category>

		<guid isPermaLink="false">http://dennylin93.wordpress.com/?p=1176</guid>
		<description><![CDATA[熟悉 BSD、Unix、Linux 的人應該都聽過 SSH 這個協定。SSH 主要用途是遠端登入，不過也可以做 port forwarding、tunneling（通常用來鑽防火牆）、SOCKS 或用來傳檔案。SSH 之所以會出現是要取代 telnet 等程式，因為 telnet 連線未經過加密，容易被竊聽。
這篇會提到怎麼架 OpenSSH 和一些常用的指令。
大部分的 BSD、Unix、Linux 作業系統上都有 SSH 的程式，其中使用最廣泛的應該是 OpenSSH。OpenSSH 是由 OpenBSD 的開發者開發。
OpenSSH 是 OpenBSD 的一個部分，而開發的時候會釋出一個「portable」的版本，可以移植到其他作業系統。目前 FreeBSD 7.2 的 base 包含 OpenSSH 5.1p1。

若需要更新的版本可以從 security/openssh-portable 安裝，但絕大部分的使用者都沒有這個需求。Base 裡頭的 OpenSSH 很穩定，若要任何漏洞也會發 security advisory。
啟動 OpenSSH 之前，應該先確認一下網路設定與 DNS 設定是否正常。跑一下 # dig google.com 應該就知道了。DNS 若有問題的話：

改 /etc/resolv.conf（手動設 IP）
檢查 DHCP 的設定（用 DHCP [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dennylin93.wordpress.com&blog=494489&post=1176&subd=dennylin93&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>熟悉 <a href="http://en.wikipedia.org/wiki/Berkeley_Software_Distribution">BSD</a>、<a href="http://en.wikipedia.org/wiki/Unix">Unix</a>、<a href="http://en.wikipedia.org/wiki/Linux">Linux</a> 的人應該都聽過 <a href="http://en.wikipedia.org/wiki/Secure_Shell">SSH</a> 這個協定。SSH 主要用途是遠端登入，不過也可以做 port forwarding、tunneling（通常用來鑽防火牆）、SOCKS 或用來傳檔案。SSH 之所以會出現是要取代 <code>telnet</code> 等程式，因為 <code>telnet</code> 連線未經過加密，容易被竊聽。</p>
<p>這篇會提到怎麼架 OpenSSH 和一些常用的指令。</p>
<p>大部分的 BSD、Unix、Linux 作業系統上都有 SSH 的程式，其中使用最廣泛的應該是 <a href="http://www.openssh.com/">OpenSSH</a>。OpenSSH 是由 <a href="http://www.openbsd.org/">OpenBSD</a> 的開發者開發。</p>
<p>OpenSSH 是 OpenBSD 的一個部分，而開發的時候會釋出一個「portable」的版本，可以移植到其他作業系統。目前 <a href="http://www.freebsd.org/">FreeBSD</a> 7.2 的 base 包含 <code>OpenSSH 5.1p1</code>。</p>
<p><span id="more-1176"></span></p>
<p>若需要更新的版本可以從 <a href="security/openssh-portable"><code>security/openssh-portable</code></a> 安裝，但絕大部分的使用者都沒有這個需求。Base 裡頭的 OpenSSH 很穩定，若要任何漏洞也會發 security advisory。</p>
<p>啟動 OpenSSH 之前，應該先確認一下網路設定與 DNS 設定是否正常。跑一下 <code># dig google.com</code> 應該就知道了。DNS 若有問題的話：</p>
<ul>
<li>改 <code>/etc/resolv.conf</code>（手動設 IP）</li>
<li>檢查 DHCP 的設定（用 DHCP 抓 IP）</li>
</ul>
<p>我的 <code>/etc/resolv.conf</code>（這是附中的 DNS 伺服器）：</p>
<pre class="brush: bash;">
search hs.ntnu.edu.tw
nameserver 140.131.149.9
nameserver 140.131.149.1
</pre>
<p>另外，若 DHCP 的 DNS 設定有問題，也可以 override。將這幾行加入 <code>/etc/dhclient-enter-hooks</code>（沒有的話新增）：</p>
<pre class="brush: bash;">
add_new_resolv_conf() {
        # Prevents /etc/resolv.conf from being changed (hence
        # the empty function).
        return 0
}
</pre>
<p>之後跟上面一樣，改一下 <code>/etc/resolv.conf</code> 就可以了。</p>
<p>DNS 處理好之後就可以開始了。把這行加進 <code>/etc/rc.conf</code>：</p>
<pre class="brush: bash;">
sshd_enable=&quot;YES&quot;
</pre>
<p>然後下 <code># /etc/rc.d/sshd</code> 就可以啟動 OpenSSH。第一次啟動 OpenSSH 通常會比較慢，因為要產生加密用的私鑰、公鑰。通常 1 分鐘以內會產生好（我用過最久的是在 D-Link 的 switch 上，花了好幾分鐘）。</p>
<p>現在 <code># sockstat -46l</code> 或 <code># telnet 127.0.0.1 22</code> 應該顯示 SSH。這樣 OpenSSH 就可以用了。</p>
<p>有幾點要注意。若 <code>sockstat</code> 顯示有成功 bind 到 IP、port 可是仍然無法連上的話，應該是防火牆設定擋掉 SSH 連線了。開一下 port 22（TCP）應該就可以了。</p>
<p>此外，OpenSSH 預設是不允許 <code>root</code> 遠端登入。這是基於安全性的原則，建議不要更改這個設定。若需要 <code>root</code> 權限的話，用 <code>su</code> 或 <code>sudo</code> 來取得。</p>
<p>現在來看一下 OpenSSH 的設定檔。相關的檔案（設定檔、私鑰、公鑰）都在 <code>/etc/ssh/</code> 底下。通常更改的只有 <code>/etc/sshd_config</code>，也就是 OpenSSH 的設定檔。</p>
<p>平常我都沒做什麼修改，因為現在預設都用 <code>Protocol 2</code> 了。大部分只會加入：</p>
<pre class="brush: bash;">
VersionAddendum
</pre>
<p>如此一來，<code>telnet</code> 的時候就不會顯示後面的 FreeBSD 資訊。</p>
<p>若覺得密碼容易被破解的話，可以考慮用 SSH keys 來登入，然後把 <code>ChallengeResponseAuthentication</code> 關掉。簡單來說，就是需要一個特殊檔案再加上一組密碼才能登入（密碼可有可無）。如此一來，就幾乎不可能破解。說實話，只要密碼合理（不要設 1234 之類），然後有阻擋 SSH 攻擊的話（可以參考<a href="http://dennylin93.wordpress.com/2009/11/01/ending-ssh-brute-force-attempts/">阻擋 SSH brute force</a>），應該就不必擔心帳號被駭。</p>
<p>網路上有時候會有人說將 SSH 改到其他 port，但其實沒什麼用。只要 port 被掃到有跑 SSH，攻擊就會持續發生，所以用 <a href="http://www.freshports.org/security/sshguard-pf"><code>security/sshguard-pf</code></a> 之類的軟體比較實際。</p>
<p>所有指令當中，最常用的應該就是 <code>ssh</code>，可以遠端登入其他電腦：<br />
<code># ssh cnmc</code></p>
<p>如此就可以登入主機名稱為 <code>cnmc</code> 的電腦（也可以用 IP）。</p>
<p>若要傳檔檔案的話，有 <code>scp</code> 和 <code>sftp</code> 可以使用。</p>
<p>從本機端傳 <code>foo</code> 到 <code>cnmc</code> 上：<br />
<code># scp foo cnmc:~/</code></p>
<p>從 <code>cnmc</code> 複製檔案到本機端：<br />
<code># scp cnmc:~/foo ./</code></p>
<p>可以發現 <code>scp</code> 用法其實和 <code>cp</code> 很相似，差別在於必須提供主機名稱或 IP。</p>
<p>另外，<code>sftp</code> 可以取代 <code>ftp</code>：</p>
<pre># sftp cnmc
sftp&gt; ls
foo
sftp&gt; get foo
Fetching /home/dennylin93/foo to foo
/home/dennylin93/foo                    100%  717     0.7KB/s   00:00
sftp&gt; !ls
foo    bar
sftp&gt; put bar
Uploading bar to /home/dennylin93/bar
bar                    100%  717     0.7KB/s   00:00
sftp&gt; ls
foo    bar</pre>
<p></p>
<p><code>sftp</code> 指令有問題的話可以打 <code>help</code>。</p>
<p>SSH 還可以做 port forwarding、tunneling、SOCKS，也可以用 <code>ssh-add</code>、<code>ssh-agent</code>、<code>ssh-keygen</code>，還有配合 <a href="http://www.freshports.org/net/rsync"><code>net/rsync</code></a> 使用。以後再介紹這些。</p>
Posted in 網路, 電腦科學, FreeBSD  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dennylin93.wordpress.com/1176/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dennylin93.wordpress.com/1176/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dennylin93.wordpress.com/1176/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dennylin93.wordpress.com/1176/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dennylin93.wordpress.com/1176/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dennylin93.wordpress.com/1176/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dennylin93.wordpress.com/1176/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dennylin93.wordpress.com/1176/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dennylin93.wordpress.com/1176/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dennylin93.wordpress.com/1176/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dennylin93.wordpress.com&blog=494489&post=1176&subd=dennylin93&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dennylin93.wordpress.com/2009/11/05/openssh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/38f82c510e5909b7870765269de1d630?s=96&#38;d=http%3A%2F%2Fa.wordpress.com%2Fi%2Fmu.gif" medium="image">
			<media:title type="html">dennylin93</media:title>
		</media:content>
	</item>
		<item>
		<title>阻擋 SSH brute force</title>
		<link>http://dennylin93.wordpress.com/2009/11/01/ending-ssh-brute-force-attempts/</link>
		<comments>http://dennylin93.wordpress.com/2009/11/01/ending-ssh-brute-force-attempts/#comments</comments>
		<pubDate>Sun, 01 Nov 2009 01:20:09 +0000</pubDate>
		<dc:creator>dennylin93</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[網路]]></category>
		<category><![CDATA[電腦科學]]></category>

		<guid isPermaLink="false">http://dennylin93.wordpress.com/?p=1069</guid>
		<description><![CDATA[架好 FreeBSD 或 Linux 之後，常常見到的一個現象就是 SSH 持續的遭受攻擊。在 security run output 會看到這樣的訊息：
ns.hs.ntnu.edu.tw login failures:
Oct 30 02:25:01 ns sshd[12801]: Invalid user master from 140.124.62.197
Oct 30 07:13:22 ns sshd[14529]: Invalid user globus from 213.99.38.3
Oct 30 07:13:31 ns sshd[14535]: Invalid user condor from 213.99.38.3
Oct 30 07:13:32 ns sshd[14534]: Invalid user cadi from 213.99.38.3
Oct 30 07:26:44 ns sshd[14591]: Invalid user [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dennylin93.wordpress.com&blog=494489&post=1069&subd=dennylin93&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>架好 FreeBSD 或 Linux 之後，常常見到的一個現象就是 SSH 持續的遭受攻擊。在 security run output 會看到這樣的訊息：</p>
<pre>ns.hs.ntnu.edu.tw login failures:
Oct 30 02:25:01 ns sshd[12801]: Invalid user master from 140.124.62.197
Oct 30 07:13:22 ns sshd[14529]: Invalid user globus from 213.99.38.3
Oct 30 07:13:31 ns sshd[14535]: Invalid user condor from 213.99.38.3
Oct 30 07:13:32 ns sshd[14534]: Invalid user cadi from 213.99.38.3
Oct 30 07:26:44 ns sshd[14591]: Invalid user simoni from 124.193.106.107
</pre>
<p></p>
<p>看到就覺得很煩，因為每天都有，而且若不阻檔的話，可能會有數千比，系統也有機會遭到入侵。</p>
<p>為了阻擋 SSH brute force，我在 FreeBSD 上裝了 <a href="http://www.freshports.org/security/sshguard-pf"><code>security/sshguard-pf</code></a>，<a href="http://sshguard.sourceforge.net/">sshguard</a> 的好處是他可以判別很多種紀錄檔，也支援許多種防火牆。另外，也可以調整多久時間內登入失敗幾次，還有要擋掉多久。</p>
<p>目前可以判讀這些軟體的紀錄檔：</p>
<ul>
<li><a href="http://www.openssh.com/">OpenSSH</a></li>
<li><a href="http://www.dovecot.org/">Dovecot</a></li>
<li><a href="http://www.pureftpd.org/project/pure-ftpd">Pure-FTPd</a></li>
<li><a href="http://www.proftpd.org/">ProFTPD</a></li>
</ul>
<p>支援的防火牆包含：</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/PF_%28firewall%29">PF</a>（FreeBSD、OpenBSD、NetBSD、DragonFly BSD）</li>
<li><a href="http://en.wikipedia.org/wiki/Ipfirewall">IPFW</a>（FreeBSD、Mac OS X）</li>
<li><a href="http://en.wikipedia.org/wiki/Iptables">iptables</a>（Linux）</li>
</li>
<p><span id="more-1069"></span></p>
<p>目前我是使用 FreeBSD 和 PF，所以選擇安裝 <code>security/sshguard-pf</code>：</p>
<pre># cd /usr/ports/security/sshguard-pf &amp;&amp; make install clean</pre>
<p></p>
<p>裝完就可以開始設定了。首先，編輯 <code>/etc/syslog.conf</code>。應該可以看到這一行被 <code>security/sshguard-pf</code> 加進來了：</p>
<pre class="brush: bash;">
#auth.info;authpriv.info     |exec /usr/local/sbin/sshguard
</pre>
<p>功用是把紀錄檔餵給 sshguard，這樣才會知道是否有人登入失敗。要將此行的註解拿掉，然後看是否要調整設定。<code>-a</code> 設失敗多少次、<code>-p</code>  是被檔多久（阻擋時間是 n 與 1.5 * n 之間），單位是秒、<code>-s</code> 是多少秒將攻擊忘記（即每 n 秒嘗試登入就不會被擋）。含有其他參數和功能（如 whitelisting），請 <code># man sshguard</code>。</p>
<p><code>-a</code> 預設為 4、<code>-p</code> 預設 420、<code>-s</code> 預設為 1200。</p>
<p>我把他改成這樣：</p>
<pre class="brush: bash;">
auth.info;authpriv.info     |exec /usr/local/sbin/sshguard -a 6 -p 86400 -s 7200
</pre>
<p>如此，失敗 6 次會被阻擋，檔 86400 到 1.5 * 86400 秒，每次登入間距不到 3600 秒（2 小時）。在 production 的機器上，我都將 authentication 方式改成 SSH keys，然後停用 PAM，或者把 <code>-a</code> 改成 2。</p>
<p style="border:1px solid #AAA;background-color:#F9F9F9;color:#000;padding:2px 5px;">若已經啟動 PF，可以繼續下面的步驟，若沒有的話，先啟動一下。</p>
<p>PF 通常是直接編入核心中（static），或者利用模組載入。</p>
<p>核心的設定（加入後請重新編譯核心，參見 <a href="http://www.freebsd.org/doc/en/books/handbook/kernelconfig-building.html">Building and Installing a Custom Kernel</a>）：</p>
<pre class="brush: bash;">
device          pf
device          pflog
device          pfsync
</pre>
<p>PF 也可以<a href="http://www.freebsd.org/doc/en/books/handbook/firewalls-pf.html#AEN39779">配合 ALTQ 做頻寬管理</a>，不過 ALTQ 必須編入核心，無法用模組載入。</p>
<p>用模組的話可以手動載入，<code>pflog</code> 功能是 log（其實這步是多餘的，因為用到 PF 的時候系統會自動載入）：</p>
<pre># kldload pf
# kldload pflog</pre>
<p></p>
<p>下 <code># pfctl -e</code> 就可以啟動 PF，設定預設檔位置為 <code>/etc/pf.conf</code>。</p>
<p>另外，若要開機時啟動 PF，請將這幾行加入 <code>/etc/pf.conf</code>（<code>pflog</code> 沒用到可以不必加）：</p>
<pre class="brush: bash;">
pf_enable=&quot;YES&quot;
pflog_enable=&quot;YES&quot;
</pre>
<p>接下來還要設定 PF（防火牆），否則他不會擋掉任何攻擊。把這幾行加進 <code>/etc/pf.conf</code>：</p>
<pre class="brush: bash;">
table &lt;sshguard&gt; persist
block in quick proto tcp from &lt;sshguard&gt; to any port ssh
</pre>
<p>也可以調整成這樣：</p>
<pre class="brush: bash;">
table &lt;sshguard&gt; persist
block drop in quick proto tcp from &lt;sshguard&gt; to any port ssh
block out quick proto tcp from any to &lt;sshguard&gt;
</pre>
<p>這樣就設定完了，把 PF 的規則重新載入 <code># pfctl -f /etc/pf.conf</code> 然後重新啟動 <code>syslogd</code> 就可以了 <code># /etc/rc.d/syslogd restart</code>。</p>
<p>若要設檔 IMAP、FTP，則改一下 <code>/etc/syslog.conf</code> 裡餵給 sshguard 的 log，然後調整防火牆阻擋的 port 就可以了。</p>
<p>其他設定除了 man page 以外，可以參考 <a href="http://sshguard.sourceforge.net/doc/">sshguard 的 documentation</a>。</p>
Posted in 網路, 電腦科學, FreeBSD  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dennylin93.wordpress.com/1069/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dennylin93.wordpress.com/1069/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dennylin93.wordpress.com/1069/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dennylin93.wordpress.com/1069/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dennylin93.wordpress.com/1069/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dennylin93.wordpress.com/1069/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dennylin93.wordpress.com/1069/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dennylin93.wordpress.com/1069/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dennylin93.wordpress.com/1069/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dennylin93.wordpress.com/1069/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dennylin93.wordpress.com&blog=494489&post=1069&subd=dennylin93&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dennylin93.wordpress.com/2009/11/01/ending-ssh-brute-force-attempts/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/38f82c510e5909b7870765269de1d630?s=96&#38;d=http%3A%2F%2Fa.wordpress.com%2Fi%2Fmu.gif" medium="image">
			<media:title type="html">dennylin93</media:title>
		</media:content>
	</item>
		<item>
		<title>簡單備份用的 shell script</title>
		<link>http://dennylin93.wordpress.com/2009/10/25/a-script-for-simple-backups/</link>
		<comments>http://dennylin93.wordpress.com/2009/10/25/a-script-for-simple-backups/#comments</comments>
		<pubDate>Sun, 25 Oct 2009 13:53:32 +0000</pubDate>
		<dc:creator>dennylin93</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[電腦科學]]></category>

		<guid isPermaLink="false">http://dennylin93.wordpress.com/?p=989</guid>
		<description><![CDATA[自從上週慘痛的經驗，已經打算將備份做完善一點。今天晚上寫了這個 shell script，用來備份系統資料、設定檔。因為檔案不多，只用 cp 和 tar 來完成，沒有用到 net/rsync。
這個 shell script 還有很多要修改的地方（主要是讀取參數的部分），不過應該還可以用。


#!/bin/sh

CHMOD=/bin/chmod
CHOWN=/usr/sbin/chown
CP=/bin/cp
DF=/bin/df
ID=/usr/bin/id
PKG_INFO=/usr/sbin/pkg_info
RM=/bin/rm
SORT=/usr/bin/sort
TAR=/usr/bin/tar
MKDIR=/bin/mkdir

HOSTNAME=`/bin/hostname -s`
BACKUP_DIR=/backup/&#34;$HOSTNAME&#34;-backup

usage() {
	echo &#34;Usage: $0 [-C] [-b] [-p] [--help]&#34;
	echo &#34;	-C		Clean backup directory&#34;
	echo &#34;	-b		Perform backup&#34;
	echo &#34;	-p		Create backup directory&#34;
	echo &#34;	--help		Show usage and exit&#34;
	exit 0
}

backup() {
	if [ `$ID -u` != 0 ]; then
		echo &#34;You aren't root!&#34;
		exit 2
	fi

	if [ ! -d $BACKUP_DIR ]; then
		echo &#34;Backup directory does not exist!&#34;
		exit [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dennylin93.wordpress.com&blog=494489&post=989&subd=dennylin93&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>自從上週慘痛的經驗，已經打算將備份做完善一點。今天晚上寫了這個 shell script，用來備份系統資料、設定檔。因為檔案不多，只用 <a href="http://www.freebsd.org/cgi/man.cgi?query=cp"><code>cp</code></a> 和 <a href="http://www.freebsd.org/cgi/man.cgi?query=tar"><code>tar</code></a> 來完成，沒有用到 <a href="http://www.freshports.org/net/rsync"><code>net/rsync</code></a>。</p>
<p>這個 shell script 還有很多要修改的地方（主要是讀取參數的部分），不過應該還可以用。</p>
<p><span id="more-989"></span></p>
<pre class="brush: bash;">
#!/bin/sh

CHMOD=/bin/chmod
CHOWN=/usr/sbin/chown
CP=/bin/cp
DF=/bin/df
ID=/usr/bin/id
PKG_INFO=/usr/sbin/pkg_info
RM=/bin/rm
SORT=/usr/bin/sort
TAR=/usr/bin/tar
MKDIR=/bin/mkdir

HOSTNAME=`/bin/hostname -s`
BACKUP_DIR=/backup/&quot;$HOSTNAME&quot;-backup

usage() {
	echo &quot;Usage: $0 [-C] [-b] [-p] [--help]&quot;
	echo &quot;	-C		Clean backup directory&quot;
	echo &quot;	-b		Perform backup&quot;
	echo &quot;	-p		Create backup directory&quot;
	echo &quot;	--help		Show usage and exit&quot;
	exit 0
}

backup() {
	if [ `$ID -u` != 0 ]; then
		echo &quot;You aren't root!&quot;
		exit 2
	fi

	if [ ! -d $BACKUP_DIR ]; then
		echo &quot;Backup directory does not exist!&quot;
		exit 3
	fi

	# chmod

	$CHMOD 700 $BACKUP_DIR

	# chown

	$CHOWN -R root:wheel $BACKUP_DIR

	# pkg_info

	$PKG_INFO -qoa | $SORT &gt; $BACKUP_DIR/pkg_info

	# df

	$DF -h &gt; $BACKUP_DIR/df

	# /boot/

	$MKDIR $BACKUP_DIR/boot/
	$CP /boot/loader.conf $BACKUP_DIR/boot/

	# /root/

	cd /
	$TAR czf $BACKUP_DIR/root.tar.gz root/

	# /etc/

	$MKDIR $BACKUP_DIR/etc/

	$CP /etc/auth.conf $BACKUP_DIR/etc/
	$CP /etc/crontab $BACKUP_DIR/etc/
	$CP /etc/fstab $BACKUP_DIR/etc/
	$CP /etc/group $BACKUP_DIR/etc/
	$CP /etc/login.conf $BACKUP_DIR/etc/
	$CP /etc/make.conf $BACKUP_DIR/etc/
	$CP /etc/master.passwd $BACKUP_DIR/etc/
	$CP /etc/motd $BACKUP_DIR/etc/
	$CP /etc/newsyslog.conf $BACKUP_DIR/etc/
	$CP /etc/periodic.conf $BACKUP_DIR/etc/
	$CP /etc/pf.conf $BACKUP_DIR/etc/
	$CP /etc/rc.conf $BACKUP_DIR/etc/
	$CP /etc/resolv.conf $BACKUP_DIR/etc/
	$CP /etc/src.conf $BACKUP_DIR/etc/
	$CP /etc/sysctl.conf $BACKUP_DIR/etc/
	$CP /etc/syslog.conf $BACKUP_DIR/etc/

	if [ -f /etc/ntp.conf ]; then
		$CP /etc/ntp.conf $BACKUP_DIR/etc/
	fi

	if [ -f /etc/dhclient-enter-hooks ]; then
		$CP /etc/dhclient-enter-hooks $BACKUP_DIR/etc/
	fi

	if [ -f /etc/X11/xorg.conf ]; then
		$MKDIR -p $BACKUP_DIR/etc/X11/
		$CP /etc/X11/xorg.conf $BACKUP_DIR/etc/X11/
	fi

	$MKDIR $BACKUP_DIR/etc/mail/

	$CP /etc/mail/aliases $BACKUP_DIR/etc/mail/
	$CP /etc/mail/mailer.conf $BACKUP_DIR/etc/mail/

	$MKDIR $BACKUP_DIR/etc/ssh/

	$CP /etc/ssh/sshd_config $BACKUP_DIR/etc/ssh/

	# /usr/
	$MKDIR -p $BACKUP_DIR/usr/local/
	cd /usr/local/
	$TAR czf $BACKUP_DIR/usr/local/etc.tar.gz etc/

	# /var/

	$MKDIR $BACKUP_DIR/var/

	$CP -R /var/backups $BACKUP_DIR/var/

	$MKDIR -p $BACKUP_DIR/var/db/

	if [ -d /var/db/mysql/ ]; then
		cd /var/db/
		$TAR czf $BACKUP_DIR/var/db/mysql.tar.gz mysql/
	fi

	cd /var/db/
	$TAR czf $BACKUP_DIR/var/db/pkg.tar.gz pkg/

	cd /var/db/
	$TAR czf $BACKUP_DIR/var/db/ports.tar.gz ports/

	if [ -d /var/db/postfix/ ]; then
		cd /var/db/
		$TAR czf $BACKUP_DIR/var/db/postfix.tar.gz postfix/
	fi

	if [ -d /var/db/postgrey/ ]; then
		cd /var/db/
		$TAR czf $BACKUP_DIR/var/db/postgrey.tar.gz postgrey/
	fi

	if [ -d /var/db/spamassassin/ ]; then
		cd /var/db/
		$TAR czf $BACKUP_DIR/var/db/spamassassin.tar.gz spamassassin/
	fi

	cd /var/
	$TAR czf $BACKUP_DIR/var/log.tar.gz log/
	$TAR czf $BACKUP_DIR/var/mail.tar.gz mail/

	$MKDIR -p $BACKUP_DIR/var/named/etc/

	cd /var/named/etc/
	$TAR czf $BACKUP_DIR/var/named/etc/namedb.tar.gz namedb/

	if [ -d /var/spool/postfix/ ]; then
		$MKDIR -p $BACKUP_DIR/var/spool/
		cd /var/spool/
		$TAR --exclude &quot;private&quot; --exclude &quot;public&quot; -czf  $BACKUP_DIR/var/spool/postfix.tar.gz postfix/
	fi

	if [ -d /var/spool/spamd/ ]; then
		$MKDIR -p $BACKUP_DIR/var/spool/
		cd /var/spool/
		$TAR czf $BACKUP_DIR/var/spool/spamd.tar.gz spamd/
	fi
}

archive() {
	cd $BACKUP_DIR/../
	$TAR cf &quot;$HOSTNAME&quot;-backup.tar &quot;$HOSTNAME&quot;-backup/
	$RM -rf $BACKUP_DIR/

	$CHMOD 600 &quot;$HOSTNAME&quot;-backup.tar
	$CHOWN root:wheel &quot;$HOSTNAME&quot;-backup.tar
}

case &quot;$1&quot; in
	--help)		usage 0 ;;
	-a)		backup 0; archive 0 ;;
	-b)		backup 0 ;;
	-C)		$RM -rf $BACKUP_DIR/* ;;
	-p)		$MKDIR -p $BACKUP_DIR; exit $? ;;
	*)		echo &quot;Illegal option. Try --help.&quot;; exit 1 ;;
esac
</pre>
Posted in 電腦科學, FreeBSD  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dennylin93.wordpress.com/989/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dennylin93.wordpress.com/989/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dennylin93.wordpress.com/989/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dennylin93.wordpress.com/989/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dennylin93.wordpress.com/989/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dennylin93.wordpress.com/989/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dennylin93.wordpress.com/989/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dennylin93.wordpress.com/989/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dennylin93.wordpress.com/989/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dennylin93.wordpress.com/989/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dennylin93.wordpress.com&blog=494489&post=989&subd=dennylin93&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dennylin93.wordpress.com/2009/10/25/a-script-for-simple-backups/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/38f82c510e5909b7870765269de1d630?s=96&#38;d=http%3A%2F%2Fa.wordpress.com%2Fi%2Fmu.gif" medium="image">
			<media:title type="html">dennylin93</media:title>
		</media:content>
	</item>
		<item>
		<title>在 FreeBSD 上設定 lagg</title>
		<link>http://dennylin93.wordpress.com/2009/10/23/configuring-lagg-on-freebsd/</link>
		<comments>http://dennylin93.wordpress.com/2009/10/23/configuring-lagg-on-freebsd/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 14:03:43 +0000</pubDate>
		<dc:creator>dennylin93</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[網路]]></category>
		<category><![CDATA[電腦科學]]></category>

		<guid isPermaLink="false">http://dennylin93.wordpress.com/?p=957</guid>
		<description><![CDATA[最星期買了兩條 Cat 6 的網路線（3 公尺，$130），想試試 lagg。在 FreeBSD 上，lagg 提供了 failover、fec（又稱 loadbalance）、lacp 等功能。比較常用的應該是 failover 與 lacp。

failover：這個模式可以設定主要與次要的網卡，當主要網卡無法使用時，會自動換成次要網卡
lacp：此模式會將流量分散在各個網卡當中，而硬體有變化時會自動偵測並更改設定

這兩個設定當中，lacp 比較麻煩一點，因為 switch 必須支援，也需要一些額外的設定。

要注意一下，以下的設定檔都是使用我個人的 IP、名稱、domain，使用前請先換一下。另外，要使用 lagg 必須先載入模組或將他編入核心當中。
載入模組：
# kldload if_lagg
若要開機時載入模組，將此行加入 /boot/loader.conf：

if_lagg_load=&#34;YES&#34;

編入核心的話，將此行加入 kernel 的設定檔：

device          lagg

在 /etc/rc.conf 中原本的網路設定：

defaultrouter=&#34;140.131.149.254&#34;
hostname=&#34;ns.hs.ntnu.edu.tw&#34;
ifconfig_bge0=&#34;inet 140.131.149.9 netmask 255.255.255.0&#34;

failover
使用 lagg 時，要製造出一個 lagg 介面，並且將要使用的網卡加入。這個設定是採 failover（defaultrouter、hostname 設定沒改變，所以不貼了）：

cloned_interfaces=&#34;lagg0&#34;
ifconfig_bge0=&#34;up&#34;
ifconfig_bge1=&#34;up&#34;
ifconfig_lagg0=&#34;laggproto failover laggport bge0 laggport bge1 140.131.149.9 netmask 255.255.255.0&#34;

首先，cloned_interfaces [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dennylin93.wordpress.com&blog=494489&post=957&subd=dennylin93&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>最星期買了兩條 Cat 6 的網路線（3 公尺，$130），想試試 <a href="http://www.freebsd.org/cgi/man.cgi?query=lagg"><code>lagg</code></a>。在 FreeBSD 上，<code>lagg</code> 提供了 <code>failover</code>、<code>fec</code>（又稱 <code>loadbalance</code>）、<code>lacp</code> 等功能。比較常用的應該是 <code>failover</code> 與 <code>lacp</code>。</p>
<ul>
<li><code>failover</code>：這個模式可以設定主要與次要的網卡，當主要網卡無法使用時，會自動換成次要網卡</li>
<li><code>lacp</code>：此模式會將流量分散在各個網卡當中，而硬體有變化時會自動偵測並更改設定</li>
</ul>
<p>這兩個設定當中，<code>lacp</code> 比較麻煩一點，因為 switch 必須支援，也需要一些額外的設定。</p>
<p><span id="more-957"></span></p>
<p style="border:1px solid #AAA;background-color:#F9F9F9;color:#000;padding:2px 5px;">要注意一下，以下的設定檔都是使用我個人的 IP、名稱、domain，使用前請先換一下。另外，要使用 <code>lagg</code> 必須先載入模組或將他編入核心當中。</p>
<p>載入模組：<br />
<code># kldload if_lagg</code></p>
<p>若要開機時載入模組，將此行加入 <code>/boot/loader.conf</code>：</p>
<pre class="brush: bash;">
if_lagg_load=&quot;YES&quot;
</pre>
<p>編入核心的話，將此行加入 kernel 的設定檔：</p>
<pre class="brush: bash;">
device          lagg
</pre>
<p>在 <code>/etc/rc.conf</code> 中原本的網路設定：</p>
<pre class="brush: bash;">
defaultrouter=&quot;140.131.149.254&quot;
hostname=&quot;ns.hs.ntnu.edu.tw&quot;
ifconfig_bge0=&quot;inet 140.131.149.9 netmask 255.255.255.0&quot;
</pre>
<h3><code>failover</code></h3>
<p>使用 <code>lagg</code> 時，要製造出一個 <code>lagg</code> 介面，並且將要使用的網卡加入。這個設定是採 <code>failover</code>（<code>defaultrouter</code>、<code>hostname</code> 設定沒改變，所以不貼了）：</p>
<pre class="brush: bash;">
cloned_interfaces=&quot;lagg0&quot;
ifconfig_bge0=&quot;up&quot;
ifconfig_bge1=&quot;up&quot;
ifconfig_lagg0=&quot;laggproto failover laggport bge0 laggport bge1 140.131.149.9 netmask 255.255.255.0&quot;
</pre>
<p>首先，<code>cloned_interfaces</code> 這行會產生 <code>lagg0</code> 的介面。接下來兩行會啟動 <code>bge0</code>、<code>bge1</code> 這兩張網卡。最後，<code>laggproto</code> 設定要使用 <code>failover</code> 模式，<code>laggport</code> 加入了網卡（第一張是主要的網卡），後面則是 IP 的設定。</p>
<p>重新啟動網路應該就可以了。</p>
<p>除了 <code>/etc/rc.conf</code> 之外，還可以用 <code>ifconfig</code> 這個指令設定 <code>lagg</code>。不過用 <code>ifconfig</code> 設定要加入 <code>/etc/rc.conf</code> 下次開機才會生效，否則關機後就消失了</p>
<p>用 <code>ifconfig</code> 要打比較多個指令：<br />
<code><br />
# ifconfig lagg0 create<br />
# ifconfig bge0 up<br />
# ifconfig bge1 up<br />
# ifconfig lagg0 laggproto failover laggport bge0 laggport bge1 140.131.149.9 netmask 255.255.255.0<br />
</code></p>
<p>第一行是產生 <code>lagg0</code> 這個介面，接下來是啟動兩個網卡，最後行看上面就知道了。其實設定跟 <code>/etc/rc.conf</code> 一模一樣。</p>
<h3><code>lacp</code></h3>
<p>LACP 這個協定並非每個 switch 都支援，所以使用前最好先看一下 switch 的說明文件。目前是用 D-Link 的 DGS-3100-24。</p>
<p>現在換 <code>lacp</code> 的設定了：</p>
<pre class="brush: bash;">
cloned_interfaces=&quot;lagg0&quot;
ifconfig_bge0=&quot;up&quot;
ifconfig_bge1=&quot;up&quot;
ifconfig_lagg0=&quot;laggproto lacp laggport bge0 laggport bge1 140.131.149.9 netmask 255.255.255.0&quot;
</pre>
<p>看了設定之後，可以發現 <code>lacp</code> 跟 <code>failover</code> 幾乎一模一樣，差別在 <code>laggproto</code> 的地方，必須將 <code>failover</code> 改成 <code>lacp</code>。不過，剛剛有提到，<code>lacp</code> 必須更改 switch 的設定，所以沒有這麼容易就完成了。</p>
<p>先用 telnet 或 SSH（我比較喜歡 SSH，因為有加密）登入 switch：<br />
<code><br />
# create link_aggregation group_id 1 type lacp<br />
# config link_aggregation group_id 1 ports 1,2<br />
</code></p>
<p>第一行是先產生一個 link aggregation 的群組，編碼設為 <code>1</code>，而模式則是 <code>lacp</code>。接下來就是設定編碼為 <code>1</code> 的群組，將 ports 設為 <code>1</code> 和 <code>2</code>（使用 switch 上 <code>1</code>、<code>2</code> 這兩個孔）。</p>
<p>現在 <code>lacp</code> 應該生效了（要先重新啟動網路）。</p>
<p>若要刪除 switch 上沒有用的群組，可以用這個指令：<br />
<code><br />
# delete link_aggregation group_id 1<br />
</code></p>
<p>這會刪除編碼為 <code>1</code> 的群組。</p>
<p>可以看一下設定完 <code>lagg</code> 的結果（<code>lacp</code>）：</p>
<pre># ifconfig lagg0
lagg0: flags=8843 metric 0 mtu 1500
        options=9b
        ether 00:16:36:08:72:f2
        inet 140.131.149.9 netmask 0xffffff00 broadcast 140.131.149.255
        media: Ethernet autoselect
        status: active
        laggproto lacp
        laggport: bge1 flags=1c&lt;ACTIVE,COLLECTING,DISTRIBUTING&gt;
        laggport: bge0 flags=1c&lt;ACTIVE,COLLECTING,DISTRIBUTING&gt;
</pre>
<p></p>
<p>要用 <code>ifconfig</code> 的話看 <code>failover</code> 的設定應該就會設了。</p>
<h3>防火牆</h3>
<p>最後，還有一點要注意。有時候防火牆規則會設定從哪些介面才可以進出，所以設定完 <code>lagg</code> 記得更新一下防火牆規則，要改的部分主要是 interface。我之前就是因為網路更新 PF 的規則，因而造成學校的 DNS 伺服器斷網好幾個小時（原本網卡是 <code>bge0</code>，但用 <code>lagg</code> 之後改為 <code>lagg0</code>）。</p>
Posted in 網路, 電腦科學, FreeBSD  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dennylin93.wordpress.com/957/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dennylin93.wordpress.com/957/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dennylin93.wordpress.com/957/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dennylin93.wordpress.com/957/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dennylin93.wordpress.com/957/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dennylin93.wordpress.com/957/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dennylin93.wordpress.com/957/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dennylin93.wordpress.com/957/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dennylin93.wordpress.com/957/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dennylin93.wordpress.com/957/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dennylin93.wordpress.com&blog=494489&post=957&subd=dennylin93&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dennylin93.wordpress.com/2009/10/23/configuring-lagg-on-freebsd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/38f82c510e5909b7870765269de1d630?s=96&#38;d=http%3A%2F%2Fa.wordpress.com%2Fi%2Fmu.gif" medium="image">
			<media:title type="html">dennylin93</media:title>
		</media:content>
	</item>
		<item>
		<title>灌 FreeBSD</title>
		<link>http://dennylin93.wordpress.com/2009/10/16/installing-freebsd/</link>
		<comments>http://dennylin93.wordpress.com/2009/10/16/installing-freebsd/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 14:10:56 +0000</pubDate>
		<dc:creator>dennylin93</dc:creator>
				<category><![CDATA[CNMC]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[硬體]]></category>
		<category><![CDATA[社團]]></category>
		<category><![CDATA[電腦科學]]></category>

		<guid isPermaLink="false">http://dennylin93.wordpress.com/?p=921</guid>
		<description><![CDATA[最近段考完了，我又灌新機器了。這次換 mail server，是一台 HP DL320 G5p，硬體還不錯，CPU、RAM 都很好，雖然硬碟是 SATA。不過對學校而言 SATA 綽綽有餘了。
CPU 是 Intel Xeon X3210 2.13 GHz，RAM 有 4 GB。目前有兩個 500 GB SATA 硬碟，不過下星期應該會變成 4 顆，因為我打算用 ZFS 建 RAID-Z。灌的作業系統是 FreeBSD 7.2-RELEASE amd64，可惜 8.0-RELEASE 還沒出來。
這次我將過程紀錄下來，不過沒有 screenshots，有空再補。這篇很長，因為有不少設定檔和 shell script。
首先當然從光碟開機，很遺憾，沒有成功。從光碟載入核心之後，跑一陣子，然後會出現 READ_BIG 的錯誤。Timeout 幾次後，一直都無法進入 sysinstall。我就這樣跟他耗了很久。最後，有想出解決的方案：

改用 DVD 灌
用 FTP 透過網路安裝
使用 PXE 開機
外接一個光碟機

其實我發現只有 amd64 的 CD 會出現這個問題（我有燒過 CD、驗證 ISO，所以是光碟機的問題）。i386 就有成功跑到 sysinstall。但因為我必須使用 ZFS，i386 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dennylin93.wordpress.com&blog=494489&post=921&subd=dennylin93&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>最近段考完了，我又灌新機器了。這次換 mail server，是一台 HP DL320 G5p，硬體還不錯，CPU、RAM 都很好，雖然硬碟是 SATA。不過對學校而言 SATA 綽綽有餘了。</p>
<p>CPU 是 Intel Xeon X3210 2.13 GHz，RAM 有 4 GB。目前有兩個 500 GB SATA 硬碟，不過下星期應該會變成 4 顆，因為我打算用 <a href="http://www.freebsd.org/doc/en/books/handbook/filesystems-zfs.html">ZFS</a> 建 RAID-Z。灌的作業系統是 <code>FreeBSD 7.2-RELEASE amd64</code>，可惜 <code>8.0-RELEASE</code> 還沒出來。</p>
<p>這次我將過程紀錄下來，不過沒有 screenshots，有空再補。這篇很長，因為有不少設定檔和 shell script。</p>
<p>首先當然從光碟開機，很遺憾，沒有成功。從光碟載入核心之後，跑一陣子，然後會出現 <code>READ_BIG</code> 的錯誤。Timeout 幾次後，一直都無法進入 <code>sysinstall</code>。我就這樣跟他耗了很久。最後，有想出解決的方案：</p>
<ul>
<li>改用 DVD 灌</li>
<li>用 FTP 透過網路安裝</li>
<li>使用 PXE 開機</li>
<li>外接一個光碟機</li>
</ul>
<p>其實我發現只有 <code>amd64</code> 的 CD 會出現這個問題（我有燒過 CD、驗證 ISO，所以是光碟機的問題）。<code>i386</code> 就有成功跑到 <code>sysinstall</code>。但因為我必須使用 ZFS，<code>i386</code> 不是選擇之一。</p>
<p>第一個方案大概最方便，我最後也是用 DVD 灌成功的。第二個嗎，等 kernel 載入 RAM 之後趕快退出 CD，然後透過 FTP 安裝。第三個方案很麻煩，所以直接跳過。第四個方案要注意一下 BIOS 設定。</p>
<p>另外因為要用 ZFS，所以 <a href="http://en.wikipedia.org/wiki/RAID">RAID</a> controller 沒有設定。只是用 <a href="http://en.wikipedia.org/wiki/Non-RAID_drive_architectures#JBOD">JBOD</a> 罷了。況且他功能也不強，好像只能做 <a href="http://en.wikipedia.org/wiki/Standard_RAID_levels">RAID 1、RAID 0</a>。</p>
<p><span id="more-921"></span></p>
<h3><strong><code>sysinstall</code></strong></h3>
<p>開啟 <code>sysinstall</code> 之後：</p>
<ol>
<li>國家選 <code>Taiwan</code>（可以直接按 <code>Page Up</code>+<code>Down</code>）</li>
<li><code>Keymap</code> 當然是 USA ISO</li>
<li><code>Custom</code> 大概是最方便的安裝方式</li>
</ol>
<p>現在開始設定了：</p>
<ol>
<li><code>Partition</code> 時我只選一顆硬碟（其他留給 ZFS），然後 Use Entire Disk</li>
<li>Labels 照慣例割，<code>/</code> 1 GB，<code>swap</code> 兩倍的 RAM（這還是我首次割 8 GB 的 <code>swap</code>），<code>/var</code> 紀錄檔、資料庫可以大一點 100 GB，<code>/tmp</code> 5 GB 應該夠用，<code>/usr</code> 送他 20 GB，剩下都給 <code>/home</code></li>
<li>接下來 Distributions，以前都選 <code>Developer</code>，不過現在已經改成 <code>Minimal</code> 了，因為這樣就夠了，不需要 <code>proflibs</code> 這些東西，<code>man</code>、<code>info</code> 可以考慮，<code>src</code>、<code>ports</code> 灌好後再從網路抓，因為從光碟複製很慢</li>
<li><code>Media</code> 當然是 <code>CD/DVD</code>，除非有其他需求</li>
<li>確認無誤後 <code>Commit</code>！</li>
</ol>
<p>通常我 <code>/var</code> 沒割這麼大（大約 5 GB ~ 20 GB），但因為這次有 500 GB 的硬碟，想說 log 檔可以多留一些。</p>
<p>這樣就可以睜大眼睛看 FreeBSD 灌好了，大概 2 分鐘以內就會好了（我發現 DVD 速度比 CD 快）。完成後通常都會直接回 menu 來設定一些東西：</p>
<ol>
<li>回 <code>sysinstall</code> 到 <code>Configure</code></li>
<li>第一個設定的當然是 <code>Root Password</code>！</li>
<li>接下來我會設 <code>Console/Repeat</code>，把速度調成「<code>Fast</code>」，這樣鍵盤反應比較快</li>
<li>快好了，把 <code>Time Zone</code> 設成 <code>Asia/Taiwan</code>，UTC clock 選 No，CST 選 Yes</li>
<li>最後設定 <code>Networking/Interfaces</code>，習慣上都不用 IPv6、DHCP</li>
</ol>
<h3><strong>設定</strong></h3>
<p>大致上都完成了，重新開機後即可登入。第一件事通常是先把防火牆（我都用  PF）設好，然後啟動 SSH，臨時的 <code>/etc/pf.conf</code> 長成這樣：</p>
<pre class="brush: bash;">
table  persist { 140.131.149.0/24 218.35.1.105 }
set skip on lo0
block return in all
pass in proto icmp all keep state
pass in proto tcp from &lt;trusted&gt; to any port ssh flags S/SA keep state
pass out all flags S/SA keep state
</pre>
<p>雖然 <code>flags S/SA keep state</code> OpenBSD 4.1 以後的版本會自動加，但標上去總是比較明顯，而 <code>flags S/SA</code> 只有 TCP 有效。</p>
<p>其實灌好之後，可能會發現系統時鐘不準確（像我灌完就發現他還停留在 2008 年），可以先下 <code># ntpdate -b time.stdtime.gov.tw</code> 把時間調整一下，否則時間不對可能會出事，像是 ports 無法成功安裝。</p>
<p>到這裡先抓一下使用者的設定檔會比較方便：<br />
我的 <code>~/.cshrc</code>：</p>
<pre class="brush: bash;">
alias h         history 25
alias j         jobs -l
alias la        ls -A
alias lf        ls -FA
alias ll        ls -lA
alias lh        ll -h
alias ls        ls -FGI
alias .         ls
alias ..        cd ../
alias s         screen
alias r         screen -r
alias vi        vim

set autolist

setenv  LESSCHARDEF &quot;8bcccbcc18b95..&quot;

setenv  LSCOLORS &quot;ExFxcxdxbxegedabagacad&quot;

setenv  TERMCAP 'xterm|xterm-color:Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm:tc=xterm-xfree86:'

setenv  LANG en_US.UTF-8
setenv  LC_CTYPE en_US.UTF-8
setenv  LC_COLLATE en_US.UTF-8
setenv  LC_TIME en_US.UTF-8
setenv  LC_NUMERIC en_US.UTF-8
setenv  LC_MONETARY en_US.UTF-8
setenv  LC_MESSAGES en_US.UTF-8
setenv  LC_ALL en_US.UTF-8

umask 22

set path = (/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin /usr/X11R6/ bin $HOME/bin)

setenv  EDITOR  vim
setenv  PAGER   more
setenv  BLOCKSIZE       K

if ($?prompt) then
        set prompt = &quot;%B[%n@%m %~]%# &quot;
        set filec
        set history = 5000
        set savehist = 5000
        set mail = (/var/mail/$USER)
        if ( $?tcsh ) then
                bindkey &quot;^W&quot; backward-delete-word
                bindkey -k up history-search-backward
                bindkey -k down history-search-forward
        endif
endif
</pre>
<p>還有 screen 的設定檔 <code>~/.screenrc</code>：</p>
<pre class="brush: bash;">
# Status line
caption always &quot;%{.KW} %-w%{.mW}[%n] %t%{.KW}%+w&quot;
hardstatus alwayslastline &quot;%{R}[ %{w}%1` %{R}]%=%{M}%e %{G}%H %{Y} %c %{R} %Y/%m/%d %{K} Load:  %l %{w}&quot;

# Colours
termcapinfo xterm &quot;Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm&quot;
term xterm

# Hotkeys for resizing
bind = resize =
bind + resize +1
bind - resize -1
bind _ resize max 

# Hotkets for switching
bindkey 33[D prev
bindkey 33[C next

altscreen on # erase screen when quit apps
defutf8 on
defc1 off
defflow on
vbell on
startup_message off
shell $SHELL
defencoding utf8
bind b encoding big5 utf8
bind u encoding utf8 utf8
defbce on # erase background with current bg color
shelltitle &quot;---&quot;
defscrollback 10000
</pre>
<p>目前我 Vim 的設定檔有點亂，等正理完之後再貼。其實這些設定檔大部分都是在網路上抄來抄去的。</p>
<p>接下來編輯 <code>/boot/loader.conf</code>：</p>
<pre class="brush: bash;">
autoboot_delay=&quot;5&quot;
</pre>
<p>這個檔案大部分是視需求而改，像要用 ZFS 的話可能就要做微調，有些程式需要載入特殊的模組。</p>
<p>因為每天都會有 <code>security run output</code>、<code>daily run output</code>，所以我會 alias 一下 <code>root</code> 的信箱，在 <code>/etc/mail/aliases</code> 裡加上（記得換成自己的 email）：</p>
<pre class="brush: bash;">
root: dennylin93@cnmc32.hs.ntnu.edu.tw
</pre>
<p>記得下 <code># newaliases</code> 資料庫才會被更新。</p>
<p>改 <code>/etc/auth.conf</code>，把 MD5 替換成 Blowfish：</p>
<pre class="brush: bash;">
crypt_default = blf
</pre>
<p>同樣的，編輯 <code>/etc/login.conf</code>，找到這行：</p>
<pre class="brush: bash;">
:passwd_format=md5:\
</pre>
<p>改成（改完要下 <code># cap_mkdb /etc/login.conf</code> 更新資料庫）：</p>
<pre class="brush: bash;">
:passwd_format=blf:\
</pre>
<p>接下來，設定 <code>/etc/make.conf：</p>
<pre class="brush: bash;">
# /etc/make.conf

# Set CPUTYPE for compiler

# i386:
# nocona = core = core2 -&gt; prescott
# amd64
# prescott = core2 -&gt;  nocona

# Pentium 4: pentium4
# Pentium 4 (Prescott): nocona
# Pentium D: nocona
# Core Duo, Pentium Dual-Core T20XX/T21XX: prescott
# Core 2 Duo/Quad, Pentium Dual-Core T23XX+/EXXXX: nocona
# i7: nocona
# Xeon w/o EM64T: pentium4
# Xeon w/EM64T: nocona
# Note: For Xeon, $ dmesg | grep LM

CPUTYPE?= nocona

# Update and mirrors

SUP_UPDATE=
SUP=            /usr/bin/csup
SUPFLAGS=       -g -L 2
SUPHOST=        cvsup.tw.freebsd.org
SUPFILE=        /usr/share/examples/cvsup/standard-supfile
PORTSSUPFILE=   /usr/share/examples/cvsup/ports-supfile

MASTER_SITE_BACKUP?= \
http://ftp.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/ \
ftp://ftp.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/ \
ftp://ftp2.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/ \
ftp://ftp4.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/ \
${MASTER_SITES:S/%SUBDIR%/${MASTER_SITE_SUBDIR}/}

MASTER_SITE_OVERRIDE?= ${MASTER_SITE_BACKUP}

# Kernel

#MODULES_OVERRIDE=

# Ports

WITHOUT_X11= yes
</pre>
<p>CPUTYPE 不確定可以不設，或者設成 <code>native</code>（<a href="http://blog.gslin.org/">gslin</a> 提供的），讓 GCC 自動偵測（需要 GCC 4.2 以後的版本才資源）。</p>
<p><code>MASTER_SITE</code> 設離家進一點的，這樣速度會快很多。</p>
<p>至於 <code>MODULES_OVERRIDE</code> 和 <code>WITHOUT_X11= yes</code> 視需求而定。編 kernel 有設 <code>MODULES_OVERRIDE</code> 會節省不少時間，不過要很確定哪些 modules 有用到。像我的 desktop 設 <code>MODULES_OVERRIDE= acpi linux linprocfs zfs opensolaris sound/sound sound/driver/hda sound/driver/ad1816 sem aio ata/atapicam</code>。</p>
<p><code>/etc/src.conf</code> 裡可以設定編譯 world 的時候要安裝哪些東西，我通常有：</p>
<pre class="brush: bash;">
WITHOUT_ATM= yes
WITHOUT_BLUETOOTH= yes
WITHOUT_DICT= yes
WITHOUT_GAMES= yes
WITHOUT_HTML= yes
WITHOUT_I4B= yes
WITHOUT_IPFILTER= yes
WITHOUT_IPX= yes
WITHOUT_PROFILE= yes
WITHOUT_RCMDS= yes
WITHOUT_WPA_SUPPLICANT_EAPOL= yes
</pre>
<p>這些視需求而定：</p>
<pre class="brush: bash;">
WITHOUT_EXAMPLES= yes
WITHOUT_INFO= yes
WITHOUT_SHAREDOCS= yes
WITHOUT_MAN= yes
WITHOUT_ZFS= yes
</pre>
<p>還有一些選項我不太確定放了會不會炸掉，所以就沒放。</p>
<p>把這這個加入 <code>/etc/periodic.conf</code>（無此檔的話請新增）：</p>
<pre class="brush: bash;">
weekly_status_pkg_enable=&quot;YES&quot;
</pre>
<p><code>/etc/resolv.conf</code> 可以改一下：</p>
<pre class="brush: bash;">
domain  hs.ntnu.edu.tw
nameserver      140.131.149.9
nameserver      140.131.149.1
</pre>
<p>我不太建議用 HiNet 的 DNS 伺服器，因為前幾個月發現他怪怪的，有些 domain 其他 server 查的出來，他卻查不出來（或者速度非常慢）。</p>
<p>如果是當 server 或 workstation 長時間開著的話可以考慮用 NTP 調整時間（<code>/etc/ntp.conf</code>）：</p>
<pre class="brush: bash;">
server time.stdtime.gov.tw prefer
server tick.stdtime.gov.tw prefer
server tock.stdtime.gov.tw prefer
server clock.stdtime.gov.tw
server watch.stdtime.gov.tw
</pre>
<p><code>/etc/rc.conf</code> 做一下基本設定，比較特殊的選項等灌好 ports 之後再加：</p>
<pre class="brush: bash;">
defaultrouter=&quot;140.131.149.254&quot;
hostname=&quot;cnmc.hs.ntnu.edu.tw&quot;
ifconfig_bge0=&quot;inet 140.131.149.32  netmask 255.255.255.0&quot;

keymap=&quot;us.iso&quot;
keyrate=&quot;fast&quot;

# Firewall
pf_enable=&quot;YES&quot;
pflog_enable=&quot;YES&quot;
pflog_logfile=&quot;/var/log/pflog/pflog&quot;

# Daemons
usbd_enable=&quot;YES&quot;

sshd_enable=&quot;YES&quot;

ntpd_enable=&quot;YES&quot;

# Logging &amp; Monitoring
#accounting_enable=&quot;YES&quot;
syslogd_enable=&quot;YES&quot;
syslogd_flags=&quot;-ss&quot;

# Clear /tmp
clear_tmp_enable=&quot;YES&quot;
</pre>
<p>之前有放 <code>powerd</code>，但是我懷疑他是造成「spin lock held too long」而 panic 的原因，所以就先拿掉了。<code>accounting_enable="YES"</code> 目前也沒有用到，所以先註解掉。</p>
<p>有啟動 OpenSSH 的話，可以在 <code>/etc/ssh/sshd_config</code> 裡加入這行：</p>
<pre class="brush: bash;">
VersionAddendum
</pre>
<p>這樣 OpenSSH 不會顯示 FreeBSD 的資訊（雖然說版應該還是猜的出來）。</p>
<p><code>/etc/motd</code> 可以設一下，雖然和系統運作沒什麼關係。我大部分都用 <a href="http://www.freshports.org/misc/figlet"><code>misc/figlet</code></a> 產身字然後貼上去。</p>
<p>基本的設定大概就這樣吧，剩下的工做就是更新 <code>/etc/pf.conf</code>，用 <code>CVSup</code> 抓 <code>src</code>、<code>ports</code>，然後重編 world 和 kernel。</p>
<h3><strong>Shell scripts</strong></h3>
<p>一個小小的 shell script 來自動化安裝 ports 的過程（是我自己寫的所以可能還有一些 bugs）：</p>
<pre class="brush: bash;">
#!/bin/sh

CAT=/bin/cat
CWD=/bin/pwd
DATE=/bin/date
GREP=/usr/bin/grep
HOSTNAME=/bin/hostname
MAKE=/usr/bin/make
PKG_INFO=/usr/sbin/pkg_info
RM=/bin/rm
SED=/usr/bin/sed

PREFIX=/usr/ports
DIR=`$CWD`
LOG=ports.log
TMP=ports.tmp

$CAT &gt; $LOG &lt;&lt; EOF
EOF

if [ -f ports ]; then
	echo &quot;Initializing...&quot;
	$PKG_INFO -qoa &gt; $DIR/$TMP
else
	echo &quot;Failure! Unable to read ports file&quot;
	echo &quot;`$DATE '+%b %d %H:%M:%S'` `$HOSTNAME -s` $0: Unable to read ports file!&quot; &gt;&gt; $CWD/$LOG
	exit 1
fi

for port in `$CAT ports`
do
	$GREP &quot;^$port$&quot; $DIR/$TMP &gt; /dev/null
	if [ $? -eq 0 ]; then
		echo &quot;$port is already installed! Skipping...&quot;
		echo &quot;`$DATE '+%b %d %H:%M:%S'` `$HOSTNAME -s` $port: Already installed!&quot; &gt;&gt; $DIR/$LOG
	else
		echo &quot;Installing $port&quot;
		cd $PREFIX/$port &amp;&amp; $MAKE install clean
		if [ $? -eq 0 ]; then
			echo &quot;$port installed successfully!&quot;
			echo &quot;`$DATE '+%b %d %H:%M:%S'` `$HOSTNAME -s` $port: Installed successfully.&quot; &gt;&gt; $DIR/$LOG
		else
			echo &quot;Installation of $port failed!&quot;
			echo &quot;`$DATE '+%b %d %H:%M:%S'` `$HOSTNAME -s` $port: Installation failed!&quot; &gt;&gt; $DIR/$LOG
		fi
	fi
done

$RM $DIR/$TMP
</pre>
<p>Script 會去讀一個名為 ports 的純文字檔，一行一個 port，像：</p>
<pre class="brush: bash;">
editors/vim-lite
ftp/wget
net-mgmt/iftop
net/nload
net/rsync
ports-mgmt/pkg_cutleaves
ports-mgmt/pkg_tree
ports-mgmt/portaudit
ports-mgmt/portconf
ports-mgmt/portmaster
security/sshguard-pf
security/sudo
sysutils/lsof
sysutils/munin-node
sysutils/pftop
sysutils/screen
</pre>
<p>因為之前改 kernel 的設定改到瘋掉，所以也寫了一個 shell script 來加快過程：</p>
<pre class="brush: bash;">
#!/bin/sh

CAT=/bin/cat
EGREP=/usr/bin/egrep

echo &quot;Bus support:&quot;
$CAT /var/run/dmesg.boot | $EGREP &quot;^(eisa|pci)[a-z]*[0-9]+&quot;
echo

echo &quot;Floppy drives:&quot;
$CAT /var/run/dmesg.boot | $EGREP &quot;^fdc[0-9]+&quot;
echo

echo &quot;SCSI controllers:&quot;
$CAT /var/run/dmesg.boot | $EGREP &quot;^(ahb|ahc|ahd|amd|hptiop|isp|ispfw|mpt|ncr|sym|trm|adv|adw|aha|aic|bt|ncv|nsp|nsp)[0-9]+&quot;
echo

echo &quot;RAID controllers (SCSI):&quot;
$CAT /var/run/dmesg.boot | $EGREP &quot;^(amr|arcmsr|asr|ciss|dpt|hptmv|hptrr|iir|ips|mly|twa)[0-9]+&quot;
echo

echo &quot;RAID controllers:&quot;
$CAT /var/run/dmesg.boot | $EGREP &quot;^(aac|aacp|ida|mfi|mlx|pst|twe)[0-9]+&quot;
echo

echo &quot;AGP chipsets:&quot;
$CAT /var/run/dmesg.boot | $EGREP &quot;^agp[0-9]+&quot;
echo

echo &quot;PCMCIA support:&quot;
$CAT /var/run/dmesg.boot | $EGREP &quot;^(cbb|pccard|cardbus)&quot;
echo

echo &quot;Serial ports:&quot;
$CAT /var/run/dmesg.boot | $EGREP &quot;^(sio|uart)[0-9]+&quot;
echo

echo &quot;Printers:&quot;
$CAT /var/run/dmesg.boot | $EGREP &quot;^(lpt|ulpt)[0-9]+&quot;
echo

echo &quot;PCI ethernet NICs:&quot;
$CAT /var/run/dmesg.boot | $EGREP &quot;^(de|em|igb|ixgb|le|txp|vx)[0-9]+&quot;
echo

echo &quot;PCI ethernet NICs (MII bus):&quot;
$CAT /var/run/dmesg.boot | $EGREP &quot;^(age|ale|bce|bfe|bge|dc|et|fxp|jme|lge|msk|nfe|nge|nve|pcn|re|rl|sf|sis|sk|ste|stge|ti|tl|tx|vge|vr|wb|xl)[0-9]+&quot;
echo

echo &quot;ISA ethernet NICs:&quot;
$CAT /var/run/dmesg.boot | $EGREP &quot;^(cs|ed|ex|ep|fe|ie|sn|xe)[0-9]+&quot;
echo

echo &quot;Wireless NICs:&quot;
$CAT /var/run/dmesg.boot | $EGREP &quot;^(wlan|an|ath|awi|ral|wi|wl)[0-9]+&quot;
echo
</pre>
<p>這個 script 會從 <code>dmesg</code> 偵測 PCI、SCSI、RAID、AGP、PCMCIA、NIC 的裝置（建議不要太相信我的 script，最好還是要檢查一下自己的設定）。這個 script FreeBSD 7.2 應該沒問題，其他版本可能會出事。</p>
<h3><strong><code>glabel</code></strong></h3>
<p>其實 <a href="http://www.freebsd.org/cgi/man.cgi?glabel"><code>glabel</code></a> 是一個非常有用的程式。硬體在電腦上一定會有編號，而當你從一個 port 改成另一個 port 名稱可能會變。而硬碟的話，我們可以用 <code>glabel</code> 來解決這個問題。他會將一個 label 寫入硬碟當中，所以不論換到哪一個 port，名稱都還會在，不會像 <code>/dev/ad0</code>、<code>/dev/ad1</code> 一直變來變去。</p>
<p>至於怎麼使用呢？首先要重開機進入「single user mode」，因為要卸載完才能 label。</p>
<p>重新開機後，即可開始下：<code># glabel label -v name dev</code>，<code>-v</code> 會增加 output。</p>
<p>我按照 <code>/etc/fstab</code> 裡的順序 label：<br />
<code># glabel label -v swap /dev/ad4s1b</code><br />
<code># glabel label -v root /dev/ad4s1a</code><br />
<code># glabel label -v home /dev/ad4s1g</code><br />
<code># glabel label -v tmp /dev/ad4s1e</code><br />
<code># glabel label -v usr /dev/ad4s1f</code><br />
<code># glabel label -v var /dev/ad4s1d</code></p>
<p>標完後可以用 <code># glabel status</code> 或 <code># glabel list</code> 看結果。</p>
<p>這樣就完成 label 的動做了。把 <code>/etc/fstab</code> 修一下，下次開機就會開始用 glabel 的標籤來開機了：</p>
<pre class="brush: bash;">
# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/label/swap         none            swap    sw              0       0
/dev/label/root         /               ufs     rw              1       1
/dev/label/home         /home           ufs     rw              2       2
/dev/label/tmp          /tmp            ufs     rw              2       2
/dev/label/usr          /usr            ufs     rw              2       2
/dev/label/var          /var            ufs     rw              2       2
/dev/acd0               /cdrom          cd9660  ro,noauto       0       0
</pre>
<p>這樣大致上完成基本設定了，ZFS 和 ports 的設定我再貼另外一篇，因為這篇夠長了。</p>
Posted in CNMC, 硬體, 社團, 電腦科學, FreeBSD  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dennylin93.wordpress.com/921/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dennylin93.wordpress.com/921/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dennylin93.wordpress.com/921/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dennylin93.wordpress.com/921/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dennylin93.wordpress.com/921/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dennylin93.wordpress.com/921/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dennylin93.wordpress.com/921/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dennylin93.wordpress.com/921/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dennylin93.wordpress.com/921/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dennylin93.wordpress.com/921/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dennylin93.wordpress.com&blog=494489&post=921&subd=dennylin93&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dennylin93.wordpress.com/2009/10/16/installing-freebsd/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/38f82c510e5909b7870765269de1d630?s=96&#38;d=http%3A%2F%2Fa.wordpress.com%2Fi%2Fmu.gif" medium="image">
			<media:title type="html">dennylin93</media:title>
		</media:content>
	</item>
		<item>
		<title>PuTTY 設定</title>
		<link>http://dennylin93.wordpress.com/2009/10/09/putty-settings/</link>
		<comments>http://dennylin93.wordpress.com/2009/10/09/putty-settings/#comments</comments>
		<pubDate>Fri, 09 Oct 2009 13:20:32 +0000</pubDate>
		<dc:creator>dennylin93</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[網路]]></category>
		<category><![CDATA[開放源碼]]></category>
		<category><![CDATA[電腦科學]]></category>

		<guid isPermaLink="false">http://dennylin93.wordpress.com/?p=917</guid>
		<description><![CDATA[雖然在家裡已經改用 FreeBSD 當 desktop，terminal 都用 ROXTerm，但學校還是會碰到 Windows，所以 SSH 都是靠 PuTTY。把一些常用的設定紀錄下來。
通常用的設定是將 Window/Appearance 底下把字體設成「細明體」、大小設為「18」，然後選 ClearType。細明體是為了中文，字體大小是因為我長時間盯著螢幕，字大一點眼睛比較不會累。最後 ClearType 會讓字變得好看一點。
接下來就把 Window/Translation 的編碼設成 UTF-8。Big5 已經沒在用了。
Connection/Data 裡設一下 username，以後登入就不用每次打了。
另外，要鑽防火牆的話 Connection/Proxy 或 Connection/SSH/Tunnels 要改一下。Connection/SSH/X11 有用到再啟動。
設完別忘了 save 就好了。
PuTTY Tray 也可以試試看。
星期一就要段考了，最近考試好多。今天社課展示了一下 screen、Vim、mutt、ZFS 的功能。
Posted in 網路, 開放源碼, 電腦科學, FreeBSD, Linux       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dennylin93.wordpress.com&blog=494489&post=917&subd=dennylin93&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>雖然在家裡已經改用 <a href="http://www.freebsd.org/">FreeBSD</a> 當 desktop，terminal 都用 ROXTerm，但學校還是會碰到 Windows，所以 SSH 都是靠 <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/">PuTTY</a>。把一些常用的設定紀錄下來。</p>
<p>通常用的設定是將 <code>Window/Appearance</code> 底下把字體設成「細明體」、大小設為「18」，然後選 ClearType。細明體是為了中文，字體大小是因為我長時間盯著螢幕，字大一點眼睛比較不會累。最後 ClearType 會讓字變得好看一點。</p>
<div id="attachment_1050" class="wp-caption aligncenter" style="width: 467px"><a href="http://dennylin93.files.wordpress.com/2009/10/putty_window-appearance.png"><img src="http://dennylin93.files.wordpress.com/2009/10/putty_window-appearance.png?w=457&#038;h=442" alt="putty_window-appearance" title="putty_window-appearance" width="457" height="442" class="size-full wp-image-1050" /></a><p class="wp-caption-text">Window/Appearance</p></div>
<p>接下來就把 <code>Window/Translation</code> 的編碼設成 UTF-8。Big5 已經沒在用了。</p>
<div id="attachment_1051" class="wp-caption aligncenter" style="width: 467px"><a href="http://dennylin93.files.wordpress.com/2009/10/putty_window-translation.png"><img src="http://dennylin93.files.wordpress.com/2009/10/putty_window-translation.png?w=457&#038;h=442" alt="putty_window-translation" title="putty_window-translation" width="457" height="442" class="size-full wp-image-1051" /></a><p class="wp-caption-text">Window/Translation</p></div>
<p><code>Connection/Data</code> 裡設一下 username，以後登入就不用每次打了。</p>
<div id="attachment_1052" class="wp-caption aligncenter" style="width: 467px"><a href="http://dennylin93.files.wordpress.com/2009/10/putty_connection-data.png"><img src="http://dennylin93.files.wordpress.com/2009/10/putty_connection-data.png?w=457&#038;h=442" alt="putty_connection-data" title="putty_connection-data" width="457" height="442" class="size-full wp-image-1052" /></a><p class="wp-caption-text">Connection/Data</p></div>
<p>另外，要鑽防火牆的話 <code>Connection/Proxy</code> 或 <code>Connection/SSH/Tunnels</code> 要改一下。<code>Connection/SSH/X11</code> 有用到再啟動。</p>
<p>設完別忘了 save 就好了。</p>
<p><a href="http://haanstra.eu/putty/">PuTTY Tray</a> 也可以試試看。</p>
<p>星期一就要段考了，最近考試好多。今天社課展示了一下 screen、Vim、mutt、ZFS 的功能。</p>
Posted in 網路, 開放源碼, 電腦科學, FreeBSD, Linux  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dennylin93.wordpress.com/917/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dennylin93.wordpress.com/917/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dennylin93.wordpress.com/917/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dennylin93.wordpress.com/917/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dennylin93.wordpress.com/917/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dennylin93.wordpress.com/917/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dennylin93.wordpress.com/917/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dennylin93.wordpress.com/917/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dennylin93.wordpress.com/917/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dennylin93.wordpress.com/917/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dennylin93.wordpress.com&blog=494489&post=917&subd=dennylin93&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dennylin93.wordpress.com/2009/10/09/putty-settings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/38f82c510e5909b7870765269de1d630?s=96&#38;d=http%3A%2F%2Fa.wordpress.com%2Fi%2Fmu.gif" medium="image">
			<media:title type="html">dennylin93</media:title>
		</media:content>

		<media:content url="http://dennylin93.files.wordpress.com/2009/10/putty_window-appearance.png" medium="image">
			<media:title type="html">putty_window-appearance</media:title>
		</media:content>

		<media:content url="http://dennylin93.files.wordpress.com/2009/10/putty_window-translation.png" medium="image">
			<media:title type="html">putty_window-translation</media:title>
		</media:content>

		<media:content url="http://dennylin93.files.wordpress.com/2009/10/putty_connection-data.png" medium="image">
			<media:title type="html">putty_connection-data</media:title>
		</media:content>
	</item>
		<item>
		<title>學習 FreeBSD</title>
		<link>http://dennylin93.wordpress.com/2009/10/02/learning-freebsd/</link>
		<comments>http://dennylin93.wordpress.com/2009/10/02/learning-freebsd/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 12:15:21 +0000</pubDate>
		<dc:creator>dennylin93</dc:creator>
				<category><![CDATA[CNMC]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Ports]]></category>
		<category><![CDATA[社團]]></category>
		<category><![CDATA[電腦科學]]></category>

		<guid isPermaLink="false">http://dennylin93.wordpress.com/?p=908</guid>
		<description><![CDATA[因為社課的關係，所以整理了這些資料。過去幾年中一直都在接觸自由軟體，而最近一整年幾乎都環繞在 FreeBSD 周圍。因此，我整理了一些我看過且覺得不錯的文章、說明文件。
一開始學習 FreeBSD 可能會有點不習慣 console 和作業系統。原因是 Unix 的理念是「keep it simple」。作業系統只會灌必備的東西，其他的都留給使用者。最大的好處是彈性非常大、且不會浪費系統資源、穩定度與效能也超出其他作業系統很多。
第一個當然是 FreeBSD 的使用手冊。從最基本一步一步的安裝到進階的網路設定、網路服務、資訊安全、虛擬化、RAID、除錯都有完整的說明。FreeBSD Handbook 同時也是我在網路上看過最好也是最完整的說明文件。其他 open source projects 和 proprietary 方案都無法與之相比。
使用手冊我強烈較建議看英文版，雖然有中文版。
FreeBSD Handbook：英文、中文。
下面有一些文件、投影片連結可能有問題，這頁有最新的連結。
我個人建議的學習路線：

先看完使用手冊 1、2 章，並且將一台電腦灌好，灌一次大概不會記得，建議陸續灌個 5~10 次，我也寫了一篇灌 FreeBSD
看使用手冊第 3 章熟悉一下 FreeBSD 的環境
接下來看 For People New to Both FreeBSD and UNIX 背一背基本指令，vi 可以先不學
看一下 FreeBSD 概論 當複習
之後看使用手冊第 4 章和 FreeBSD Ports 基礎篇，學會灌軟體
可以開始學 vi 和 Vim 了
學會更新和設定一些 ports
先上一下網路概論，接下來就可以開始架設網路服務
先學會架設 FTP [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dennylin93.wordpress.com&blog=494489&post=908&subd=dennylin93&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>因為社課的關係，所以整理了這些資料。過去幾年中一直都在接觸自由軟體，而最近一整年幾乎都環繞在 FreeBSD 周圍。因此，我整理了一些我看過且覺得不錯的文章、說明文件。</p>
<p>一開始學習 FreeBSD 可能會有點不習慣 console 和作業系統。原因是 Unix 的理念是「keep it simple」。作業系統只會灌必備的東西，其他的都留給使用者。最大的好處是彈性<strong>非常大</strong>、且不會浪費系統資源、穩定度與效能也超出其他作業系統很多。</p>
<p>第一個當然是 FreeBSD 的使用手冊。從最基本一步一步的安裝到進階的網路設定、網路服務、資訊安全、虛擬化、RAID、除錯都有完整的說明。FreeBSD Handbook 同時也是我在網路上看過最好也是最完整的說明文件。其他 open source projects 和 proprietary 方案都無法與之相比。</p>
<p>使用手冊我強烈較建議看英文版，雖然有中文版。</p>
<p>FreeBSD Handbook：<a href="http://www.freebsd.org/doc/en/books/handbook/">英文</a>、<a href="http://www.freebsd.org/doc/zh_TW/books/handbook/">中文</a>。</p>
<p style="border:1px solid #AAA;background-color:#F9F9F9;color:#000;padding:2px 5px;"><strong>下面有一些文件、投影片連結可能有問題，<a href="http://dennylin93.wordpress.com/freebsd/">這頁</a>有最新的連結。</strong></p>
<p>我個人建議的學習路線：</p>
<ol>
<li>先看完使用手冊 1、2 章，並且將一台電腦灌好，灌一次大概不會記得，建議陸續灌個 5~10 次，我也寫了一篇<a href="http://dennylin93.wordpress.com/2009/10/16/installing-freebsd/">灌 FreeBSD</a></li>
<li>看使用手冊第 3 章熟悉一下 FreeBSD 的環境</li>
<li>接下來看 <a href="http://www.freebsd.org/doc/en/articles/new-users/">For People New to Both FreeBSD and UNIX</a> 背一背基本指令，vi 可以先不學</li>
<li>看一下 <a href="http://cnmc32.hs.ntnu.edu.tw/~dennylin93/Documents/FreeBSD/FreeBSD_Overview.pdf">FreeBSD 概論</a> 當複習</li>
<li>之後看使用手冊第 4 章和 <a href="http://docs.google.com/present/view?skipauth=true&amp;id=df5vc9xw_5pjzgnmnq">FreeBSD Ports 基礎篇</a>，學會灌軟體</li>
<li>可以開始學 vi 和 Vim 了</li>
<li>學會更新和設定一些 ports</li>
<li>先上一下<a href="http://security-hole.info/~dennylin93/Documents/FreeBSD/Introduction_to_the_Internet.pdf">網路概論</a>，接下來就可以開始架設網路服務</li>
<li>先學會架設 <a href="http://security-hole.info/~dennylin93/Documents/FreeBSD/FTP.pdf">FTP</a> 伺服器（Pure-FTPd 設定比 Apache 淺顯易懂，但 FTP 協定比較複雜一點）</li>
<li>Apache + PHP + MySQL（理論上目前只會用到 Apache，PHP、SQL 需要一段時間才能學會）</li>
</ol>
<p>暫時先這樣。之後再補齊網路服務、作業系統核心、world 以及其他進階設定的部分。</p>
<p>另外，可以看看交大的「<a href="http://sysadm.cs.nctu.edu.tw/">計算機系統管理</a>」、「<a href="http://netadm.cs.nctu.edu.tw/">計算機網路管理</a>」。這兩個都不錯，不過最後先熟悉 FreeBSD 再看，否則會事倍功半。</p>
<p><a href="http://onlamp.com/">ONLamp</a> 也可以找到一些不錯的文章。</p>
<p>想學  vi 和 Vim 可以看 <a href="http://www.freebsd.org/doc/en/articles/new-users/editing-text.html">Editing Text</a> 以及 <a href="http://blog.yzlin.org/">yzlin@</a> 的 <a href="http://blog.yzlin.org/2009/03/09/80/">VIM: Hack Your Editor</a> 和 <a href="http://blog.yzlin.org/2008/08/20/53/">Make Your VIM &amp; Screen Environment Comfortable</a>。</p>
<p>雖然 vi 和 Vim 對初學者不是很友善，但學會之後就會愛不釋手。有在寫 code 或 configuration 的人一定要學一學。有裝 <a href="http://www.freshports.org/editors/vim-lite">editors/vim-lite</a> 的話可以用 <code>$ vimtutor</code> 來學習（一個很好的方式）。</p>
<p>我的設定檔之後再想辦法貼上來。</p>
<p>除此之外，一些關於 FreeBSD 的文章：</p>
<ul>
<li><a href="http://www.freebsd.org/doc/en/articles/explaining-bsd/">Explaining FreeBSD</a>：簡單介紹 FreeBSD</li>
<li><a href="http://www.over-yonder.net/~fullermd/rants/bsd4linux/bsd4linux1.php">BSD for Linux Users</a>：Linux 的使用者常對 BSD 有一些迷思</li>
</ul>
Posted in CNMC, 社團, 電腦科學, FreeBSD, Ports  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dennylin93.wordpress.com/908/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dennylin93.wordpress.com/908/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dennylin93.wordpress.com/908/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dennylin93.wordpress.com/908/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dennylin93.wordpress.com/908/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dennylin93.wordpress.com/908/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dennylin93.wordpress.com/908/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dennylin93.wordpress.com/908/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dennylin93.wordpress.com/908/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dennylin93.wordpress.com/908/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dennylin93.wordpress.com&blog=494489&post=908&subd=dennylin93&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dennylin93.wordpress.com/2009/10/02/learning-freebsd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/38f82c510e5909b7870765269de1d630?s=96&#38;d=http%3A%2F%2Fa.wordpress.com%2Fi%2Fmu.gif" medium="image">
			<media:title type="html">dennylin93</media:title>
		</media:content>
	</item>
		<item>
		<title>大工程</title>
		<link>http://dennylin93.wordpress.com/2009/09/18/a-major-overhaul/</link>
		<comments>http://dennylin93.wordpress.com/2009/09/18/a-major-overhaul/#comments</comments>
		<pubDate>Fri, 18 Sep 2009 12:12:10 +0000</pubDate>
		<dc:creator>dennylin93</dc:creator>
				<category><![CDATA[附中時光]]></category>
		<category><![CDATA[隨筆]]></category>

		<guid isPermaLink="false">http://dennylin93.wordpress.com/?p=904</guid>
		<description><![CDATA[最近實在是太忙了，連休息的時間都沒有。學校網路換成接到臺大好處是速度變 100 Mbps，缺點是我變得很忙…這週準備了所有伺服器的設定檔，不過可能要等到下星期才會用到。目前只有 126 網段還沒換過去。
這兩週花了不少時間在整理機房，因為實在太亂了。結果拔出了一堆沒用的線，也有一些機器要淘汰掉。目前只剩骨幹的機櫃沒整理完。我束線帶綁到快瘋掉。
換 IP、整理機房還算了，星期三晚上 DNS server 居然炸了。我原本要重開機，不過一直都沒起來，所以暫時用其他台代替。第二天去學校發現硬體壞掉了。現在我又要重灌一台了…
Mail server 還未完成，不過只差 quota、Sieve 和 webmail 的部分。希望能趕快上線。除此之外，logs 一團亂，應該找個時間來整理一下，備份也沒有做的很好。又要寫一堆 shell script 了…防火牆設定要重寫，還有很多文件要打。已經快崩潰了。
Posted in 附中時光, 隨筆       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dennylin93.wordpress.com&blog=494489&post=904&subd=dennylin93&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>最近實在是太忙了，連休息的時間都沒有。學校網路換成接到臺大好處是速度變 100 Mbps，缺點是我變得很忙…這週準備了所有伺服器的設定檔，不過可能要等到下星期才會用到。目前只有 126 網段還沒換過去。</p>
<p>這兩週花了不少時間在整理機房，因為實在<strong>太亂了</strong>。結果拔出了一堆沒用的線，也有一些機器要淘汰掉。目前只剩骨幹的機櫃沒整理完。我束線帶綁到快瘋掉。</p>
<p>換 IP、整理機房還算了，星期三晚上 DNS server 居然炸了。我原本要重開機，不過一直都沒起來，所以暫時用其他台代替。第二天去學校發現硬體壞掉了。現在我又要重灌一台了…</p>
<p>Mail server 還未完成，不過只差 quota、Sieve 和 webmail 的部分。希望能趕快上線。除此之外，logs 一團亂，應該找個時間來整理一下，備份也沒有做的很好。又要寫一堆 shell script 了…防火牆設定要重寫，還有很多文件要打。已經快崩潰了。</p>
Posted in 附中時光, 隨筆  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dennylin93.wordpress.com/904/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dennylin93.wordpress.com/904/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dennylin93.wordpress.com/904/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dennylin93.wordpress.com/904/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dennylin93.wordpress.com/904/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dennylin93.wordpress.com/904/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dennylin93.wordpress.com/904/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dennylin93.wordpress.com/904/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dennylin93.wordpress.com/904/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dennylin93.wordpress.com/904/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dennylin93.wordpress.com&blog=494489&post=904&subd=dennylin93&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dennylin93.wordpress.com/2009/09/18/a-major-overhaul/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/38f82c510e5909b7870765269de1d630?s=96&#38;d=http%3A%2F%2Fa.wordpress.com%2Fi%2Fmu.gif" medium="image">
			<media:title type="html">dennylin93</media:title>
		</media:content>
	</item>
		<item>
		<title>整天盯著電腦螢幕的心得</title>
		<link>http://dennylin93.wordpress.com/2009/08/30/a-brief-summary-of-my-summer/</link>
		<comments>http://dennylin93.wordpress.com/2009/08/30/a-brief-summary-of-my-summer/#comments</comments>
		<pubDate>Sun, 30 Aug 2009 13:17:06 +0000</pubDate>
		<dc:creator>dennylin93</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Ports]]></category>
		<category><![CDATA[網路]]></category>
		<category><![CDATA[軟體]]></category>
		<category><![CDATA[電腦科學]]></category>

		<guid isPermaLink="false">http://dennylin93.wordpress.com/?p=898</guid>
		<description><![CDATA[暑假又過完了，明天要開學考。這次暑假學了不少（不過也很雜），只是整天盯著電腦螢幕眼睛很累。幸好現在近視已經不會加深了。
先談 FreeBSD 以外的好了。之前花了幾天看 LaTeX，因為感覺很有趣，可以印出各種數學式子。他最大的功能其實是排版，可以用來弄文章、書之類然後轉成 PDF、PS 等格式。網路上有一本叫 The Not So Short Introduction to LaTeX2e，我幾乎都是看這本學的（此書的作者同時也是 RRDtool 與 MRTG 的作者）。裡面寫的還不錯，很多重點都有涵蓋到。
在 FreeBSD 用 LaTeX 感覺比 Windows 方便多了。用 Ports 安裝不用在下載 MiKTeX 之類的軟體。至於編輯器目前是用 Texmaker。會看 LaTeX 的原因也是因為想整理出一本 FreeBSD 的文件，不過沒做到。現在大概要等學測、指考考完了。
暑假幾乎都在忙郵件伺服器和防火牆。暑假也因此買了 The Book of Postfix 與 The Book of PF。防火牆已經架好了，也放上主幹，只是規則沒有完全寫好。這次還是用 FreeBSD 架，雖然又 pfSense 之類的方案，但沒有用。其實比想像中簡單。系統準備好之後在 kernel 中加入 PF、ALTQ 的選項以及 device if_bridge。之後 /etc/pf.conf 寫一寫就好了。除了過濾的規則之外，最大的變化應該是將 states、src-nodes、frags、table-entries 調大。 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dennylin93.wordpress.com&blog=494489&post=898&subd=dennylin93&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>暑假又過完了，明天要開學考。這次暑假學了不少（不過也很雜），只是整天盯著電腦螢幕眼睛很累。幸好現在近視已經不會加深了。</p>
<p>先談 FreeBSD 以外的好了。之前花了幾天看 <a href="http://www.latex-project.org/">LaTeX</a>，因為感覺很有趣，可以印出各種數學式子。他最大的功能其實是排版，可以用來弄文章、書之類然後轉成 PDF、PS 等格式。網路上有一本叫 <a href="http://ctan.tug.org/tex-archive/info/lshort/english/lshort.pdf">The Not So Short Introduction to LaTeX2e</a>，我幾乎都是看這本學的（此書的作者同時也是 RRDtool 與 MRTG 的作者）。裡面寫的還不錯，很多重點都有涵蓋到。</p>
<p>在 FreeBSD 用 LaTeX 感覺比 Windows 方便多了。用 Ports 安裝不用在下載 MiKTeX 之類的軟體。至於編輯器目前是用 Texmaker。會看 LaTeX 的原因也是因為想整理出一本 FreeBSD 的文件，不過沒做到。現在大概要等學測、指考考完了。</p>
<p>暑假幾乎都在忙郵件伺服器和防火牆。暑假也因此買了 <a href="http://nostarch.com/postfix.htm">The Book of Postfix</a> 與 <a href="http://nostarch.com/pf.htm">The Book of PF</a>。防火牆已經架好了，也放上主幹，只是規則沒有完全寫好。這次還是用 FreeBSD 架，雖然又 pfSense 之類的方案，但沒有用。其實比想像中簡單。系統準備好之後在 kernel 中加入 PF、ALTQ 的選項以及 <code>device if_bridge</code>。之後 <code>/etc/pf.conf</code> 寫一寫就好了。除了過濾的規則之外，最大的變化應該是將 states、src-nodes、frags、table-entries 調大。 其實到目前為止還沒看過這些超過預設值（最多有過 7000 多個 states），但還是調大一點比較安全。</p>
<p>放上骨幹之後就加了一些軟體可以除錯、看流量、產生圖形。最基本當然有 <code>pfctl</code>、<code>pflog</code>、<code>tcpdump</code>。額外裝了 <a href="http://www.freshports.org/sysutils/pftop"><code>sysutils/pftop</code></a>、<a href="http://www.freshports.org/net-mgmt/iftop"><code>net-mgmt/iftop</code></a>、<a href="http://www.freshports.org/net/nload"><code>net/nload</code></a> 來作為即時觀測。圖形則是加了 <a href="http://www.freshports.org/net-mgmt/mrtg"><code>net-mgmt/mrtg</code></a>、<a href="http://www.freshports.org/sysutils/pfstat"><code>sysutils/pfstat</code></a>。MRTG 純粹只有流量，但 pfstat 有關於 PF 的資料。至於實際紀錄總流量則是使用 <a href="http://www.freshports.org/net-mgmt/bandwidthd"><code>net-mgmt/bandwidthd</code></a>。</p>
<p>架設郵件伺服器困難度則是防火牆的好幾倍。用 Postfix、Dovecot 設定還算淺顯易懂（幸好不用看 Sendmail 的設定檔）。最麻煩的是要建立各種防止垃圾信件的方法，光是這個就不知道花了幾天的時間。最基本的是從 SMTP 連線中強迫 client 遵守 RFC，如：必須 helo/ehlo hostname、使用 FQDN 等。接下來就檢查 SPF，因為這樣可以避免有人偽裝成 server 亂發垃圾信件（像某某 IP 假冒 Gmail）。現在我也在學校的 domain 上加了「v=spf1 ip4:140.122.126.2 ip4:140.122.126.3 ~all」。還可以用 pcre 過濾 header 和 body，不過現在規則完全是空的。</p>
<p>剩下的方式都比較耗時間或系統資源。建立連線時，用 DNSBL 可以查詢該 IP 是否有不良紀錄，若有的話可以結束連線，不接收任何信件。主要的黑名單有 <a href="http://cbl.abuseat.org/">CBL、<a href="http://www.spamhaus.org/">Spamhaus</a>、<a href="http://www.sorbs.net/">SORBS</a>、<a href="http://www.spamcop.net/">Spamcop</a>、<a href="http://www.njabl.org/">NJABL</a>。其中 CBL 與 Spamhaus 擋掉最多，SORBS 與 Spamcop 其次而 NJABL 幾乎沒有（統計數字的時候我有調整使用順序）。其實 DNSBL 不會太耗資源、時間，因為只是用 DNS lookup。Greylisting 據說可以退掉不少 spam。用的方式是第一次收到信件會退信，標為 temporary failure。根據 RFC，temporary failure 的時候 MTA 必須再試著寄信。第二次收到信才會收下。電子郵件會被紀錄，這樣以後就不用再被退信了。當然有些可以列入 whitelist 中。整體而言第一次發 email 會被 delay 大約 5 到 20 分鐘，很少超過半小時。因為平常發 spam 他不會勤勞到寄第二次，所以可以退掉一些垃圾信件。</p>
<p>最後（應該說是不耗 CPU 資源中的最後一個方式），Postfix 有 address sender verification。這個功能會檢查 sender 的 email 是否可以收信，若可以的話才會把信件收下。為了省時間只有一些 domain 才會被 verify，驗證完之後也會將 email 存入資料庫，以後就不必再檢查。這也是一個有效的方式，不過通常會 delay 10 秒左右。</p>
<p>現在只剩下過濾信件內容了。主要用 <a href="http://spamassassin.apache.org/">SpamAssassin</a> 過濾內容，然後用 <a href="http://www.clamav.net/">ClamAV</a> 掃毒。另一個方案是 <a href="http://www.ijs.si/software/amavisd/">amavisd-new</a>，整合了 SpamAssassin 和其他軟體。</p>
<p>對了，我差點忘了 OpenBSD 的 <a href="http://www.openbsd.org/spamd/">spamd</a>。這個是跟 PF 整合的軟體，可以 tarpit 和 greylist。不過既然已經有 <a href="http://www.freshports.org/mail/postgrey"><code>mail/postgrey</code></a> 做 greylisting，沒有必要再弄一次，目前主要用途是 tarpitting。用了 uatraps 和 nixspam 這兩個黑名單來檔 spammers。這個 IP 數量也相當驚人，目前 uatraps 有接近 700000 個 IP。若 IP 有被列入黑名單，PF 會將連線交給 spamd，一次只發送 1 byte，跟 block 掉他差不多。</p>
<p>Spam 到此差不多了。剩下的幾乎是 Dovecot 設定、建立 SQL 帳號之類。SQL 其實很簡單（之前以為很難）。Dovecot 改的設定比 Postfix 少很多，幾乎用預設就可以了。主要的差別應該是使用者從 SQL 讀取，PAM 可以註解掉。目前只剩 LDA、quota、sieve、trash 一些 plugin 沒弄好。</p>
<p>比較擔心的是現在我用的這台硬碟空間非常小，可能要移到別台上面。</p>
<p>The Book of Postfix 感覺還不錯，各方面講的都很詳細。特別是有幾章特別分析 Postfix 內部如何運作。我覺得這個很重要。其他像設定的部分，則是先講理論、原理，然後下一張才是實做。這與其他電腦書差異較大，但也因此而能夠徹底理解所有的設定。書裡的例子都十分完整，包括 SQL、SASL、TLS。最後還有一章特別寫用 LDAP 架設郵件伺服器。</p>
<p>講缺點的話當然還是有。最大的應該是我用的軟體跟他不太一樣。SASL、IMAP 我都是用 Dovecot，因為設定淺顯易懂，功能也很強大，有內建的 SASL 也十分方便。書則是用 Cyrus、Courier IMAP。另外一點是書有點舊，某些設定已改變了，不過這倒不用太擔心。只要設定前有參考 postconf 的 man page，上面都有列出舊版本與現在版本的設定。最後一個缺點是有一些錯誤（看 errata 感覺有點多）。不過整體而言，我覺得是一本非常好的電腦書，若要架設郵件伺服器可已參考看看。</p>
<p>The Book of PF 好像沒有那麼好，可已當做 PF FAQ 還有 man pages 的輔助，但沒有辦法取代他們。</p>
<p>暑假也花了不少時間在 <a href="https://forums.freebsd.org/">FreeBSD Forums</a> 上面。有很多問題幾乎都會有人回答，也有很多資料可以參考。</p>
Posted in 網路, 電腦科學, 軟體, FreeBSD, Ports  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dennylin93.wordpress.com/898/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dennylin93.wordpress.com/898/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dennylin93.wordpress.com/898/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dennylin93.wordpress.com/898/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dennylin93.wordpress.com/898/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dennylin93.wordpress.com/898/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dennylin93.wordpress.com/898/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dennylin93.wordpress.com/898/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dennylin93.wordpress.com/898/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dennylin93.wordpress.com/898/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dennylin93.wordpress.com&blog=494489&post=898&subd=dennylin93&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dennylin93.wordpress.com/2009/08/30/a-brief-summary-of-my-summer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/38f82c510e5909b7870765269de1d630?s=96&#38;d=http%3A%2F%2Fa.wordpress.com%2Fi%2Fmu.gif" medium="image">
			<media:title type="html">dennylin93</media:title>
		</media:content>
	</item>
	</channel>
</rss>