トップ 履歴 一覧 カテゴリ ソース 検索 ヘルプ RSS ログイン

OpenBSD/relayd/75

INDEX

OpenBSD リレーサーバ (relayd on OpenBSD 7.5)

OpenBSD の リレーサーバ relayd を動かす。

relayd は、OpenBSD に組み込まれている接続のリレー・リダイレクトをするデーモン。レイヤー 3 および 7 で動き、主に、ロードバランサや透過プロキシ、アプリケーション レイヤー ゲートウェイ として動かすことができる。

レイヤー 3 リダイレクトは、パケットレベルで行われ、pf(4) と通信して relayd が処理される。

レイヤー 7 リレーは、アプリケーション レベルで行われ、relayd 自体によって処理される。

relayd の起動設定

 単独起動

relayd.conf を修正して、 relayd -n で設定ファイルのチェックができる。

サーバの起動は relayd -d で起動する。

 自動起動

サーバが起動したときに relayd も実行されるように、 /etc/rc.conf.localrelayd_flags を指定する。

# relayd server
relayd_flags=

または、rcctl enable relayd で有効にする( /etc/rc.conf.local に relayd_flags= が記載される)。

 制御

relayctl コマンドで relayd の状態確認や制御ができる。

# relayctl show summary
Id      Type            Name                            Avlblty Status
1       relay           https                                   active
1       table           web_hosts:8080                          active (1 hosts)
1       host            127.0.0.1                       50.00%  up
2       host            172.0.0.2                       0.00%   down
2       relay           https6                                  active
2       table           web_hosts:8080                          active (1 hosts)
3       host            127.0.0.1                       50.00%  up
4       host            172.0.0.2                       0.00%   down

relayd の設定

/etc/relayd.conf に設定する。サンプルが /etc/examples/relayd.conf にある。

が、やりたいことができなかったので放置…(http protocol で、未知のメソッドが使えない。フィルタルールで method に決められたもの以外指定できない。header や path などを指定してる場合も決められたメソッドの要求以外でエラーになる)

 レイヤー 3 リダイレクト の pf 設定

レイヤー 3 の リダイレクト は、パケットレベルで行われ、pf(4) と通信して処理される。そのため、relayd が pf(4) ルールを適切に設定できるようにするために pf.conf(5) のフィルター セクションに次の行が必要になる。

anchor "relayd/*"

 SSLオフロード・ロードバランサ

SSLアクセラレーター/SSLオフロード と ロードバランサ っぽい設定

# $OpenBSD: relayd.conf,v 0.00 2024/01/01 00:00:00 xxxxx Exp $

## Macros

## Tables
table <web_hosts> { 127.0.0.1 }

## Global Options
interval 10

## Protocols & Relays

http protocol https {
    tls keypair example.com
    tls keypair example.net
}

relay https {
    listen on 0.0.0.0 port 1443 tls
    protocol https
    forward to <web_hosts> port 8080 mode loadbalance check http "/" code 200
}
relay https6 {
    listen on :: port 1443 tls
    protocol https
    forward to <web_hosts> port 8080 mode loadbalance check http "/" code 200
}

tableweb_hosts で、対象のWEBホストを指定する。

tls keypair で、TSLの証明書と秘密鍵ファイルを指定する。"tls keypair example.com" とすることで、/etc/ssl/example.com.crt/etc/ssl/private/example.com.key が読み込まれる。

listen on は、1つしか書けない?例えば、IPv4 と IPv6 で待ち受けるにも、IPv4 の 0.0.0.0 と IPv6 の :: の設定をそれぞれ必要になる。(同じ relay のブロック内に書いたらエラーになった)

check 〜 でヘルスチェックがされる。

セッション維持ってどうするんだろう…mode loadbalance で送信元IPアドレスなどで分散。mode random はアクティブなホストにランダムで分散(未指定の場合も同様)。

最終更新時間:2024年12月21日 11時28分16秒 指摘や意見などあればSandBoxのBBSへ。