定義
NPA Publisher Explicit Proxy Configuration: プライベートアプリケーションを除く、明示的なプロキシを介して依存サービスへの接続を確立できるように、NPA Publisherを有効にします。
Introduction
パブリッシャーは、Netskope Private Accessの主要構成要素の一つです。Netskopeのプライベートクラウド上に存在するGateway、Stitcher、管理サービスなどの他のNPAコンポーネントとは異なり、NPA Publisherは顧客ネットワーク上に存在し、顧客のプライベートサービスにアクセスできます。
明示的なプロキシ設定がない場合、ネットワークのファイアウォールは、NPA PublisherがNPAの操作に必要なNPAスティッチャーや管理サービスなどの依存サービス、およびアップグレード関連の操作に必要なOSパッケージやコンテナイメージサービスに直接接続できるようにする必要があります。
ネットワークが明示的なプロキシ構成になっている場合、発行者管理者はプロキシ設定を構成できます。プロキシ設定が有効になっている場合、NPA Publisherはプロキシを介して依存サービスへの接続を確立します。
Background
セキュリティのために、すべての送信トラフィックをブロックするネットワーク ファイアウォール ルールを指定することがよく行われます。 このような場合、外部ネットワークサービスへの接続手段としては、通常、明示的なプロキシがデフォルトの手段となります。
Linuxでは、 プロキシ設定の慣習は HTTPS_PROXY環境変数を使用してプロキシサーバーとポートを指定し、NO_PROXY環境変数を使用してプロキシをバイパスするドメインまたはアドレスのリストを指定します。 /etc/environment ファイルは HTTPS_PROXY および NO_PROXY 環境変数を格納する場所です。
バイパスリストに宛先が指定されている場合、その宛先への接続は直接確立されることを意味します。通常、宛先へのトラフィックを許可するために、特定のファイアウォールルールが適用されます。
パブリッシャーバージョン R122
Starting with version R122, upgrades are no longer needed and the Proxy configuration will be available to all users in Beta. Please ensure your Publisher is upgraded before proceeding.
明示的プロキシの有効化
パブリッシャー管理者 パブリッシャーウィザードを使用して、明示的なプロキシ構成を有効にします。 起動時に、Publisher Wizard は /etc/environment ファイルの HTTPS_PROXY と NO_PROXY からプロキシ設定を読みます。 プロキシ設定が変更されると、パブリッシャーウィザードは設定を/etc/environmentファイルに保存します。Publisher Wizard は、現在のプロキシ設定を /etc/apt/apt.conf.d/00publisherwizard にある APT の設定に反映させます。また、Dockerデーモンは/etc/systemd/system/docker.service.d/publisherwizard.confに記述されています。
注記
- 認証をバイパスする(認証なし)標準HTTPSプロキシと、SSL検査なしのプロキシがサポートされるべきである。
- この機能は、すべての標準Netskopeコンポーネント、Ubuntu アップデート、および Docker を対象としていますが、その他のコンポーネントについては保証されません。 プロキシ構成とプライベート アプリケーションへのトラフィックは、決して バイパス リストの有無に関わらず、プロキシ構成は変更されません。
プロキシ設定のメニューは、以下のようにネットワーク設定メニューの中にあります。
Configuration menu: 1. Upgrade 2. Network settings 3. Syslog settings 4. Troubleshooter 5. Log settings 6. Exit
ネットワーク設定については2を押してください。
Network settings:
Network settings:
Local IP addresses: 172.31.17.115 Gateway: 172.31.16.1
DNS: 172.31.0.2
EDNS: Enabled for Stitcher connectivity
Default search domain: us-west-2.compute.internal
Warning: Connectivity to the Netskope Dataplane could not be verified. Please check your firewall settings or (re)configure network settings.
Proxy settings:
Disabled
Network interfaces:
eth0
Warning: This NPA Publisher appears to be running in a Public Cloud environment, please manage all network configurations, except for proxy settings, directly via the Cloud Provider Console.
Configuration menu:
1. Use DHCP
2. Use Static IP
3. Disable EDNS
4. Configure proxy settings
5. Return to previous menu
プロキシ設定を行うには4を押してください。
Proxy server: ip-172-31-24-80.us-west-2.compute.internal Proxy port: 3128 Proxy bypass:
プロキシサーバーとポート番号が必要です。
プロキシバイパスはオプションであり、通常は必要ありません。内部機能に必要な宛先は自動的に追加されます。
- バイパスリストには、FQDN、ワイルドカード、IPアドレス、CIDRを追加できます。
- プロキシバイパス項目は、それぞれカンマで区切って追加できます。例えば
*.docker.io,www.tutorialspoint.com,100.0.1.20,100.0.0.0/8
127.0.0.01とlocalhostの2つの宛先が、プロキシバイパスリストに自動的に追加されます。
Network settings:
Local IP addresses: 172.31.17.115, 191.1.0.1
Gateway: 172.31.16.1
DNS: 172.31.0.2
EDNS: Enabled for Stitcher connectivity
Default search domain: us-west-2.compute.internal Stitcher: 103.47.244.165
Proxy settings:
Enabled
Server: ip-172-31-24-80.us-west-2.compute.internal Port: 3128
Bypass: 127.0.0.1,localhost
Network interfaces:
eth0
Warning: This NPA Publisher appears to be running in a Public Cloud environment, please manage all network configurations, except for proxy settings, directly via the Cloud Provider Console.
プロキシ設定が有効になっていて、StitcherのIPアドレスが表示されている場合、パブリッシャーがプロキシ経由で動作していることを意味します。
パブリッシャートークンを使用してプロキシ設定を構成する
パブリッシャーは、パブリッシャートークンを使用したパブリッシャー設定をサポートしています。パブリッシャートークンを手動で拡張して、プロキシ設定を含めることができます。以下の例のように、パブリッシャートークンを取得しました。
eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJucy0xMzgyLm5wYTAxLW1wLW5wZS5ucGEuYm9vbXNrb3BlLm NvbSIsInN1YiI6IjMwMjRhMGM0MjhmODk3NWUiLCJleHAiOjE3MDUwNDQzNzIsImp0aSI6I…
プロキシ設定は以下のとおりです(下記のNO_PROXY設定は必須です)。
HTTPS_PROXY=ip-172-31-24-80.us-west-2.compute.internal:3128 PUBLISHER_USE_PROXY="true" NO_PROXY=127.0.0.1,localhost
以下のようにシェルでbase64コマンドを実行してプロキシ設定をエンコードします(127.0.0.1とlocalhostが常にNO_PROXYリストに追加されていることを確認してください)。
base64 <<END HTTPS_PROXY=ip-172-31-24-80.us-west-2.compute.internal:3128 PUBLISHER_USE_PROXY="true" NO_PROXY=127.0.0.1,localhost END
そして、以下の出力が得られます。
SFRUUFNfUFJPWFk9aXAtMTcyLTMxLTI0LTgwLnVzLXdlc3QtMi5jb21wdXRlLmludGVybmFsOjMxMjg KUFVCTElTSEVSX1VTRV9QUk9YWT0idHJ1ZSIKTk9fUFJPWFk9MTI3LjAuMC4xLGxvY2FsaG9zdAo=
次にこれらを組み合わせ、トークン、カンマ文字(,)、そしてbase64形式のプロキシ設定の順に並べます。
eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJucy0xMzgyLm5wYTAxLW1wLW5wZS5ucGEuYm9vbXNrb3BlLm NvbSIsInN1YiI6IjMwMjRhMGM0MjhmODk3NWUiLCJleHAiOjE3MDUwNDQzNzIsImp0aSI6I…,SFRUUF NfUFJPWFk9aXAtMTcyLTMxLTI0LTgwLnVzLXdlc3QtMi5jb21wdXRlLmludGVybmFsOjMxMjgKUFVCT ElTSEVSX1VTRV9QUk9YWT0idHJ1ZSIKTk9fUFJPWFk9MTI3LjAuMC4xLGxvY2FsaG9zdAo=
結合された文字列をパブリッシャートークンとして使用できます。 パブリッシャーウィザードはパブリッシャートークンをカンマで分割し、 最初の部分をパブリッシャー登録用、2 番目の部分をプロキシ設定用とします。
トラブルシューティング
プロキシ設定が有効で、Stitcherが不明な場合、パブリッシャーがプロキシサーバー経由でStitcherに接続できないことを意味します。営業チームと連携して、トラブルシューティングの手順を確認してください。
Network settings:
Local IP addresses: 172.31.30.9
Gateway: 172.31.16.1
DNS: 172.31.0.2
EDNS: Enabled for Stitcher connectivity
Default search domain: us-west-2.compute.internal
Stitcher: Unknown
Proxy settings:
Enabled
Server: ip-172-31-24-80.us-west-2.compute.internal Port: 3128
Bypass: 127.0.0.1,localhost
Publisher Wizardのログはlogs/publisher_wizard.logで確認できます。これらのログにアクセスするには、まずパブリッシャーウィザードを閉じる必要があります。以下のログが見つかった場合、プロキシ経由の接続が失敗したことを意味します。
2024/10/23 08:10:49 UTC - 2967 publisherhelper => stitcherHost: -> 103.47.244.165 2024/10/23 08:10:54 UTC - 2967 Error: Failed to do request Connect "https://103.47.244.165:443": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
パブリッシャーがStitcherに接続できない場合は、logs/agent.txtにあるパブリッシャーのログを確認してください(以下に、設定されているプロキシサーバーに問題があることを示す兆候も記載されています)。
[ip-172-31-34-12:2024-11-07 15:48:02.458 +00:00] [info] httpsproxy.cpp:49:configureFromEnv():0x7f58a16ed930 Use Proxy [172.31.47.18:3128] with 2 bypass. 127.0.0.1,localhost [ip-172-31-34-12:2024-11-07 15:48:02.464 +00:00] [warning] tundevice.cpp:127:openDevice():0x0 ** TUN opened: tun0 [ip-172-31-34-12:2024-11-07 15:48:02.523 +00:00] [info] dispatcherEpoll.cpp:185:startDispatchSync():0x7f58a165d000 Start Dispatcher 0x0x7f58a165d000 Sync (Beta1). [ip-172-31-34-12:2024-11-07 15:48:02.623 +00:00] [info] agenthandler.cpp:526:refreshAndConnect():0x7f58a16ed500 Launching discovery [ip-172-31-34-12:2024-11-07 15:48:02.623 +00:00] [info] process_runner.cpp:26:start():0x7f58a1640230 Starting commands './npa_publisher_wizard -discoveryrefresh' [ip-172-31-34-12:2024-11-07 15:48:05.727 +00:00] [info] process_runner.cpp:74:handleClose():0x7f58a1640230 Process execution is complete [ip-172-31-34-12:2024-11-07 15:48:05.728 +00:00] [info] agenthandler.cpp:188:resolveByEDNS():0x7f58a1655290 Querying external DNS server for stitcher.npa.goskope.com [ip-172-31-34-12:2024-11-07 15:48:05.730 +00:00] [info] sslhelper.cpp:115:newCtx():0x0 Tls Cipher list : Default [ip-172-31-34-12:2024-11-07 15:48:08.797 +00:00] [info] tcpclient.cpp:195:handleClose():0x7f58a1715600 Closing socket m_fd 11 fd 11 [ip-172-31-34-12:2024-11-07 15:48:08.800 +00:00] [error] httpclient.cpp:118:sendResponseToChildOnce():0x7f58a163c040 HTTP Request GET /resolve?name=stitcher.npa.goskope.com HTTP/1.1 Host: dns.google User-Agent: curl/7.47.0 Content-Length: 0 Connection: close Content-Type: application/json . HTTP Client received non successful HTTP code. State 1 Timeout 0, Code 0 Length 0 Response [ip-172-31-34-12:2024-11-07 15:48:08.800 +00:00] [error] ednshttpclient.cpp:41:handleResponse():0x7f58a163c040 External DNS query failed [ip-172-31-34-12:2024-11-07 15:48:08.800 +00:00] [info] agenthandler.cpp:194:operator()():0x7f58a1655290 EDNS lookup for host stitcher.npa.goskope.com failed. Falling back to LDNS [ip-172-31-34-12:2024-11-07 15:48:08.801 +00:00] [info] agenthandler.cpp:251:operator()():0x0 Got Proxy [172.31.47.18] IP via LDNS. Proxy IP is [172.31.47.18]. [ip-172-31-34-12:2024-11-07 15:48:08.801 +00:00] [info] agenthandler.cpp:484:connectToStitcher():0x7f58a16ed500 Connecting to Stitcher stitcher.npa.goskope.com via Proxy 172.31.47.18 [ip-172-31-34-12:2024-11-07 15:48:08.801 +00:00] [info] sslclient.cpp:161:prepare():0x0 Connecting to 172.31.47.18:3128, fd: 11 [ip-172-31-34-12:2024-11-07 15:48:11.869 +00:00] [info] socket_tools.cpp:228:connectWithTimeOut():0x0 SO_ERROR value 113 (No route to host), fd: 11 [ip-172-31-34-12:2024-11-07 15:48:11.869 +00:00] [info] socket_tools.cpp:228:connectWithTimeOut():0x0 SO_ERROR value 0 (Success), fd: 11 [ip-172-31-34-12:2024-11-07 15:48:11.869 +00:00] [info] sslclient.cpp:254:connect():0x0 Establishing SSL connection to 172.31.47.18:3128, timeout: 60s [ip-172-31-34-12:2024-11-07 15:48:11.869 +00:00] [info] httpsproxy.cpp:148:requestConnect():0x7f58a16ed930 Requesting Proxy [172.31.47.18:3128] - [stitcher.npa.goskope.com:443] connection. [ip-172-31-34-12:2024-11-07 15:48:11.869 +00:00] [error] httpsproxy_transport.cpp:31:sendMessage():0x7f58a162b9c0 Failed to send to proxy. Broken pipe. [ip-172-31-34-12:2024-11-07 15:48:11.869 +00:00] [error] sslclient.cpp:236:sslConnect():0x0 Unable to establish SSL connection. Error 0 32 (Broken pipe). Closing socket 11 [ip-172-31-34-12:2024-11-07 15:48:11.869 +00:00] [info] agenthandler.cpp:576:establish():0x7f58a16ed500 SSL connection failed. Proxy [172.31.47.18:3128] - [stitcher.npa.goskope.com:443] state [Connection Error]. [ip-172-31-34-12:2024-11-07 15:48:12.871 +00:00] [info] agenthandler.cpp:526:refreshAndConnect():0x7f58a16ed500 Launching discovery [ip-172-31-34-12:2024-11-07 15:48:12.871 +00:00] [info] process_runner.cpp:26:start():0x7f58a1640230 Starting commands './npa_publisher_wizard -discoveryrefresh' [ip-172-31-34-12:2024-11-07 15:48:12.904 +00:00] [info] process_runner.cpp:74:handleClose():0x7f58a1640230 Process execution is complete [ip-172-31-34-12:2024-11-07 15:48:12.905 +00:00] [info] agenthandler.cpp:188:resolveByEDNS():0x7f58a1655290 Querying external DNS server for stitcher.npa.goskope.com [ip-172-31-34-12:2024-11-07 15:48:14.941 +00:00] [info] tcpclient.cpp:195:handleClose():0x7f58a1715900 Closing socket m_fd 11 fd 11 [ip-172-31-34-12:2024-11-07 15:48:14.941 +00:00] [error] httpclient.cpp:118:sendResponseToChildOnce():0x7f58a163c040 HTTP Request GET /resolve?name=stitcher.npa.goskope.com HTTP/1.1

