FreeBSD 10の設定には、公的にアクセス可能なnginx Webサーバーを実行する刑務所の1つと、JettyベースのJavaバックエンドサーバーを実行する別の刑務所があります。各刑務所には、lo1ループバックインターフェイスに接続された独自の内部IPアドレス127.0.1.xがあります。これらはすべて、着信トラフィックをnginx刑務所にリダイレクトし、そこからJetty刑務所にリダイレクトするpfファイアウォールで実行するように構成されています。デフォルトのpf設定は次のとおりです。
これで、httpsを介して外部からアクセスできるGitリポジトリが必要です。これは設定され、うまく機能しますが、外部からのみアクセスできます。桟橋刑務所で接続できません。しかし、パブリックIPアドレスを介してJettyバックエンド刑務所からGitリポジトリにアクセスしたいと思います。
pfでこの機能を有効にするために、次の行のようなことを試しましたが、成功しませんでした。
rdr pass proto tcp from $ip_jetty to $ip_public port https -> $ip_nginx
私のPFファイアウォールの設定は次のとおりです。
ip_public = "6.7.8.9"
if_external = "igb0"
net_jails = "127.0.1.0/24"
ip_nginx = "127.0.1.1"
ip_jetty = "127.0.1.10"
# Allow traffic from jails to outside world, enabled by network address translation
nat pass on $if_external from $net_jails to any -> $ip_public
# Redirect incoming web traffic to nginx jail
rdr pass on $if_external proto tcp from any to $ip_public port { http, https } -> $ip_nginx
# Allow outgoing connections
pass out all
# Allow nginx access to Jetty backend
pass in on lo1 proto tcp from $ip_nginx to $ip_jetty port 8080
ベストアンサー1
私の質問に答えるために、次のファイアウォール設定を使用して動作しました。
# Allow dynaserv jail to access git on https port of web jail
pass in on lo1 proto tcp from $ip_jetty to $ip_nginx port https
また、Jetty Jailの/ etc / hostsファイルにNginx Jailの内部IPアドレスを追加しました。
127.0.1.1 git.mycompany.com
これにより、トラフィックは外部ネットワークデバイスの代わりに内部lo1ループバックインターフェイスを介してルーティングされます。これは私が元の投稿で望んでいたものとまったく一致しませんが、一度設定したら正しく機能します。
外部ネットワークデバイスを使用して予想される方法で問題を解決する方法を知っている人は、まだ答えに興味があります。