昨日のエントリの関連なのだけれど、PF設定をあれこれしたのはこれがやりたかったからなのである。
ぶっちゃけると、今作ってるWebサイトでSSLを使いたい。
年間数万の維持費をかけるわけにはいかんので、証明書はオレオレ証明書を使うことになるが。
が、konata.netはSSLの443番ポートはすでに使用済み。
SSLで通信をしていることには変わりないが、その中身は外からSSHな自宅鯖接続用の通信なわけで。
なので、1つのポートでWebとSSHの2つのサービスを動かさなければならん。
ポート番号を分ければいいのだけれど、URLの後ろにくっつけるのはなんとなくかっこ悪いので却下。
ちょっと考えて、Dalegateを使って通信を振り分けることにした。
しかし、これが上手くいかない。
最初はportsからのインストールでエラー吐くし……
無理やりmakeしたものの、今度は設定の豊富さ故に迷う迷う。
合計4~5時間ほど迷った結果、少なくとも今の自分には無理という結論に達した。
なんか他の手段はないものかと、適当な単語を入れてGoogle様にお伺いを立てることにした。
その結果が昨日のエントリになる。
PFで要求をそのまま別ポートにリダイレクトしてやればいいのだ。
書いたpf.confはこんな感じ。
rdrで要求を転送して、後の行で入力と出力を許可してやる。
# SSL Select
rdr on $ext_if inet proto tcp from <rdr_addr> to <ext_addr> port https -> <ext_addr> port 10022
pass in quick inet proto tcp from any to <ext_addr> port 10022 keep state
pass out quick inet proto tcp from any to any port https keep state
んで、10022ポートで受けた先でSSLを取っ払って、SSH本来の22番ポートに到達。
晴れて外部からのSSH接続に成功という流れである。
ちなみに、<rdr_addr>テーブル以外からのアクセスはApacheがそのまま受け取ってSSLで通信する。
結果として、新しいアプリを入れることなく、かつ、処理が高速なPFで片付いたので最適解に落ち着いた気がする。
コメントを残す