Jenkins 1.504をWindowsで使用します。
マスターとスレーブを異なるサブネットワークに配置し、その間にファイアウォールを配置する必要があります。
ポートファイアウォールルールをANYからANYに変更することはできません。exactポート番号を指定する必要があります。
マスターがリッスンしているポートを知っています。
また、スレーブは実行ごとに動的に割り当てられた任意のポートからマスターへの接続を開き、マスター側のポートも任意であることがわかります。
Jenkinsの管理>グローバルセキュリティの設定> TCPポート)で指定することで、マスターのポートを修正できます。
スレーブポートを修正するには?
[〜#〜] update [〜#〜]:接続メカニズムが見つかりましたここで説明します: https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+CLI#JenkinsCLI-Connectionmechanism
私たちにとってはうまくいくと思いますが、それでも固定2固定ポート接続を使用した方が良いでしょう。
同様の状況がありましたが、Infosecは1を許可することに同意したため、スレーブポートを修正する必要はありませんでした。 JNLPスレーブエージェントの場合」)。
TCP
49187 - Fixed jnlp port
8080 - jenkins http port
スレーブをWindowsサービスとして起動するために必要な他のポート
TCP
135
139
445
UDP
137
138
スレーブはサーバーではなく、クライアントタイプのアプリケーションです。ネットワーククライアントは(ほとんど)特定のポートを使用しません。代わりに、OSにランダムな空きポートを要求します。通常、現在の構成が事前にわからない多くのマシンでクライアントを実行するので、これは非常によく機能します。これにより、毎日何千もの「ポートが既に使用されているためにクライアントが起動しない」というバグレポートが防止されます。
セキュリティ部門に、スレーブはサーバーではなく、サーバーに接続するクライアントであり、絶対にclient:ANY-> server:FIXEDというルールが必要であることを伝える必要があります。クライアントのポート番号は1024以上である必要があります( ポート1から1023には特別なアクセス許可が必要です )が、これにルールを追加して実際に何かを得られるかどうかはわかりません-攻撃者が特権ポートを開くことができる場合、彼らは基本的にすでにマシンを所有しています。
彼らが主張するなら、人々があなたの会社で使用するすべてのウェブブラウザに同じルールを必要としない理由を彼らに尋ねてください。
同様のシナリオがあり、説明したようにJNLPポートを設定し、そのポートを使用するサーバーでの接続を許可する単一のファイアウォールルールを追加した後に接続しても問題はありませんでした。ランダムに選択されたクライアントポートが既知のサーバーポートに移動することを許可します(Host:ANY-> server:1ルールが必要です)。
ソースコードを読んだところ、スレーブからリクエストを行うときに使用するローカルポートを設定する方法がわかりません。残念ですが、それは素晴らしい機能になるでしょう。
代替案:
ポートNでリッスンし、一定のローカルポートを使用してリモートホスト上の実際のJenkinsサーバーにすべてのデータを転送する単純なプロキシをクライアントで使用します。実際のJenkinsサーバーではなく、このローカルプロキシにスレーブを接続します。
使用するローカルポートを指定するオプションを許可するカスタムJenkinsスレーブビルドを作成します。
また、自己署名証明書を介してHTTPSを使用している場合は、コマンドラインで-noCertificateCheckオプションを指定するようにスレーブ上の設定jenkins-slave.xmlファイルを変更する必要があります。