星期三, 一月 25, 2012

Unbound + DNSSEC

FreeBSD 上要 Unbound 啟用 DNSSEC 很簡單,安裝完後,先跑 sudo -u unbound unbound-anchor 產生 root.key,之後每次重開機都會檢查是否需要更新。

再來是在 unbound.conf 裡面的 server 區段增加:

server:
        auto-trust-anchor-file: "/usr/local/etc/unbound/root.key"
如果有自己的 domain,可以先用 domain-insecure 設定,讓 Unbound 不檢查這些 domain:
server:
        domain-insecure: "mycompany"

星期日, 一月 22, 2012

Perl 的 regular exprssion 可以用 (?...) 設定參數

我遇到的問題很簡單,就是這樣的 code:

say 'yes' if 'Test' =~ $a;

我想要在 $a 做出 'Test' =~ /test/i; 的效果,也就是找方法帶 modifier 進去。

第一個想到的方法是用 eval() 做:eval("'Test' =~ $a;"),但這個方法問題很多... 因為我的 $a 是從設定檔讀進來,我並不希望給予奇怪的權限。

Perl 裡可以用 inline modifier 解決,也就是把 regular exprssion 前面加上 (?i),其中 i 就是 modifier,變成 (?i)^test

對於其他用 perl 寫的程式也可以這樣設定 regular exprssion,另外 PCRE 也可以吃,所以 Postfix 設定時如果用 pcre:$configuration_directory/xxx 也可以這樣設定 (regexp:... 就不確定了)。

星期二, 一月 17, 2012

Cisco IPSec VPN Client 在 Windows 與 Mac 上遇到的問題

Windows (XP & 7) 與 Mac 上面都各遇到一個不太能解的問題,找國外的論壇發現不少人抱怨原廠都不修正... Anyway,還是有些很笨的方式可以繞過去。

Windows 上遇到的問題是,如果 ASA 上面有設定 split-dns,那麼 Windows 除了 split-dns 所設定的網域可以查到資料,其他的網域都會無法查詢 (不會丟出任何 DNS query)。這不是 client 軟體的問題,而是作業系統內的問題,微軟目前看起來沒打算處理。

Mac 上遇到的問題是,Mac 系統內建的 Cisco VPN client 不吃 ASA 丟出來的 DNS server。不過在 Mac 上可以吃 split-dns...

目前用的解法是設定兩個不同的 tunnel-group,一個給 Mac 用,另一個給 non-Mac 用,大家各連各的,吃不一樣的設定值避開問題。

星期四, 一月 12, 2012

FreeBSD NIS master 與 Linux NIS client 時 shadow 的處理

剛剛 gaod 發現 Linux 的機器無法用帳號密碼登入 (因為我一直都是用 key 直接登入,所以一直沒發現),花了不少力氣才抓出要怎麼解,用 Google 找了不少文件,好像沒什麼人遇到?

解法是把 FreeBSD 上 NIS/YP server 的 Makefile 裡面產生 passwd* 部份改成 x 就解決了。可以參考「Re: FreeBSD NIS serving linux clients.」這篇十年前文章的說明...

會產生問題是因為 Linux 上的 NIS code 在看到 passwd 密碼欄位是 * 時就不會去 shadow 要資料,然後就爆炸了... 改成 x 就沒問題了...

星期一, 一月 02, 2012

AWS SES 與 Postfix 的配合...

官方論壇上面沒找到比較好的方法,於是 trace ses-send-email.pl 之後找到一些方法可以用。

ses-send-email.pl 寫的 helper 中,規定寄給多個使用者必須使用「逗號」隔開:

ses-send-email.pl [--help] [-e URL] [-k FILE] [--verbose] -r [-f FROM_EMAIL] [TO_EMAIL[,TO_EMAIL]...]

但實際 trace 後可以發現除了逗號外也可以接受空白,但是必須在「一個參數」內 (Perl 會用 regex 切開),但是 Postfix 所丟出來的 $recipient 會是多個參數,而且無法調整 quote,所以得用一個 shell script 將傳入參數包起來:

#!/bin/sh
SENDER="$1"
shift
/usr/local/bin/ses-send-email.pl -k /usr/local/etc/aws_creditentials -r -f "$SENDER" "$*"

再來是修正 Postfix 的 master.cf,改吃 shell script:

awsses     unix  -       n       n       -       1       pipe    flags=RX user=www argv=/usr/local/bin/awsses-wrapper.sh $sender $recipient
這樣在寄給多個使用者的時候才會正常...

Postfix 的 policy daemon...

沒注意好 Postfix 的 policy daemon 傳回的值,居然變成 open relay 了...

依照「Postfix SMTP server access table」的說明,現在沒辦法決定而要往後面的條件判斷時,需要丟出 DUNNO,而非 OK,一時間沒注意就變成 open relay...。

接下要看被誰列入 DNSBL 了...

星期四, 十二月 29, 2011

unbound 在多個 IP address 的環境下需要另外設定確保 DNS reply 是正確的

unbound 當 DNS resolver 算是還不錯的選擇,不需要設太多複雜的功能。不過這兩天又踩到雷,記錄下來以免之後又爆炸...

遇到的問題是,在 unbounad server 上同一個網路卡上設兩個 IP (這邊舉例為 10.1.1.1 與 10.2.1.1 好了),然後 interface 的部份設 0.0.0.0,不能保證發給 10.2.1.1 的 DNS 查詢會使用 10.2.1.1 的 IP 回答。

unbound.conf.sample 內有提到:

# enable this feature to copy the source address of queries to reply.
# Socket options are not supported on all platforms. experimental.
# interface-automatic: no

實驗性質?XD 還是得開啊...

星期三, 十二月 28, 2011

FreeBSD awk 不夠亂...

FreeBSDawk 產生出來每次都是一樣的數字,結果中招...

可以執行下面這段 code測試:

repeat 10 awk 'BEGIN{srand(); print rand();}'
目前沒想到好方法解決,用 openssl rand 產生亂數似乎是個方法...

Cisco ASA 的 site-to-site VPN 的 acl 必須對稱

Cisco ASA 的 site-to-site VPN 必須設定對稱的 access-list (acl),不然就會出現「[Technical] - “Flow is denied by configured rule” message with ASA packet-tracer and traffic being dropped at the VPN phase.」這篇提到的問題。

拜這個問題所賜,ASA 上的 packet-tracercapture 這兩個指令用的比較熟了 \_/

星期一, 十二月 26, 2011

FreeBSD 的 /etc/rc.conf...

之前我都是把 ports 安裝軟體的啟動設定 (也就是 XXX_enable="YES"XXX_flags="..." 這些設定) 用 pkg-install 與 pkg-deinstall 去 /etc/rc.conf.local 處理裡面的設定 (就是 ports-mgmt/portconf 對於 /etc/make.conf 的方法)。

星期天下午無意間看 /etc/rc.subr 時看到 /etc/rc.conf.d/"{$_name}" 的設計,看起來之後可以放到 /etc/rc.conf.d/ 下面,直接用 pkg-plist 處理掉就好,整個架構會再簡化一些...

7.4-RELEASE 與 8.2-RELEASE 的 /etc/rc.subr 都有包括這段 code,不確定其他的版本如何...