Author Archives: vincent

BIND 設定筆記

首先訂出 DNS 服務的對象, 由於 primary or secondary server 要提供 domain 的資訊
供外界查詢, 以下這個設定是必要的
allow-query { any; };

當 DNS server 收到非自有 domain 查詢時, 例如 client 查詢 www.google.com, 依據
設定會有兩種處理方式
1. recursion yes
server 會先問 root server, 找到 TLD .com, 在找到 google.com 的 dns server 後,
問出 www.google.com 的資料, 回覆 client 後放一份在 cache 供後續查詢, 如果這種
查詢服務沒有設定服務對象, 就是所謂的 open resolver, 會消耗網路頻寬等資源, 甚至
成為 DNS Amplification Attacks 的工具, 限制服務對象設定如下
acl mynet { 192.168.1.0/24; };
options {
allow-recursion { mynet; };
};
2. recursion no
server 回覆一個查詢點, 由 client 作業系統從這個點往下查, 直到取得答案

server cache 的資料可以加速查詢及節省頻寬, 但是如果對外開放不設限, 仍然可能被誤
用, 可以用以下設定限制
allow-query-cache { mynet; };

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

DNS zone transfer access control

DNS 系统通常包含一個 primary server 及數個 secondary server 以確保 availability, primary server 維護 domain 的 DNS record, secondary server 不一定要自己架, 可以用 ISP 或 DNS provider 提供的, secondary server 會利用 zone transfer 機制向 primary server 取得一份 domain 明細, 包括設定及主機清單

所以 zone transfer 機制很明顯只需要開放給 secondary server 就好, BIND 是最普遍的 DNS server 軟體, 控制 zone transfer 設定範例如下

zone “<my domain>” {

allow-transfer { <my 1st secondary server ip>; <my 2nd secondary serverip>; };

};

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

Glassfish Restful cause 500 error

Controller code 如下

@GET
@Produces(MediaType.APPLICATION_JSON)
public List<Personnel> getAllPersonnel() {
List<Personnel> results=personnelDAO.getPersonnel();
return results;
}

Model 造成問題的 code

@OneToMany(mappedBy=”personnel”)
private List<Signup> signups;

因為有 1 對多的關聯,又沒有指定 fetch type,當 Signup table 沒有關聯資料時,signups 是未初始狀態,造成 server return 500 error,關聯宣告修改如下即可

@OneToMany(mappedBy=”personnel”, fetch=FetchType.EAGER)

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

Glassfish + MySQL = No database selected

最近在 Glassfish application server 上設定 MySQL datasource 及 connection pool 後,以 JPA 存取 database 時卻出現 No database selected 錯誤訊息,在這個 網址 找到了答案。

建立 connection pool (教學網址) 時有很多 additional property,其中有一個 Url 要填例如 jdbc:mysql://localhost:3306/mydb,填好連資料庫就出現標題的錯誤,要把 property name ‘Url’ 改成 ‘URL’ 才可以正常連線。

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

Zimbra 安裝憑證

如果 Zimbra server 還沒有申請憑證的話,可以登入管理界面,產生 server 的 CSR (Certificate Signing Request) 然後拿著 CSR 向 CA 申請憑證,收到憑證後再利用管理界面匯入。

這次要介紹的是手上已經擁有憑證了,如何透過 command line 直接匯入而不必透過管理界面。首先你手上至少應該有 3 個檔案

1. zimbra.crt (server 的憑證)

2. zimbra.key (server 憑證的 private key)

3. ca.crt (CA 的憑證)

將 zimbra.crt copy 到 /opt/zimbra/ssl/zimbra/commercial/commercial.crt,zimbra.key copy 到 /opt/zimbra/ssl/zimbra/commercial/commercial.key,ca.crt copy 到 /opt/zimbra/ssl/zimbra/commercial/commercial_ca.crt,然後用以下指令先驗證憑證

/opt/zimbra/bin/zmcertmgr verifycrt comm commercial.key commercial.crt

憑證沒有問題的話利用以下指令安裝憑證

/opt/zimbra/bin/zmcertmgr deploycrt comm commercial.crt commercial_ca.crt

安裝完憑證後必須重新起動 zimbra server 才會生效。

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...