Archive for 十月, 2009

一台有DHCPD的機器,加上做"NAT"和"gateway"的事情

最近這幾天,才真正自己架了一台dhcpd,用ports把isc-dhcp31-server裝起來後照sample寫/usr/local/etc/dhcpd.conf,基本上輕鬆寫意。
只是可以動,但是反應速度好像不是很理想(常常抓不到),原因jnlin說要tcpdump看比較清楚,就要找機會再做。

然而dhcp終究是能動,只差在速度問題。但是內網被分配到IP的機器出不來甚麼就都不用玩了啊。研究natd跟ipfw到一半的時候被長輩噹說"用甚麼ipfw啊",於是被推薦用pf。原本想說問題還沒到firewall啊….但在同事hint下才知道pf也可以做nat啊啊啊啊啊。兩種願望一次滿足,設定簡單好吸收(內網分享這種事情改1~3行預設設定值就搞定),goooood!

pf的設定檔在/etc/pf.conf,改了後可以用/etc/rc.d/pf reload重載(pfctl好像可以針對特定部分進行reload)。相關的rcvar有pf_enable、pf_rules、pf_flags、pf_log_enable、pflog_logfile、pflog_flags等。基本上還是要加上gateway_enable="YES"才能正常工作(我還沒嘗試拿掉)。如果加了之後不想重開機,可以用sysctl -w net.inet.ip.forwarding=1去做對應設定。

發表迴響

PoPToP on FreeBSD

這是一篇未成功/未完成的筆記…完成基本路由功能了(用pf就對了,好威的啊),基本上可以運作,只差認證彈性的問題(目前只有ppp.secret記載密碼有用)

昨天(091015)戰了許久的pptpd,最後仍然以敗仗收場。由於時間寶貴,所以暫時擱置…
(明明pfsense跟ddwrt都有working得很好的pptp server啊/_\)

一開始我用ports中的net/poptop裝、跑,每次連線總會在/var/log/ppp.log中看到
“ppp: Warning: Label /etc/ppp/options.pptpd rejected -direct connection: Configuration label not found"
的錯誤訊息,折騰了許久後發現是/usr/local/etc/pptpd.conf的option選項問題。這個選項的作用跟他寫的完全不一樣啊<O>
不但不會讀取對應檔案中的設定(猜想該檔案應該要寫的是man pppd中可以查到的那些option如proxyarp)

最低限度的修改:
/usr/local/etc/pptpd.conf
其實可以啥都不要放,所有的選項都comment掉(特別是option),可以用的似乎只有

debug
pidfile

而已

/etc/ppp/ppp.conf
只要加上(append)下面的部分(“pptp:"的pptp在這版本上是依照/usr/local/etc/pptpd.conf的option選項選擇,或者你可以用執行pptpd的-o參數指定,實在不知道是為何…)

pptp: # Note: 下面的參數前面沒加個空白可能導致Windows下的error628,應該是因為他判斷為新設定區間所以log會說"missing colon"
disable ipv6cp # 要不要發ipv6位置,不disable也無妨,實驗結果是disable掉的話Win7下連線完成會慢,其他未證實
enable MSChapV2 # accept MSChap2 authentication 一定要enable,基本的
set ifaddr 192.168.11.1 192.168.11.234-192.168.11.245 255.255.255.0 # 依序設定本機ip(基本上不要跟既有IP衝,要衝應該要解routing問題吧)、分配IP區段、子網路遮罩(好像無用)
enable passwdauth # 引用/etc/passwd的資訊認證,不過這個選項我沒有成功使用。

/etc/ppp/ppp.secret
帳密,用

username password

方式寫入,而非username * password *(已經實驗證實)

這樣基本上就可以用Windows內建的功能建立PPTP VPN連線並且取得IP,不過後續的routing問題還有得搞的樣子。
我連讓FreeBSD本身去ping自己那個VPN用的本機IP都ping不到…(可能是沒設gateway_enable的問題啦)

(1.1.3可能可以?今天(091016)才剛好看到的,還沒實做)
Freebsd_VPN_poptop
http://zgod.pixnet.net/blog/post/6979537

ref:
比較接近可用的(至少有避開pptpd.conf中option那個設定的問題)
FreeBSD VPN Server 架設
http://hsinichi.pixnet.net/blog/post/4710793

FreeBSD利用poptop架设vpn指南
http://www.drlblog.com/2009/01/18/freebsd-use-poptop-guidelines-set-up-vpn.html

FreeBSD PPTP VPN (含如何不關機用sysctl設定gateway_enable跟netstat監看狀態)
http://www.linux-bsd-central.com/index.php/content/view/8/

Configure PPTP Server With PopTop on FreeBSD (有明確提到並解決了Configuration label not found的問題)
http://blog.csdn.net/Semigod/archive/2009/08/20/4467972.aspx

Linux可能用起來沒問題吧….
Setting up PPTPD on Linux Kernel 2.4 HOWTO
http://home.swbell.net/berzerke/howto.html

官方 on RedHat說明
http://www.poptop.org/PoPToP-RedHat-HOWTO.txt

Poptop Questions & Answers
http://poptop.sourceforge.net/dox/qna.html

How to setup a dedicated PPTP VPN Server at your home office or main office.
http://pigtail.net/nicholas/pptp/

PPTP VPN 實作(Fedora)
http://cha.homeip.net/blog/archives/2006/10/pptp_vpn.html

Ubuntu 下面 pptp VPN 的配置
http://www.codecharge.com.tw/phpBB3/viewtopic.php?f=16&t=649

安裝及架設VPN-PPTP
http://phorum.study-area.org/index.php?topic=16243.0

壓根不會動(/var/local/etc/pptpd.conf有設option怎麼可能會動)(或許是版本問題)
FreeBSD VPN server and Samba PDC
http://www.nabble.com/FreeBSD-VPN-server-and-Samba-PDC-td16097746.html

FreeBSD下通过PoPToP实现远程访问VPN
http://www.searchnetworking.com.cn/showContent_10286.htm

FreeBSD下通过PoPToP实现远程访问VPN
http://www.diybl.com/course/6_system/linux/linuxjq/2007211/17138.html

[轉貼]在 FreeBSD 上安裝 Microsoft VPN (PoPToP)
http://www.backup.idv.tw/viewtopic.php?p=773&sid=f3005fb13a95c94b4414e35ff4ec6a08

Poptop-建立 PPTP 的 VPN 通道
http://www.weithenn.org/cgi-bin/wiki.pl?Poptop-%E5%BB%BA%E7%AB%8B_PPTP_%E7%9A%84_VPN_%E9%80%9A%E9%81%93

在 FreeBSD 上設定 poptop 的問題
http://phorum.study-area.org/index.php?topic=53153.0

PPTP Server on FreeBSD
http://poripori.net/PPTPD_on_FreeBSD.html

Getting Poptop to run under FreeBSD 5 & 6
http://www.pingle.org/2006/04/11/getting-poptop-to-run-under-freebsd-5-6

參考文件
PPTPD.CONF
http://quozl.linux.org.au/pptp/pptpd.conf.5.html

PoPToP 官方Doc
http://poptop.sourceforge.net/dox/

PoPToP 官網
http://www.poptop.org/

[文章]FreeBSD上的pptp server (無關PoPToP本體不過有些可以參考的資訊)
http://phorum.study-area.org/index.php?topic=14722.0

MPD PPTP issues in a nutshell (MPD和PoPToP的比較)
http://m0n0.ch/wall/list/showmsg.php?id=47/23

發表迴響

FreeBSD Ports Note

最近不斷的在裝FreeBSD,發現實務上的使用的經驗已經跟幾年前剛開始的時候的筆記不同了,所以…來更新一下。

1. 更新可以用portsnap(6.0以後內建)(設定檔在/etc/portsnap.conf)(台灣有portsnap.tw.FreeBSD.org)

下載

portsnap fetch

解開(第一次跑才需要,不管原先有沒有/usr/ports)

portsnap extract

對剛裝好機器的第一次Update來說這樣似乎比在/usr/src做make update快很多(就算用bootonly disk啟動以ftp裝,portstree好像仍是舊的)

再來之後的更新(通常fetch一次portsnap就接近到位了,可以繼續用在/usr/src做make update的方法追)

portsnap update

2. 安裝用portmaster,好處是設定都可以先來,放下去跑就可以了。不過現在有個"中間升級到的package其舊版備份檔(distfile?)無法自動刪除",好像也沒有參數(-B不適用的樣子)可用…可是-d好像可以?(不過這不是拿來清所有/當次disfile用的嗎…)

最後補註一下下載下來的distfile預設在/usr/ports/distfiles下,磁碟空間不足可以拿來開刀看看。

補註2: http://oldach.net/portdeps.html 可以看dependency的perl script,今天(091012)為了找為什麼有的機器有裝上unzip而找的工具…

ref:
http://www.weithenn.org/cgi-bin/wiki.pl?Portsnap-更新_Port_Tree#Heading4

發表迴響

FreeBSD掛新硬碟

簡單來說,用sysinstall分割,按w寫入,看logical ID,但不要用sysinstall的label。

抄下id,手動寫入tab,最後面兩個是fs的話就填1,swap填0

Comments (2)

FreeBSD跑Redmine的相關處理(含進階RoR環境元素)

今天為了要把redmine搬到新機器上,照自己之前寫的建立FreeBSD基本RoR環境建了一次,但是過程中發現到一些之前沒詳加記載而且我沒印象的問題…

1. sqlite3-ruby
用gem i sqlite3-ruby這東西裝不起來,後來裝了ports中的rubygem-sqlite3-1.2.4,由於其他平台曾有需要先編裝sqlite3-devel(或ruby1.8-dev)才能裝的情況,估計可能是ports的sqlite3有缺東西吧,source(libsqlite.h or sqlite3.h之類的)。後來發現如果這樣下:

gem install sqlite3-ruby -- --with-sqlite3-include=/usr/local/include

2. ruby18-iconv
從來沒印象要裝,但是今天(091007)發現redmine要,感覺應該要是gem裡的東西最後卻由ports裝了ruby18-iconv-1.8.7.72,1。
後來(091011)發現沒有的話rails根本連建立專案都建不起來….

3. unzip
要freeze2.1.2給redmine用的時候發現沒有unzip不能做,但是印象以前沒特別裝過。經過證實後發現以前都是不明原因裝了…所以才沒撞牆過。

發表迴響

portupgrade memo

雖然之前已經寫到portupgrade的取代品portmaster了,不過由於應該還有部分機器沒更新,所以先把其他備用的資料memo一下…

ref:

portupgrade 介紹
http://ohaha.ks.edu.tw/old_site/portupgrade.htm

安裝應用軟體:The Ports collection
http://freebsd.lab.mlc.edu.tw/ports.htm

FreeBSD ports 相關工具
http://denniswave.168rent.com/3588

隨手再Memo一下放ports下載package的地方
/usr/ports/distfiles

發表迴響

macports on Tiger

  1. 下載.dmg後掛起來安裝
  2. 確定path有對應到ports這個執行檔的位置(可用source .profile重新引入.profile中的環境參數,裝ports時他會把自己位置寫進去)
  3. port selfupdate (port -d selfupdate可以看到detail)
  4. port variants XXX 可以看到可用選項
  5. port install xxx +…+…+… 可以用+增選variants看到的選項
  6. 裝到一半^C如果要清掉可用port clean xxx

Ref:
http://trac.macports.org/wiki/InstallingMacPorts
http://confluence.concord.org/display/CCTR/Installing+git+with+macports (含如何安裝git及git設定)
http://www.macports.org/install.php

發表迴響

Screen+Putty的理想呈現

用了Puttytray+Screen幾年,雖然因緣際會的學會了caption和hardstatus alwayslastline的雙狀態列技巧,但由於覺得兩行太累贅,用了沒幾個月就作罷,改用一行而已。但看著看著總又覺得缺了一些東西,加上又碰到putty每次複製一個profile就要點好幾下去改title,就覺得相當的厭煩。加上工作需要的關係開了一堆puttytray,每個puttytray又開了好幾個screen,要找東西都相當的困難,因而開始思考要怎麼樣解決。想來想去,決定要想辦法把兩行狀態列其中一行搬到視窗的標題上,寫上主機名跟所有開啟中的視窗名,這樣一來情況應該會好得多。

在survey一堆資料,發現自己所知實在太少的情況下(什麼terminal, terminfo, termcap的),只好邊硬K文件邊try&error…最後終於貼近理想的狀況,簡單報告一下:

.screenrc的部分:

termcapinfo xterm*|rxvt*|kterm*|Eterm* hs:ts=\E]0;:fs=07:ds=\E]0;07

讓message(例如virtual bell,或者部分screen的錯誤訊息)送上title的控制碼,光terminfo似乎不會生效

shelltitle “> |idle"

配合等一下會提到的.cshrc中的設定,會自動捕捉"> “(大於加一個空白)之後,下一個空白出現為止之間的文字當作標題。通常就是捕捉我們在shell下的指令就是。

hardstatus message "%H :: %-Lw%n%f *%t*%+Lw"

設定hardstatus的資訊格式並以message方式呈現(因為message被丟到title了,所以這邊的資訊就是putty視窗title的資訊)

caption always "%{dk}%{+b K}> %{W}%n%f %t %{K}<%{W}%=%{+b K}load{%l} %{C}$USER@%{W}%H %{db}%{W} %Y/%m/%d %0C %A "

設定底部工作列顯示資訊

caption跟hardstatus的資訊格式可以看man screen的STRING ESCAPES有很多相關資料

再來是.cshrc的部分

setenv TITLE "%{33]0;%n@%m:%~07%}"

我是有用switch($TERM)去區隔,只有在case “xterm*"的時候才會設這行,因為進screen後title就交給screen去搞了,所以為了分清楚職責就只有在沒screen的xterm期間設定這樣的資料,(這字串的組成等於是丟TITLE ESCAPE STRING給putty叫他改title,前面開始控制碼,中間內容,最後結束控制碼),下面會再提到如何輸出生效,注意這邊只是設定而已。

set prompt = "${TITLE}%{\ek\e\%}(%{^[[36m%}%T%{^[[0m%}) [%{^[[1;34m%}%n%{^[[0m%}@%{^[[1;36m%}%m%{^[[0m%}] %B[%~]%b %# "

設定命令列前面的內容,最前面的${TITLE}是為了將上面setenv TITLE的東西輸出而放(也就是每出現一次prompt就會更新一次title,跟prompt本身看到的訊息無關),再來%{\ek\e\%}則是為了配合讓screen的shelltitle開始活動而放的控制碼,收到這個以後screen才會開始找shelltitle指令的第一個參數區段。(好像寫錯了,檢討中)

還有針對VIM做加強的.vimrc修改

set title
set t_ts=^[k
set t_fs=^[\

讓vim會去設定本身這個screen的title(而非整個視窗的title,就是當個screen的名稱),並告訴vim要用的開始和結束控制字串是什麼(這在man screen可找到)

但這樣做對於在.screenrc中用screen -t ‘title’ num預先啟動的screen會有離開時名字停留在"Thanks for flying VIM"的窘況,目前暫時的解決方法是把預先設定的’title’改叫做’> |title’,比較好的做法應該要再研究一下man screen的TITLES (naming windows)區段。

這樣一來大致就搞定了,原本以為已經差不多了,但後來發現一個大問題….screen lock的時候title會變空白啊啊<O>
這樣根本不知道這個窗是哪台機器了,囧!

目前除了customize screen以外還沒有想到其他解…而且我也還沒找出來怎麼自己寫orz

Comments (2)