Skip to content

IPC ko KR

ArchiBot edited this page Aug 6, 2026 · 68 revisions

IPC

ASF๋Š” ์œ ์ผํ•œ ์ž์ฒด IPC ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ์ด๋กœ ์ธํ•ด ํ”„๋กœ์„ธ์Šค์™€ ๋” ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. IPC๋Š” **ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ (inter-process communication)**์˜ ์•ฝ์ž์ด๋ฉฐ, ๊ฐ€์žฅ ๋‹จ์ˆœํ•˜๊ฒŒ ์ •์˜ํ•˜๋ฉด Kestrel HTTP ์„œ๋ฒ„ ๊ธฐ๋ฐ˜์˜ "ASF ์›น ์ธํ„ฐํŽ˜์ด์Šค"๋กœ, ์ตœ์ข… ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ํ”„๋ŸฐํŠธ์—”๋“œ(ASF-ui)์™€ ์ œ3์ž ์—ฐ๋™์„ ์œ„ํ•œ ๋ฐฑ์—”๋“œ(ASF API) ์–‘์ชฝ ๋ชจ๋‘๋กœ ํ”„๋กœ์„ธ์Šค์™€ ์ถ”๊ฐ€๋กœ ์—ฐ๋™ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

IPC๋Š” ์šฐ๋ฆฌ์˜ ํ•„์š”์™€ ๋Šฅ๋ ฅ์— ๋”ฐ๋ผ ์ˆ˜๋งŽ์€ ๋‹ค๋ฅธ ๊ฒƒ๋“ค๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ASF์™€ ๋ชจ๋“  ๋ด‡์˜ ์ƒํƒœ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ , ASF์— ๋ช…๋ น์–ด๋ฅผ ๋ณด๋‚ด๊ณ , ์ผ๋ฐ˜/๋ด‡ ํ™˜๊ฒฝ์„ค์ •์„ ๊ฐ€์ ธ์™€์„œ ์ˆ˜์ •ํ•˜๊ณ , ์ƒˆ๋กœ์šด ๋ด‡์„ ์ถ”๊ฐ€ํ•˜๊ณ , ๊ธฐ์กด์˜ ๋ด‡์„ ์‚ญ์ œํ•˜๊ณ , ๋ฐฑ๊ทธ๋ผ์šด๋“œ ๊ฒŒ์ž„ ๋“ฑ๋ก๊ธฐ ์— ํ‚ค๋ฅผ ๋ณด๋‚ด๊ณ , ASF์˜ ๋กœ๊ทธํŒŒ์ผ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ์ž‘์—…์€ API๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋‹น์‹ ์ด ์ž์‹ ์˜ ๋„๊ตฌ์™€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์งœ์„œ ASF ์‹คํ–‰์ค‘์— ASF์™€ ํ†ต์‹ ํ•˜๊ณ  ์˜ํ–ฅ์„ ๋ฏธ์น ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ์ถ”๊ฐ€๋กœ, ๋ช…๋ น์–ด ์ „์†ก๊ฐ™์€ ์„ ํƒ๋œ ์ž‘์—…์€ ASF-ui์— ๊ตฌํ˜„๋˜์–ด ์žˆ์œผ๋ฉฐ ์นœ์ˆ™ํ•œ ์›น ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


์‚ฌ์šฉ๋ฒ•

IPC **์ „์—ญ ์„ค์ • ์†์„ฑ**์„ ํ†ตํ•ด ์ˆ˜๋™์œผ๋กœ ๋น„ํ™œ์„ฑํ™”ํ•˜์ง€ ์•Š๋Š” ํ•œ, IPC๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ASF๋Š” IPC์˜ ์‹คํ–‰์„ ๋กœ๊ทธ์—์„œ ํ‘œ์‹œํ•˜์—ฌ IPC ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์ œ๋Œ€๋กœ ์‹œ์ž‘๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

INFO|ASF|Start() Starting IPC server...
INFO|ASF|Start() IPC server ready!

ASF์˜ http ์„œ๋ฒ„๊ฐ€ ์ด์ œ ์„ ํƒํ•œ ๋‹จ๋ง์—์„œ ์ˆ˜์‹ ์ค‘์ž…๋‹ˆ๋‹ค. IPC์šฉ ์ปค์Šคํ…€ ์„ค์ • ํŒŒ์ผ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ, ๊ธฐ๋ณธ 1242 ํฌํŠธ์—์„œ IPv4 ๊ธฐ๋ฐ˜ **127.0.0.1**๊ณผ IPv6 ๊ธฐ๋ฐ˜ [::1] ๋ชจ๋‘๋ฅผ ํฌํ•จํ•˜๋Š” localhost๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์œ„ ๋งํฌ๋ฅผ ํ†ตํ•ด IPC ์ธํ„ฐํŽ˜์ด์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ASF ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰ ์ค‘์ธ ๊ธฐ๊ธฐ์—์„œ๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

ASF์˜ IPC ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์‚ฌ์šฉ๊ณ„ํš์— ๋”ฐ๋ผ ์„ธ๊ฐ€์ง€์˜ ๋‹ค๋ฅธ ์ ‘๊ทผ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€์žฅ ๋‚ฎ์€ ๋‹จ๊ณ„๋กœ IPC ์ธํ„ฐํŽ˜์ด์Šค์˜ ํ•ต์‹ฌ์ด๋ฉฐ ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ์ด ๋™์ž‘ํ•˜๋„๋ก ํ•˜๋Š” ASF API ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์‹ ๋งŒ์˜ ๋„๊ตฌ๋‚˜ ์œ ํ‹ธ๋ฆฌํ‹ฐ, ํ”„๋กœ์ ํŠธ์—์„œ ASF์™€ ์ง์ ‘์ ์œผ๋กœ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ค‘๊ฐ„ ๋‹จ๊ณ„๋กœ ASF API์˜ ํ”„๋ก ํŠธ์—”๋“œ ์—ญํ• ์„ ํ•˜๋Š” Swagger documentation ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ASF API์˜ ์™„์ „ํ•œ ๋ฌธ์„œ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ๋” ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ๋งŒ์•ฝ API๋ฅผ ํ†ตํ•ด ASF์™€ ํ†ต์‹ ํ•˜๋ ค๋Š” ๋„๊ตฌ, ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ˜น์€ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋ ค๋ฉด Swagger ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•ด๋ณด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๊ฐ€์žฅ ๋†’์€ ๋‹จ๊ณ„๋กœ ASF API์— ๊ธฐ๋ฐ˜ํ•œ ASF-ui ๊ฐ€ ์žˆ์œผ๋ฉฐ, ASF ์ž‘์—…์„ ์ˆ˜ํ–‰๊ฐ€๋Šฅํ•œ ์‚ฌ์šฉ์ž ์นœํ™”์ ์ธ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ตœ์ข…์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ๊ธฐ๋ณธ IPC ์ธํ„ฐํŽ˜์ด์Šค์ด๋ฉฐ, ASF API๋กœ ๋งŒ๋“ค์ˆ˜ ์žˆ๋Š” ์™„๋ฒฝํ•œ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค. ์›ํ•œ๋‹ค๋ฉด --path ๋ช…๋ น์ค„ ์ธ์ž ๋ฅผ ์ง€์ •ํ•˜๊ณ , ๊ทธ๊ณณ์— ์œ„์น˜ํ•œ ์‚ฌ์šฉ์ž ์ง€์ • www ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž์‹ ๋งŒ์˜ ์‚ฌ์šฉ์ž ์ง€์ • ์›น UI๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.


ASF-ui

ASF-ui๋Š” ์ตœ์ข…์‚ฌ์šฉ์ž์—๊ฒŒ ์‚ฌ์šฉ์ž ์นœํ™”์ ์ธ ๊ทธ๋ž˜ํ”ฝ ์›น ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ASF API ์˜ ํ”„๋ก ํŠธ์—”๋“œ๋กœ ๋™์ž‘ํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ASF์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” ๊ธฐ๋ณธ UI ์ž…๋‹ˆ๋‹ค.

์œ„์—์„œ ์„ค๋ช…ํ–ˆ๋“ฏ์ด ASF-ui๋Š” ASF ํ•ต์‹ฌ ๊ฐœ๋ฐœ์ž๋“ค์ด ์œ ์ง€๊ด€๋ฆฌํ•˜์ง€ ์•Š๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ASF-ui ๋ฆฌํฌ ์— ์žˆ๋Š” ์ž์ฒด ํ๋ฆ„์„ ๋”ฐ๋ผ๊ฐ€๋ฉฐ, ์ด๊ณณ์—์„œ ๋ชจ๋“  ๊ด€๋ จ๋œ ์งˆ๋ฌธ, ์ด์Šˆ, ๋ฒ„๊ทธ ๋ณด๊ณ  ๋ฐ ์ œ์•ˆ์ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

ASF ํ”„๋กœ์„ธ์Šค์˜ ์ผ๋ฐ˜์ ์ธ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ASF-ui๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ด‡ ๊ด€๋ฆฌ, ์„ค์ • ๋ณ€๊ฒฝ, ๋ช…๋ น์–ด ์ „์†ก, ๊ทธ๋ฆฌ๊ณ  ํ‰์†Œ ASF๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ทธ ์™ธ ์ผ๋ถ€ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ASF-ui


ASF API

ASF API๋Š” ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ํ˜•์‹์ธ JSON์— ๊ธฐ๋ฐ˜ํ•œ ์ „ํ˜•์ ์ธ REST ์›๋ฆฌ๋ฅผ ๋”ฐ๋ฅด๋Š” ์›น API ์ž…๋‹ˆ๋‹ค. ์œ„๋ฆฌ๋Š” HTTP ์ƒํƒœ์ฝ”๋“œ(ํ•ด๋‹นํ•˜๋Š” ๊ฒฝ์šฐ)์™€, ์ง์ ‘ ํŒŒ์‹ฑํ•ด์„œ ์š”์ฒญ์ด ์„ฑ๊ณตํ–ˆ๋Š”์ง€ ํ˜น์€ ์™œ ์‹คํŒจํ–ˆ๋Š”์ง€๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋Š” ์‘๋‹ต์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜์—ฌ ์‘๋‹ต์„ ์ •ํ™•ํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ์ตœ์„ ์„ ๋‹คํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ASF API๋Š” ์ ์ ˆํ•œ /Api ๋‹จ๋ง์— ์ ์ ˆํ•œ ์š”์ฒญ์„ ๋ณด๋‚ด์„œ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด API ๋‹จ๋ง์„ ์‚ฌ์šฉํ•ด์„œ ์ž์‹ ๋งŒ์˜ ๋„์šฐ๋ฏธ ์Šคํฌ๋ฆฝํŠธ, ๋„๊ตฌ, GUI ๋“ฑ๋“ฑ์„ ๋งŒ๋“ค์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ASF-ui์˜ ๋น„๊ฒฐ์ด๊ณ , ๋‹ค๋ฅธ ๋ชจ๋“  ๋„๊ตฌ๋„ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ASF API๋Š” ๊ณต์‹์ ์œผ๋กœ ์ง€์›๋˜๋ฉฐ ASF ํ•ต์‹ฌ ํŒ€์ด ์œ ์ง€๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ด์šฉ๊ฐ€๋Šฅํ•œ ๋‹จ๋ง, ์„ค๋ช…, ์š”์ฒญ, ์‘๋‹ต, http ์ƒํƒœ์ฝ”๋“œ์™€ ASF API์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ์— ๋Œ€ํ•œ ์™„์ „ํ•œ ๋ฌธ์„œ๋Š”**swagger ๋ฌธ์„œ**๋ฅผ ์ฐธ๊ณ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

ASF API


์‚ฌ์šฉ์ž ์ง€์ • ํ™˜๊ฒฝ์„ค์ •

IPC ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ถ”๊ฐ€ ํ™˜๊ฒฝ์„ค์ • ํŒŒ์ผ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.IPC.config ํŒŒ์ผ์„ ํ‘œ์ค€ ASF config ๋””๋ ‰ํ† ๋ฆฌ์— ๋„ฃ์œผ์‹ญ์‹œ์˜ค.

์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ์ด ํŒŒ์ผ์€ ASF Kestrel http ์„œ๋ฒ„์˜ ๊ณ ๊ธ‰ ํ™˜๊ฒฝ์„ค์ •๊ณผ ๋‹ค๋ฅธ IPC ๊ด€๋ จ ์กฐ์ •์‚ฌํ•ญ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ํŠน์ •ํ•œ ํ•„์š”๊ฐ€ ์—†๋‹ค๋ฉด ์ด ํŒŒ์ผ์„ ์‚ฌ์šฉํ•  ์ด์œ ๋Š” ์—†์Šต๋‹ˆ๋‹ค. ASF๋Š” ์ด ๊ฒฝ์šฐ ํ•ฉ๋ฆฌ์ ์ธ ๊ธฐ๋ณธ๊ฐ’์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํ™˜๊ฒฝ์„ค์ • ํŒŒ์ผ์€ ๋‹ค์Œ์˜ JSON ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

{
    "Kestrel": {
        "Endpoints": {
            "example-http4": {
                "Url": "http://127.0.0.1:1242"
            },

            "example-http6": {
                "Url": "http://[::1]:1242"
            },

            "example-https4": {
                "Url": "https://127.0.0.1:1242",

                "Certificate": {
                    "Path": "/path/to/certificate.pfx",
                    "Password": "passwordToPfxFileAbove"
                }
            },

            "example-https6": {
                "Url": "https://[::1]:1242",

                "Certificate": {
                    "Path": "/path/to/certificate.pfx",
                    "Password": "passwordToPfxFileAbove"
                }
            },

            "example-unix-socket": {
                "Url": "http://unix:/run/asf-asf/asf.sock"
            }
        },

        "KnownNetworks": [
            "10.0.0.0/8",
            "172.16.0.0/12",
            "192.168.0.0/16"
        ],

        "PathBase": "/"
    }
}

Endpoints - ์ด๊ฒƒ์€ ๋‹จ๋ง์˜ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๋‹จ๋ง์€ example-http4์™€ ๊ฐ™์€ ์œ ์ผํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, Url ์†์„ฑ๊ฐ’์€ Protocol://Host:Port ์ˆ˜์‹ ์ฃผ์†Œ๋ฅผ ํŠน์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ASF๋Š” IPv4์™€ IPv6 http ์ฃผ์†Œ๋ฅผ ์ˆ˜์‹ ํ•˜์ง€๋งŒ, ํ•„์š”ํ• ์ง€ ๋ชฐ๋ผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” https ์˜ˆ์‹œ๋ฅผ ์ถ”๊ฐ€ํ•ด ๋‘์—ˆ์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ์—”๋“œํฌ์ธํŠธ๋งŒ ์„ ์–ธํ•ด์•ผ ํ•˜๋ฉฐ, ๋” ์‰ฝ๊ฒŒ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์œ„์— ๋ช‡ ๊ฐ€์ง€ ์˜ˆ์‹œ๋ฅผ ํฌํ•จํ•ด๋‘์—ˆ์Šต๋‹ˆ๋‹ค.

Host์—๋Š” localhost, ์ˆ˜์‹  ๋Œ€๊ธฐํ•  ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ณ ์ • IP ์ฃผ์†Œ(IPv4/IPv6), ๋˜๋Š” ASF์˜ http ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ธํ„ฐํŽ˜์ด์Šค์— ๋ฐ”์ธ๋”ฉํ•˜๋Š” * ๊ฐ’์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. mydomain.com์ด๋‚˜ 192.168.0.*์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๊ฐ’์„ ์‚ฌ์šฉํ•ด๋„ ``์™€ ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋ฉฐ, IP ํ•„ํ„ฐ๋ง์€ ๊ตฌํ˜„๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์›๊ฒฉ ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•˜๋Š” Host ๊ฐ’์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๊ฐ๋ณ„ํžˆ ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ASF IPC ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋‹ค๋ฅธ ๊ธฐ๊ธฐ์—์„œ์˜ ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•˜๊ณ , ๋ณด์•ˆ ์œ„ํ—˜์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ตœ์†Œํ•œ `IPCPassword`, ๊ทธ๋ฆฌ๊ณ  ๋ฐฉํ™”๋ฒฝ์˜ ์‚ฌ์šฉ์„ ๊ฐ•๋ ฅํ•˜๊ฒŒ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

KnownNetworks - ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ„์ฃผํ•˜๋Š” ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•˜๋Š” ์„ ํƒ์  ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ASF๋Š” ์˜ค์ง ๋ฃจํ”„๋ฐฑ ์ธํ„ฐํŽ˜์ด์Šค(localhost, ๋™์ผํ•œ ๊ธฐ๊ธฐ)๋ฅผ ์‹ ๋ขฐํ•˜๋„๋ก ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์†์„ฑ์€ ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ฒซ์งธ, IPCPassword๋ฅผ ์ƒ๋žตํ•˜๋Š” ๊ฒฝ์šฐ, ๋ณด์•ˆ ์กฐ์น˜๋กœ์„œ ์•Œ๋ ค์ง„(์‹ ๋ขฐํ•˜๋Š”) ๋„คํŠธ์›Œํฌ์˜ ๊ธฐ๊ธฐ๋งŒ ASF API์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜๊ณ  ๊ทธ ์™ธ ๋ชจ๋“  ์ ‘๊ทผ์€ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค. ๋‘˜์งธ, ์ด ์†์„ฑ์€ ASF์— ์ ‘๊ทผํ•˜๋Š” ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ์™€ ๊ด€๋ จํ•ด ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ASF๋Š” ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ์„œ๋ฒ„๊ฐ€ ์•Œ๋ ค์ง„(์‹ ๋ขฐํ•˜๋Š”) ๋„คํŠธ์›Œํฌ ๋‚ด์— ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ํ•ด๋‹น ํ—ค๋”๋ฅผ ์‹ ๋ขฐํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ—ค๋”๋ฅผ ์‹ ๋ขฐํ•˜๋Š” ๊ฒƒ์€ ASF์˜ ๋ฌด์ฐจ๋ณ„ ๋Œ€์ž… ๊ณต๊ฒฉ ๋ฐฉ์ง€ ๋ฉ”์ปค๋‹ˆ์ฆ˜๊ณผ ๊ด€๋ จํ•ด ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ์ž์ฒด๋ฅผ ์ฐจ๋‹จํ•˜๋Š” ๋Œ€์‹ , ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๊ฐ€ ์›๋ณธ ๋ฉ”์‹œ์ง€์˜ ์ถœ์ฒ˜๋กœ ์ง€์ •ํ•œ IP๋ฅผ ์ฐจ๋‹จํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์‹ ๋ขฐํ•˜๋Š” ๊ธฐ๊ธฐ๊ฐ€ ์นจํ•ด๋‹นํ•˜๊ฑฐ๋‚˜ ์ž˜๋ชป ์„ค์ •๋œ ๊ฒฝ์šฐ ์ž ์žฌ์ ์ธ IP ์Šคํ‘ธํ•‘ ๊ณต๊ฒฉ ๋ฐ ๋ฌด๋‹จ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ด์ง€๋ฏ€๋กœ, ์—ฌ๊ธฐ์„œ ์ง€์ •ํ•˜๋Š” ๋„คํŠธ์›Œํฌ์—๋Š” ๊ฐ๋ณ„ํžˆ ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

PathBase - IPC ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์‚ฌ์šฉ๋  ์„ ํƒ์  ๊ธฐ๋ณธ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ /์ด๋ฉฐ, ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ๋Š” ์ˆ˜์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด ์†์„ฑ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ฉด ์ „์ฒด IPC ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉ์ž ์ง€์ • ์ ‘๋‘์‚ฌ์—์„œ ํ˜ธ์ŠคํŒ…ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด http://localhost:1242 ๊ฐ€ ์•„๋‹ˆ๋ผ http://localhost:1242/MyPrefix ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ง€์ • PathBase ๋Š” ํŠน์ •ํ•œ URL๋งŒ ํ”„๋ก์‹œํ•˜๊ธฐ ์›ํ•˜๋Š” ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ์˜ ํŠน์ • ์„ค์น˜์™€์˜ ์กฐํ•ฉ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ „์ฒด mydomain.com ๋„๋ฉ”์ธ์ด ์•„๋‹Œmydomain.com/ASF ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” mydomain.com/ASF/Api/X๋ฅผ localhost:1242/Api/X๋กœ ๋งคํ•‘ํ•˜๋Š” rewrite ๊ทœ์น™์„ ์›น ์„œ๋ฒ„์— ์ž‘์„ฑํ•ด์•ผ ํ•˜์ง€๋งŒ, ๋Œ€์‹  ์ปค์Šคํ…€ PathBase๋ฅผ /ASF๋กœ ์ง€์ •ํ•˜๋ฉด mydomain.com/ASF/Api/X๋ฅผ localhost:1242/ASF/Api/X๋กœ ๋” ๊ฐ„ํŽธํ•˜๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ์ด ์‚ฌ์šฉ์ž ์ง€์ • ๊ธฐ๋ณธ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค๊ณ  ์ง„์‹ฌ์œผ๋กœ ๋ฏฟ์ง€ ์•Š๋Š” ํ•œ, ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋‘๋Š” ๊ฒƒ์ด ์ตœ์„ ์ž…๋‹ˆ๋‹ค.

์˜ˆ์‹œ config

๊ธฐ๋ณธ ํฌํŠธ ๋ณ€๊ฒฝ

๋‹ค์Œ config๋Š” ASF์˜ ๊ธฐ๋ณธ ์ˆ˜์‹  ๋Œ€๊ธฐ ํฌํŠธ๋ฅผ 1242์—์„œ 1337๋กœ ๋‹จ์ˆœํžˆ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ํฌํŠธ๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, 1024-32767 ๋ฒ”์œ„๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์™ธ์˜ ํฌํŠธ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋“ฑ๋ก๋œ(registered) ํฌํŠธ๋ผ์„œ, ์˜ˆ๋ฅผ ๋“ค์–ด Linux์—์„œ๋Š” root ๊ถŒํ•œ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

{
    "Kestrel": {
        "Endpoints": {
            "HTTP4": {
                "Url": "http://127.0.0.1:1337"
            },

            "HTTP6": {
                "Url": "http://[::1]:1337"
            }
        }
    }
}

๋ชจ๋“  IP์—์„œ์˜ ์ ‘๊ทผ ํ—ˆ์šฉ

๋‹ค์Œ config๋Š” ๋ชจ๋“  ์†Œ์Šค๋กœ๋ถ€ํ„ฐ์˜ ์›๊ฒฉ ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•˜๋ฏ€๋กœ, ์œ„์—์„œ ์ œ๊ณตํ•œ ์ด์— ๊ด€ํ•œ ๋ณด์•ˆ ์•ˆ๋‚ด๋ฅผ ๋ฐ˜๋“œ์‹œ ์ฝ๊ณ  ์ดํ•ดํ–ˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

{
    "Kestrel": {
        "Endpoints": {
            "HTTP": {
                "Url": "http://*:1242"
            }
        }
    }
}

๋ชจ๋“  ์ถœ์ฒ˜์—์„œ์˜ ์ ‘๊ทผ์ด ํ•„์š”ํ•˜์ง€ ์•Š๊ณ  (์˜ˆ: LAN ๋‚ด์—์„œ๋งŒ ์ ‘๊ทผํ•˜๋Š” ๊ฒฝ์šฐ), ASF๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ๊ธฐ๊ธฐ์˜ ๋กœ์ปฌ IP ์ฃผ์†Œ(์˜ˆ: 192.168.0.10)๋ฅผ ํ™•์ธํ•˜์—ฌ ์œ„ ์˜ˆ์‹œ ์„ค์ •์˜ * ๋Œ€์‹  ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ์ข‹์Šต๋‹ˆ๋‹ค. ์•„์‰ฝ๊ฒŒ๋„ ์ด๋Š” LAN ์ฃผ์†Œ๊ฐ€ ํ•ญ์ƒ ๊ณ ์ •๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ๋กœ์ปฌ ์„œ๋ธŒ๋„ท๋งŒ ASF ํฌํŠธ์— ์ ‘๊ทผํ•˜๋„๋ก ๋ฐฉํ™”๋ฒฝ์„ ์ง์ ‘ ์„ค์ •ํ•˜๊ณ , *๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํŽธ์ด ๋Œ€์ฒด๋กœ ๋” ๋‚˜์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


TCP ๋Œ€์‹  ์œ ๋‹‰์Šค ์†Œ์ผ“ ์‚ฌ์šฉ

์œ ๋‹‰์Šค ์†Œ์ผ“์€ Windows๊ฐ€ ์•„๋‹Œ ํ”Œ๋žซํผ์—์„œ ์ง€์›๋ฉ๋‹ˆ๋‹ค. asf ์‚ฌ์šฉ์ž๋กœ ์ €ํฌ **systemd ์„œ๋น„์Šค**๋ฅผ ์‚ฌ์šฉ ์ค‘์ด๋ผ๋ฉด ์•„๋ž˜ ๋‚ด์šฉ์ด ๋ณ„๋„ ์„ค์ • ์—†์ด ๋ฐ”๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด, ํ•„์š”์— ๋งž๊ฒŒ ๊ฒฝ๋กœ๋ฅผ ์กฐ์ •ํ•˜์„ธ์š”.

{
    "Kestrel": {
        "Endpoints": {
            "Unix": {
                "Url": "http://unix:/run/asf-asf/asf.sock"
            }
        }
    }
}

ASF์—๋Š” ์œ ๋‹‰์Šค ์†Œ์ผ“ ์ƒ์„ฑ ์‹œ ๊ถŒํ•œ์„ chmod๋ฅผ ํ†ตํ•ด 0666์œผ๋กœ ์ž๋™ ๋ณ€๊ฒฝํ•˜๋Š” ์ปค์Šคํ…€ ๋กœ์ง์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜น์‹œ ์ด๊ฒƒ์ด ์›์น˜ ์•Š๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด, ๋Œ€์‹  ์†Œ์ผ“์˜ ํ•˜์œ„ ํด๋” ๊ถŒํ•œ์„ ์ˆ˜์ •ํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด [Service] ์•„๋ž˜ **systemd override**์—์„œ RuntimeDirectoryMode=0700์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์œ ๋‹‰์Šค ์†Œ์ผ“์€ ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ํ†ต์‹ ์„ ์ง€์›ํ•˜๋Š” ํŠน์ • ์†Œํ”„ํŠธ์›จ์–ด์—์„œ ํ‘œ์ค€ TCP ์†Œ์ผ“์˜ ๋Œ€์•ˆ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์–‘ํ•œ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ์—…์ŠคํŠธ๋ฆผ ์„œ๋ฒ„๋กœ ํ™œ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


์ธ์ฆ

ASF IPC ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ IPCPassword๊ฐ€ null๋กœ ์„ค์ •๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์–ด๋– ํ•œ ์ข…๋ฅ˜์˜ ์ธ์ฆ๋„ ์š”๊ตฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ IPCPassword๊ฐ€ ๋นˆ ๊ฐ’์ด ์•„๋‹Œ๊ฒƒ์œผ๋กœ ์„ค์ •๋˜์–ด ํ™œ์„ฑํ™”๋˜๋ฉด, ๋ชจ๋“  ASF API ํ˜ธ์ถœ์€ IPCPassword์— ๋งž๋Š” ์•”ํ˜ธ๋ฅผ ์š”๊ตฌํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ธ์ฆ์„ ์ƒ๋žตํ•˜๊ฑฐ๋‚˜ ์ž˜๋ชป๋œ ์•”ํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด 401 - Unauthorized ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ธ์ฆ์— 5๋ฒˆ ์‹คํŒจํ•˜๋ฉด(์ž˜๋ชป๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ), 403 - Forbidden ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ์ผ์‹œ์ ์œผ๋กœ ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค.

์ธ์ฆ์€ ๋‘๊ฐ€์ง€ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

Authentication ํ—ค๋”

์ผ๋ฐ˜์ ์œผ๋กœ Authentication ํ•„๋“œ์— ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜์—ฌ **HTTP ์š”์ฒญ ํ—ค๋”**๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ASF IPC ์ธํ„ฐํŽ˜์ด์Šค์— ์ ‘๊ทผํ•˜๋Š” ์‹ค์ œ ๋„๊ตฌ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด curl์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด -H 'Authentication: MyPassword' ๋ฅผ ์ธ์ž๋กœ ๋„ฃ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์œผ๋กœ ์‹ค์ œ ์ธ์ฆ์ด ์ผ์–ด๋‚˜์•ผ ํ•˜๋Š” ์š”์ฒญ์˜ ํ—ค๋” ๋ถ€๋ถ„์—์„œ ์ธ์ฆ์ด ํ†ต๊ณผ๋ฉ๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ๋ฌธ ๋‚ด์˜ password ๋งค๊ฐœ๋ณ€์ˆ˜

๋˜๋Š” password ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ ค๋Š” URL์˜ ๋งˆ์ง€๋ง‰์— ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด /Api/ASF ๋Œ€์‹ ์— /Api/ASF?password=MyPassword๋กœ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ๋ฐฉ๋ฒ•๋„ ์ถฉ๋ถ„ํžˆ ์ข‹์ง€๋งŒ ๋ช…๋ฐฑํ•˜๊ฒŒ ์•”ํ˜ธ๋ฅผ ์—ด๋ฆฐ ๊ณณ์— ๋…ธ์ถœํ•˜๋ฏ€๋กœ ํ•ญ์ƒ ์ ์ ˆํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ์ฟผ๋ฆฌ๋ฌธ์˜ ์ถ”๊ฐ€ ์ธ์ˆ˜์ด๋ฏ€๋กœ URL์ด ๋ณต์žกํ•ด๋ณด์ด๊ณ , ์•”ํ˜ธ๊ฐ€ ASF API ํ†ต์‹  ์ „์ฒด์— ์ ์šฉ๋˜๋Š”๋ฐ๋„ ๋งˆ์น˜ ๊ทธ URL ์ „์šฉ์ธ ๊ฒƒ ๊ฐ™์€ ๋А๋‚Œ์„ ์ค๋‹ˆ๋‹ค.


๋‘ ๋ฐฉ๋ฒ• ๋ชจ๋‘ ์ง€์›๋˜๋ฉฐ ์–ด๋А ๊ฒƒ์„ ์‚ฌ์šฉํ• ์ง€๋Š” ๋‹น์‹ ์˜ ์„ ํƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ณณ์— HTTP ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์—ˆ๋“ฏ์ด HTTP ํ—ค๋”๊ฐ€ ์ฟผ๋ฆฌ๋ฌธ๋ณด๋‹ค ๋” ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ—ค๋” ์š”์ฒญ๊ณผ ๊ด€๋ จ๋œ ๋‹ค์–‘ํ•œ ์ œํ•œ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋Š” ์ฟผ๋ฆฌ๋ฌธ๋„ ์ง€์›์„ ํ•ฉ๋‹ˆ๋‹ค. RFC์— ๋”ฐ๋ฅด๋ฉด ์™„์ „ํžˆ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค๋งŒ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์›น์†Œ์ผ“ ์—ฐ๊ฒฐ ์‹œ์ž‘์‹œ ์‚ฌ์šฉ์ž ์ง€์ • ํ—ค๋”์˜ ๋ถ€์žฌ๋Š” ์ข‹์€ ์˜ˆ์‹œ ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ฟผ๋ฆฌ๋ฌธ์€ ์œ ์ผํ•œ ์ธ์ฆ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.


Swagger ๋ฌธ์„œ

IPC ์ธํ„ฐํŽ˜์ด์Šค์—๋Š” ASF API, ASF-ui์™€ ๋”๋ถˆ์–ด swagger ๋ฌธ์„œ๊ฐ€ ์žˆ์œผ๋ฉฐ /swagger URL ๋กœ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. Swagger ๋ฌธ์„œ๋Š” API ๊ตฌํ˜„๊ณผ ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ASF-ui ๋“ฑ ๋‹ค๋ฅธ ๋„๊ตฌ๊ฐ„์˜ ์ค‘๊ฐ„๋‹ค๋ฆฌ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ OpenAPI ์‚ฌ์–‘์˜ ๋ชจ๋“  API ๋‹จ๋ง์˜ ์™„์ „ํ•œ ๋ฌธ์„œ์ด๋ฉฐ ๊ฐ€๋Šฅ์„ฑ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๋Š” ์ด๋ฅผ ์‰ฝ๊ฒŒ ์†Œ๋น„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ASF API๋ฅผ ์‰ฝ๊ฒŒ ์ž‘์„ฑํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Swagger ๋ฌธ์„œ๋ฅผ ASF API์˜ ์™„์ „ํ•œ ์‚ฌ์–‘์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋ณ„๊ฐœ๋กœ ์ฃผ๋กœ ASF-ui์— ๊ตฌํ˜„๋˜์ง€ ์•Š์€ ๋‹ค์–‘ํ•œ API ๋‹จ๋ง์„ ์‹คํ–‰ํ•˜๋Š” ์‚ฌ์šฉ์ž ์นœํ™”์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. Swagger ๋ฌธ์„œ๋Š” ASF ์ฝ”๋“œ์—์„œ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜๋ฏ€๋กœ ์‚ฌ์šฉ์ค‘์ธ ASF๊ฐ€ ํฌํ•จํ•˜๋Š” API ๋‹จ๋ง๊ณผ ๋ฌธ์„œ๊ฐ€ ํ•ญ์ƒ ์ตœ์‹ ์ž„์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

Swagger ๋ฌธ์„œ


์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ(FAQ)

ASF IPC ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์•ˆ์ „ํ•ฉ๋‹ˆ๊นŒ?

ASF๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ localhost ์ฃผ์†Œ๋ฅผ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰ ๋‹น์‹  ์ž์‹ ์˜ ๊ธฐ๊ธฐ๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๊ธฐ๊ธฐ๋Š” ASF IPC์— ์ ‘์†ํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ๊ธฐ๋ณธ ๋‹จ๋ง์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š” ํ•œ, ๊ณต๊ฒฉ์ž๋Š” ASF IPC์— ์ ‘๊ทผํ•˜๋ ค๋ฉด ๋‹น์‹ ์˜ ๊ธฐ๊ธฐ์— ์ง์ ‘์ ‘๊ทผํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ€์žฅ ์•ˆ์ „ํ•˜๋ฉฐ LAN์— ์ ‘์†๋œ ์ด๋ฅผ ํฌํ•จํ•œ ๋‹ค๋ฅธ ๋ˆ„๊ตฐ๊ฐ€์˜ ์ ‘๊ทผ ๊ฐ€๋Šฅ์„ฑ์€ ์—†์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ธฐ๋ณธ localhost ํ• ๋‹น ์ฃผ์†Œ๋ฅผ ๋‹ค๋ฅธ ๋ฌด์–ธ๊ฐ€๋กœ ๋ฐ”๊พธ๊ธฐ๋กœ ํ–ˆ๋‹ค๋ฉด ๊ณต์ธ๋œ IP๋งŒ ASF IPC ์ธํ„ฐํŽ˜์ด์Šค์— ์ ‘๊ทผํ•˜๋„๋ก ์ ์ ˆํ•œ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„์ง์ ‘ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด์™€ ํ•จ๊ป˜ IPCPassword๋„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ASF๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์—†์œผ๋ฉด ๋‹ค๋ฅธ ๊ธฐ๊ธฐ๊ฐ€ ASF API์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ๊ฑฐ๋ถ€ํ•˜๋ฉฐ, ์ด๋Š” ์ถ”๊ฐ€์ ์ธ ๋ณด์•ˆ ๊ณ„์ธต์„ ๋”ํ•ด์ค๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ASF IPC ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ ๋’ค์—์„œ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์„์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์•„๋ž˜์—์„œ ์ถ”๊ฐ€๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ์ž์‹ ์˜ ๋„๊ตฌ๋‚˜ ์‚ฌ์šฉ์ž์Šคํฌ๋ฆฝํŠธ๋กœ ASF API์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์˜ˆ. ์ด๊ฒƒ์€ ASF API๊ฐ€ ์„ค๊ณ„๋œ ์ด์œ ์ด๋ฉฐ ์ ‘๊ทผ์„ ์œ„ํ•œ HTTP ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์œผ๋กœ ๋ฌด์—‡์ด๋“  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ์ปฌ ์‚ฌ์šฉ์ž์Šคํฌ๋ฆฝํŠธ๋Š” ๊ต์ฐจ ์ถœ์ฒ˜ ๋ฆฌ์†Œ์Šค ๊ณต์œ (CORS, Cross-origin resource sharing) ๋…ผ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ฅด๋ฏ€๋กœ, ์ถ”๊ฐ€ ๋ณด์•ˆ ์กฐ์น˜๋กœ IPCPassword๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ๋‹ค๋ฉด ์šฐ๋ฆฌ๋Š” ์ด๋ฅผ ์œ„ํ•ด ๋ชจ๋“  ๊ณณ(*)์—์„œ์˜ ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•ด์„œ ์ž ์žฌ์ ์œผ๋กœ ์•…์˜์ ์ธ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ž๋™์œผ๋กœ ์š”์ฒญ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์œผ๋ฉด์„œ ๋‹ค์–‘ํ•œ ์ธ์ฆ๋ฐ›์€ ASF API ์š”์ฒญ์„ ์‹คํ–‰ํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.(์•…์˜์ ์ธ ์Šคํฌ๋ฆฝํŠธ๋Š” ์š”์ฒญ ์‹คํ–‰์„ ์œ„ํ•ด IPCPassword๋ฅผ ์•Œ์•„์•ผ๋งŒ ํ•ฉ๋‹ˆ๋‹ค.)

๋‹ค๋ฅธ ๊ธฐ๊ธฐ ๋“ฑ์—์„œ ์›๊ฒฉ์œผ๋กœ ASF IPC์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋„ค, ์ด๋ฅผ ์œ„ํ•ด ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•ด์„œ ์›น์„œ๋ฒ„์— ์ „ํ˜•์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ณ  ASF IPC๋ฅผ ๋™์ผํ•œ ๊ธฐ๊ธฐ์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ, ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ์—†์ด ์šด์˜ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ ์ ˆํ•œ URL๋กœ **์ปค์Šคํ…€ ์„ค์ •**์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ธฐ๊ธฐ๊ฐ€ 10.8.0.1 ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง„ VPN ๋‚ด์— ์žˆ๋‹ค๋ฉด, IPC config์—์„œ ์ˆ˜์‹  ๋Œ€๊ธฐ URL์„ http://10.8.0.1:1242๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด ๊ฒฝ์šฐ ๊ฐœ์ธ VPN ๋‚ด์—์„œ๋งŒ IPC ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ด์ง€๊ณ  ๊ทธ ์™ธ์˜ ๊ณณ์—์„œ๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

ASF IPC๋ฅผ Apache๋‚˜ Nginx ๊ฐ™์€ ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ ๋’ค์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์˜ˆ. IPC๋Š” ๊ทธ๋Ÿฐ ์„ค์น˜์™€ ์™„์ „ํžˆ ํ˜ธํ™˜๋˜๋ฏ€๋กœ ์›ํ•œ๋‹ค๋ฉด ์ถ”๊ฐ€ ๋ณด์•ˆ๊ณผ ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด ๋‹น์‹ ์˜ ๋„๊ตฌ ์•ž์—์„œ ํ˜ธ์ŠคํŒ…ํ•ด๋„ ์ข‹์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ASF์˜ Kestrel http ์„œ๋ฒ„๋Š” ์ธํ„ฐ๋„ท์— ์ง์ ‘ ์—ฐ๊ฒฐ๋˜์—ˆ์„ ๋•Œ ๋งค์šฐ ์•ˆ์ „ํ•˜๊ณ  ์œ„ํ—˜์ด ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Apache๋‚˜ Nginx ๊ฐ™์€ ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ ๋’ค์— ๋†“์œผ๋ฉด ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ํ•  ์ˆ˜ ์—†๋Š” ์ถ”๊ฐ€ ๊ธฐ๋Šฅ๋“ค, ์˜ˆ๋ฅผ ๋“ค๋ฉด ASF ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ธฐ์ดˆ ์ธ์ฆ(Basic auth) ์œผ๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ ๊ฐ™์€ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ• ์ง€๋„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค.

Nginx ํ™˜๊ฒฝ์„ค์ •์˜ ์˜ˆ์‹œ๋Š” ์•„๋ž˜์— ์žˆ์Šต๋‹ˆ๋‹ค. ์™„์ „ํ•˜๊ณ  ์™„๊ฒฐ๋œ, ๊ทธ๋Ÿฌ๋ฉด์„œ๋„ ์ตœ์†Œํ•œ์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ •์˜๋ฅผ ํฌํ•จํ•ด๋‘์—ˆ์Šต๋‹ˆ๋‹ค. ๋” ์ž์„ธํ•œ ์„ค๋ช…์ด ํ•„์š”ํ•˜๋ฉด nginx ๋ฌธ์„œ(์˜๋ฌธ) ๋ฅผ ์ฐธ๊ณ ํ•˜์‹ญ์‹œ์˜ค.

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

upstream asf-server {
    # You can also use unix socket if you've enabled it, e.g. unix:/run/asf-asf/asf.sock
    server 127.0.0.1:1242;
}

server {
    listen *:443 ssl;

    ssl_certificate /path/to/your/fullchain.pem;
    ssl_certificate_key /path/to/your/privkey.pem;
    ssl_trusted_certificate /path/to/your/chain.pem;

    server_name asf.mydomain.com;

    location ~* /Api/NLog {
        proxy_pass http://asf-server;

        # X-headers should always be specified when proxying requests to ASF
        # They're crucial for proper identification of original IP, allowing ASF to e.g. ban the actual offenders instead of your nginx server
        # Specifying them allows ASF to properly resolve IP addresses of users making requests - making nginx work as a reverse proxy
        # Not specifying them will cause ASF to treat your nginx as the client - nginx will act as a traditional proxy in this case
        # If you're unable to host nginx service on the same machine as ASF, you most likely want to set KnownNetworks appropriately in addition to those
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;

        # We add those 3 extra options for websockets proxying, see https://nginx.org/en/docs/http/websocket.html
        proxy_http_version 1.1;
        proxy_set_header Connection $connection_upgrade;
        proxy_set_header Upgrade $http_upgrade;
    }

    location / {
        proxy_pass http://asf-server;

        # X-headers should always be specified when proxying requests to ASF
        # They're crucial for proper identification of original IP, allowing ASF to e.g. ban the actual offenders instead of your nginx server
        # Specifying them allows ASF to properly resolve IP addresses of users making requests - making nginx work as a reverse proxy
        # Not specifying them will cause ASF to treat your nginx as the client - nginx will act as a traditional proxy in this case
        # If you're unable to host nginx service on the same machine as ASF, you most likely want to set KnownNetworks appropriately in addition to those
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

๋‹ค์Œ์€ ์•„ํŒŒ์น˜ ํ™˜๊ฒฝ์„ค์ •์˜ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค. ๋” ์ž์„ธํ•œ ์„ค๋ช…์ด ํ•„์š”ํ•˜๋‹ค๋ฉด **Apache ๋ฌธ์„œ**๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

<IfModule mod_ssl.c>
    <VirtualHost *:443>
        SSLEngine On
        SSLCertificateFile /path/to/your/fullchain.pem
        SSLCertificateKeyFile /path/to/your/privkey.pem

        ServerName asf.mydomain.com

        # TODO: Apache can't do case-insensitive matching properly, so we hardcode two most commonly used cases
        # You can also use unix socket if you've enabled it, e.g. unix:/run/asf-asf/asf.sock|ws://localhost/
        ProxyPass "/api/nlog" "ws://127.0.0.1:1242/api/nlog"
        ProxyPass "/Api/NLog" "ws://127.0.0.1:1242/Api/NLog"

        # You can also use unix socket if you've enabled it, e.g. unix:/run/asf-asf/asf.sock|http://localhost/
        ProxyPass "/" "http://127.0.0.1:1242/"
    </VirtualHost>
</IfModule>

HTTPS ํ”„๋กœํ† ์ฝœ๋กœ IPC ์ธํ„ฐํŽ˜์ด์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋„ค, ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ด๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ถŒ์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ํ‰์†Œ์ฒ˜๋Ÿผ https๋กœ ์›น ์„œ๋ฒ„์— ์ ‘๊ทผํ•˜๊ณ , ์ด๋ฅผ ํ†ตํ•ด ๊ฐ™์€ ๊ธฐ๊ธฐ์˜ ASF IPC ์ธํ„ฐํŽ˜์ด์Šค์™€ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ํŠธ๋ž˜ํ”ฝ์ด ์™„์ „ํžˆ ์•”ํ˜ธํ™”๋˜๋ฏ€๋กœ ์ด๋Ÿฐ ์„ค์น˜๋ฅผ ์œ„ํ•ด IPC๋ฅผ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ๋“  ์ˆ˜์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ ASF์˜ IPC ์ธํ„ฐํŽ˜์ด์Šค์— **์ปค์Šคํ…€ config**๋ฅผ ์ง€์ •ํ•˜์—ฌ, https ์—”๋“œํฌ์ธํŠธ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ณ  ์ €ํฌ Kestrel http ์„œ๋ฒ„์— ์ ์ ˆํ•œ ์ธ์ฆ์„œ๋ฅผ ์ง์ ‘ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ๋‹ค๋ฅธ ์›น์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ์žˆ์œผ๋ฉฐ ์˜ค์ง ASF๋ฅผ ์œ„ํ•ด์„œ ์›น์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€๋กœ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์„ค์น˜ํ•˜๋Š”๋ฐ ํ›จ์”ฌ ์‰ฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.


IPC ์‹œ์ž‘ ์ค‘์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค: System.IO.IOException: Failed to bind to address, An attempt was made to access a socket in a way forbidden by its access permissions

์ด ์˜ค๋ฅ˜๋Š” ๊ธฐ๊ธฐ์˜ ๋‹ค๋ฅธ ๋ฌด์–ธ๊ฐ€๊ฐ€ ์ด๋ฏธ ํ•ด๋‹น ํฌํŠธ๋ฅผ ์‚ฌ์šฉ ์ค‘์ด๊ฑฐ๋‚˜, ํ–ฅํ›„ ์‚ฌ์šฉ์„ ์œ„ํ•ด ์˜ˆ์•ฝํ•ด๋‘” ์ƒํƒœ์ž„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๊ฐ™์€ ๊ธฐ๊ธฐ์—์„œ ๋‘ ๋ฒˆ์งธ ASF ์ธ์Šคํ„ด์Šค๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๋ณธ์ธ์ด ์›์ธ์ผ ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๊ฐ€์žฅ ํ”ํ•œ ๊ฒฝ์šฐ๋Š” Windows๊ฐ€ 1242 ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋„๋ก ์ œ์™ธํ•ด๋‘” ๊ฒƒ์ด๋ฏ€๋กœ, ์ด ๊ฒฝ์šฐ ASF๋ฅผ ๋‹ค๋ฅธ ํฌํŠธ๋กœ ์˜ฎ๊ฒจ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์œ„์˜ **์˜ˆ์‹œ config**๋ฅผ ๋”ฐ๋ผ, 12420๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ํฌํŠธ๋ฅผ ๊ฐ„๋‹จํžˆ ์„ ํƒํ•ด๋ณด์„ธ์š”.

๋ฌผ๋ก  ๋ฌด์—‡์ด ASF์˜ 1242 ํฌํŠธ ์‚ฌ์šฉ์„ ๋ง‰๊ณ  ์žˆ๋Š”์ง€ ์ฐพ์•„๋‚ด์–ด ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์‹œ๋„ํ•ด๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ, ์ด๋Š” ๋Œ€์ฒด๋กœ ASF์— ๋‹ค๋ฅธ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์ง€์‹œํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋ฒˆ๊ฑฐ๋กœ์šฐ๋ฏ€๋กœ ์—ฌ๊ธฐ์„œ๋Š” ๋” ์ž์„ธํžˆ ๋‹ค๋ฃจ์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค.


IPCPassword๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๋•Œ ์™œ 403 Forbidden ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋‚˜์š”?

ASF์—๋Š” ์ถ”๊ฐ€์ ์ธ ๋ณด์•ˆ ์กฐ์น˜๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์–ด, config์— IPCPassword๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฃจํ”„๋ฐฑ ์ธํ„ฐํŽ˜์ด์Šค(localhost, ๋ณธ์ธ์˜ ๊ธฐ๊ธฐ)์—์„œ๋งŒ ASF API์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ASF ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์™ธ๋ถ€๋กœ ๋” ๋…ธ์ถœ์‹œํ‚ค๊ธฐ๋กœ ํ•œ ์‚ฌ๋žŒ์ด๋ผ๋ฉด ๋ˆ„๊ตฌ๋‚˜ IPCPassword ์‚ฌ์šฉ์„ ์ตœ์†Œํ•œ์˜ ๋ณด์•ˆ ์กฐ์น˜๋กœ ์„ค์ •ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ด ๋ณ€๊ฒฝ์€ ์ „ ์„ธ๊ณ„์ ์œผ๋กœ ์ด๋ฅผ ์ธ์ง€ํ•˜์ง€ ๋ชปํ•œ ์‚ฌ์šฉ์ž๋“ค์ด ํ˜ธ์ŠคํŒ…ํ•˜๋˜ ๋Œ€๋Ÿ‰์˜ ASF๊ฐ€ ์•…์˜์ ์ธ ๋ชฉ์ ์œผ๋กœ ํƒˆ์ทจ๋‹นํ•˜๋Š” ์‚ฌ๋ก€๊ฐ€ ๋งŽ์•˜๊ณ , ์ด๋กœ ์ธํ•ด ๋Œ€๋ถ€๋ถ„ ๊ณ„์ •๊ณผ ์•„์ดํ…œ์„ ์žƒ๊ฒŒ ๋˜์—ˆ๋‹ค๋Š” ์‚ฌ์‹ค์— ๋”ฐ๋ฅธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. "ASF๋ฅผ ์™ธ๋ถ€ ์ „์ฒด์— ๊ฐœ๋ฐฉํ•˜๊ธฐ ์ „์— ์ด ํŽ˜์ด์ง€๋ฅผ ๋ฏธ๋ฆฌ ์ฝ์—ˆ์œผ๋ฉด ์ข‹์•˜์„ ํ…๋ฐ"๋ผ๊ณ  ๋งํ•  ์ˆ˜๋„ ์žˆ๊ฒ ์ง€๋งŒ, ๊ทธ๋ณด๋‹ค๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ASF ์„ค์ •์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ์ด๋ฅผ ํ—ˆ์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ง์ ‘ ์ถ”๊ฐ€ ์กฐ์น˜๋ฅผ ์ทจํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ๋” ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด์„œ๋Š” ์•„๋ž˜์—์„œ ์ž์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ์ฒด์ ์œผ๋กœ๋Š”, IPCPassword ์—†์ด๋„ ASF์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์‹ ๋ขฐํ•˜๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ์ง€์ •ํ•จ์œผ๋กœ์จ ์ €ํฌ์˜ ์ด ๊ธฐ๋ณธ ์ •์ฑ…์„ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ปค์Šคํ…€ ์„ค์ •(config)์˜ KnownNetworks ์†์„ฑ์—์„œ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ์ •๋ง๋กœ ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ์•Œ๊ณ  ์œ„ํ—˜์„ ์™„์ „ํžˆ ์ดํ•ดํ•˜๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด, ๋Œ€์‹  IPCPassword๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. KnownNetworks๋ฅผ ์ง€์ •ํ•˜๋ฉด ํ•ด๋‹น ๋„คํŠธ์›Œํฌ์— ์†ํ•œ ๋ˆ„๊ตฌ๋“  ์กฐ๊ฑด ์—†์ด ASF API์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ •๋ง ์ง„์ง€ํ•˜๊ฒŒ ๋“œ๋ฆฌ๋Š” ๋ง์”€์ž…๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ž์‹ ์˜ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋‚˜ iptables ๊ทœ์น™์ด ์•ˆ์ „ํ•˜๋‹ค๊ณ  ๋ฏฟ์—ˆ์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์•„์„œ ์Šค์Šค๋กœ ๋ฌธ์ œ๋ฅผ ์ž์ดˆํ•œ ์‚ฌ๋ก€๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. IPCPassword๋Š” ์ฒซ ๋ฒˆ์งธ ๋ฐฉ์–ด์„ ์ด์ž ๋•Œ๋กœ๋Š” ๋งˆ์ง€๋ง‰ ๋ฐฉ์–ด์„ ์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ„๋‹จํ•˜๋ฉด์„œ๋„ ๋งค์šฐ ํšจ๊ณผ์ ์ด๊ณ  ์•ˆ์ „ํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ๋กœ ํ•œ๋‹ค๋ฉด, ๊ทธ๋กœ ์ธํ•œ ๊ฒฐ๊ณผ๋Š” ์ „์ ์œผ๋กœ ๋ณธ์ธ์˜ ์ฑ…์ž„์ž…๋‹ˆ๋‹ค.

en-US de-DE es-ES lol-US
pt-BR ru-RU zh-CN zh-TW

๐Ÿ‘จโ€๐Ÿซ ๊ธฐ๋ณธ

๐Ÿ‘จโ€๐ŸŽ“๏ธ ๋ฉ”์ธ

๐Ÿง™ ๊ณ ๊ธ‰

๐Ÿ‘ท ๊ฐœ๋ฐœ์ž

Clone this wiki locally