# ๐Ÿ”Œ eLink ์†Œ์ผ“ ์–ด๋Œ‘ํ„ฐ ๊ฐ€์ด๋“œ ## ๐Ÿ“š ๊ฐœ์š” ๋ณธ ๊ฐ€์ด๋“œ๋Š” eLink ์†Œ์ผ“ ์–ด๋Œ‘ํ„ฐ์˜ ์„ค์ • ๋ฐ ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•œ ์ƒ์„ธํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ํ”„๋กœํ† ์ฝœ ์ง€์›๊ณผ ๊ด€๋ จ ์„ค์ • ์˜ต์…˜์„ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ## ๐Ÿ“‹์ฃผ์š” ๋‚ด์šฉ ### โš™๏ธ Configuration (Context) - ๐Ÿ”ง Common ์„ค์ • - ๐Ÿ”Œ Connector, Acceptor ์„ค์ • - ๐Ÿ›  ํ”„๋กœํ† ์ฝœ ๋ณ„ ์„ค์ • - ๐Ÿ” ๋‹ค์–‘ํ•œ Filter ์„ค์ • - ๐Ÿ”„ Single Session & Fail Over ์„ค์ • ### ๐ŸŒ ์ง€์› ํ”„๋กœํ† ์ฝœ - FIXED_LENGTH_HEADER - UDP_FIXED_LENGTH_HEADER - FIXED_LENGTH_PAYLOAD - UDP_FIXED_LENGTH_PAYLOAD - CISCO - XECURE - INISAFE - EGSEED - CERT - HTTP ์ด ๊ฐ€์ด๋“œ๋ฅผ ํ†ตํ•ด eLink ์†Œ์ผ“ ์–ด๋Œ‘ํ„ฐ์˜ ๊ตฌ์„ฑ ์š”์†Œ์™€ ๋‹ค์–‘ํ•œ ํ”„๋กœํ† ์ฝœ ์ง€์›์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์„น์…˜์€ ๊ด€๋ จ ์„ค์ •๊ณผ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ตฌ์ฒด์ ์ธ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. โš ๏ธ ์‚ฌ์šฉ ์ค‘์ธ eLink ๋ฒ„์ „์— ๋”ฐ๋ผ ์ผ๋ถ€ ๊ธฐ๋Šฅ์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์ ์šฉ ์ „ ๋ฒ„์ „ ํ™•์ธ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. # Configuration (Context) ์†Œ์ผ“ ์–ด๋Œ‘ํ„ฐ์˜ ๊ตฌ์„ฑ ๋ฐ ๋Ÿฐํƒ€์ž„ ๋™์ž‘์€ ์–ด๋Œ‘ํ„ฐ์— ์„ค์ •๋œ Configuration์— ์˜ํ•ด ๋™์ž‘ํ•œ๋‹ค. **Configuration**์€ ํฌ๊ฒŒ ์•„๋ž˜ 4๊ฐ€์ง€์˜ ์นดํ…Œ๊ณ ๋ฆฌ๋กœ ๊ตฌ๋ถ„๋œ๋‹ค. 1. Adapter ๊ณตํ†ต ์„ค์ • ์ •๋ณด 2. Connector, Acceptor (Client, Server) ์„ค์ • ์ •๋ณด 3. Protocol ๊ด€๋ จ ์„ค์ • ์ •๋ณด 4. Filter ๊ด€๋ จ ์„ค์ • ์ •๋ณด ![image-20240812130205444](assets/eLink-SOCKET/image-20240812130205444.png) # Common #### adapter.group.name - ์†Œ์ผ“ ์–ด๋Œ‘ํ„ฐ ๊ทธ๋ฃน๋ช…์„ ์ง€์ •ํ•œ๋‹ค. #### adapter.name - ์†Œ์ผ“ ์–ด๋Œ‘ํ„ฐ๋ช…์„ ์ง€์ •ํ•œ๋‹ค. #### Description - ์†Œ์ผ“ ์–ด๋Œ‘ํ„ฐ ์„ค๋ช… #### socket.reuse - ๊ฐ’: `Y` ๋˜๋Š” `N` - ๊ธฐ๋ณธ๊ฐ’: `Y` - ์„ค๋ช…: ์ด์ „ Connection์—์„œ ์‚ฌ์šฉ๋˜์–ด์ง„ port๊ฐ€ ๋Š์–ด์ง„ ํ›„ TIME_WAIT ์ƒํƒœ์— ์žˆ๋Š” ๊ฒฝ์šฐ, ์ด Connection์€ TIME_WAIT ์ƒํƒœ๊ฐ€ ํ•ด์ œ๋˜๊ธฐ ์ „์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ์ด port๋ฅผ ๋ฐ”๋กœ bind ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ ์ด ์˜ต์…˜์„ 'Y'๋กœ ์„ค์ •ํ•œ๋‹ค. #### response.type - ๊ฐ’: `SYNC` ๋˜๋Š” `ASYN` - ๊ธฐ๋ณธ๊ฐ’: `SYNC` - ์„ค๋ช…: ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ์ค„ ๊ฒƒ์ธ์ง€ (SYNC), ์•ˆ ์ค„ ๊ฒƒ์ธ์ง€ (ASYN)์— ๋Œ€ํ•œ ์˜ต์…˜ #### permanent - ๊ฐ’: `Y` ๋˜๋Š” `N` - ๊ธฐ๋ณธ๊ฐ’: `Y` - ์„ค๋ช…: ๋งค ์š”์ฒญ๋งˆ๋‹ค Connection์„ ๋งบ๊ณ  ๋Š๋Š” ์ž‘์—…์„ ํ•  ๊ฒƒ์ธ์ง€(Non-Permanent), ์•„๋‹ˆ๋ฉด ๋งบ์–ด ๋†“์€ Connection์„ ๋Š์ง€ ์•Š๊ณ  ๊ณ„์† ์‚ฌ์šฉํ•  ๊ฒƒ์ธ์ง€ ์„ค์ • (Permanent) #### blocking - ๊ฐ’: `Y` ๋˜๋Š” `N` - ๊ธฐ๋ณธ๊ฐ’: `N` - ์„ค๋ช…: ์†Œ์ผ“ ์–ด๋Œ‘ํ„ฐ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ NIO (Non-Block I/O) ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„๋˜์–ด Event-Driven ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค. ์ด ๋ฐฉ์‹ ๋Œ€์‹  Classic Socket์„ ์ด์šฉํ•œ BIO (Block I/O) ๋ฐฉ์‹์˜ Socket์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ด ์˜ต์…˜์„ 'Y'๋กœ ์„ค์ •ํ•œ๋‹ค. ์ด ๋ฐฉ์‹์€ FIXED_HEADER_LENGTH ํ”„๋กœํ† ์ฝœ์˜ NON-PERMANENT ๋ฐฉ์‹์—์„œ๋งŒ ์‚ฌ์šฉ๋œ๋‹ค. #### bound.usage - ๊ฐ’: `IOBOUND`, `INBOUND`, ๋˜๋Š” `OUTBOUND` - ๊ธฐ๋ณธ๊ฐ’: `IOBOUND` - ์„ค๋ช…: 1. `IOBOUND`: ์š”์ฒญ์„ ๋ณด๋‚ด๊ธฐ๋„ ํ•˜๊ณ  ๋ฐ›๊ธฐ๋„ ํ•˜๋Š” ๋ฐฉ์‹ 2. `INBOUND`: ์š”์ฒญ์„ ๋ฐ›๊ณ  ์‘๋‹ต์„ ์ฃผ๋Š” ๋ฐฉ์‹, ASYN์˜ ๊ฒฝ์šฐ๋Š” ์‘๋‹ต์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค. 3. `OUTBOUND`: ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ , ์‘๋‹ต์„ ๋ฐ›๋Š” ๋ฐฉ์‹, ASYN์˜ ๊ฒฝ์šฐ๋Š” ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๋Š”๋‹ค. #### ack.support - ๊ฐ’: `Y` ๋˜๋Š” `N` - ๊ธฐ๋ณธ๊ฐ’: `N` - ์„ค๋ช…: ํ˜„์žฌ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค. ๋ฉ”์‹œ์ง€ ๊ตํ™˜์‹œ๋งˆ๋‹ค 'ACK' ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š”๋‹ค. #### business.work.class.code - ์—…๋ฌด ๊ตฌ๋ถ„ ์ฝ”๋“œ #### timeout - ๊ฐ’: `[0-9]+` - ๊ธฐ๋ณธ๊ฐ’: `60` (์ดˆ) - ์„ค๋ช…: transaction timeout, connect timeout, message read time์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. 1. transaction timeout: ์š”์ฒญ์„ ๋ฐ›์€ ํ›„ ์‘๋‹ต์„ ๋ณด๋‚ผ ๋•Œ๊นŒ์ง€ (transaction) ์‹œ๊ฐ„, ๋˜๋Š” ์š”์ฒญ์„ ๋ณด๋‚ธ ํ›„ ์‘๋‹ต์„ ๋ฐ›์„ ๋•Œ๊นŒ์ง€์˜ ์‹œ๊ฐ„ ํ•œ๊ณ„ ๊ฐ’ 2. connect timeout: connection ์š”์ฒญ ํ›„, ๋งบ์–ด์งˆ ๋•Œ๊นŒ์ง€์˜ ์‹œ๊ฐ„ ํ•œ๊ณ„ ๊ฐ’ 3. message read timeout: ํ•œ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜๋ˆ„์–ด์ ธ ์˜ฌ ๊ฒฝ์šฐ, ๊ฐ ๋ถ€๋ถ„์˜ interval ํ•œ๊ณ„ ๊ฐ’ #### idle.timeout - ๊ฐ’: `[0-9]+` - ๊ธฐ๋ณธ๊ฐ’: `0` (์ดˆ, ๋ฌดํ•œ๋Œ€) - ์„ค๋ช…: connection์˜ read timeout (socket timeout) #### trace.level - ๊ฐ’: `0`, `1`, `2`, ๋˜๋Š” `3` - ๊ธฐ๋ณธ๊ฐ’: `0` (DEFAULT) - ์„ค๋ช…: - `0`: DEFAULT โ€“ Error ์ƒํ™ฉ๋งŒ์„ ๋ณด์—ฌ์ค€๋‹ค. - `1`: INFO - message ๊ด€๋ จ ๋‚ด์šฉ์€ ๋ฐฐ์ œํ•˜๊ณ , ์ฃผ์š” ์ •๋ณด๋งŒ์„ ๋ณด์—ฌ์ค€๋‹ค. - `2`: DEBUG - protocol handler level์˜ message ๋‹จ์œ„๊นŒ์ง€ ๋ณด์—ฌ์ค€๋‹ค. - `3`: TRACE - codec ๋ ˆ๋ฒจ (network data chunk ๋ ˆ๋ฒจ)์˜ ๋ฐ์ดํ„ฐ๊นŒ์ง€ ๋ณด์—ฌ์ค€๋‹ค. #### sms.running.time - ๊ฐ’: `[BUSINESS_DAY | ALL_WEEK],%d{HHmmss},%d{HHmmss}` - ์„ค๋ช…: sms ๋ฐœ์†ก์‹œ๊ฐ„ - `BUSINESS_DAY`: ํ† , ์ผ์š”์ผ์„ ์ œ์™ธํ•œ ์˜์—…์ผ์—๋งŒ ์ ์šฉ - `ALL_WEEK`: ์š”์ผ ๊ด€๊ณ„ ์—†์ด ์ ์šฉ - ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋Š” ','๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹œ์ž‘์‹œ๊ฐ„ ๋ฐ ์ข…๋ฃŒ์‹œ๊ฐ„์€ %d{HHmmss} ํ˜•ํƒœ๋ฅผ ๋”ฐ๋ฅธ๋‹ค. # Connector, Acceptor #### socket.type - ๊ฐ’: `CLIENT` ๋˜๋Š” `SERVER` - ๊ธฐ๋ณธ๊ฐ’: `CLIENT` - ์„ค๋ช…: ์†Œ์ผ“ ์–ด๋Œ‘ํ„ฐ ํƒ€์ž…์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. #### host.name - ์„ค๋ช…: - Server Socket์˜ ๊ฒฝ์šฐ: Listeningํ•  IP Address[ํ˜ธ์ŠคํŠธ๋ช…] - Client Socket ์œ ํ˜•์ธ ๊ฒฝ์šฐ: ์—ฐ๊ฒฐํ•  Remote ์„œ๋ฒ„์˜ IP Address(ํ˜ธ์ŠคํŠธ๋ช…) #### port.number - ์„ค๋ช…: - Server Socket์˜ ๊ฒฝ์šฐ: Listening Port - Client Socket ์œ ํ˜•์ธ ๊ฒฝ์šฐ: ์—ฐ๊ฒฐํ•  Remote ์„œ๋ฒ„์˜ Listening Port ๋ฒˆํ˜ธ #### local.host.name (CLIENT only) - ์„ค๋ช…: Client Socket Type์—์„œ๋งŒ ์‚ฌ์šฉ๋˜๋ฉฐ, Client Socket์˜ local binding ํ˜ธ์ŠคํŠธ๋ช… #### local.port.number (CLIENT only) - ์„ค๋ช…: Client Socket Type์—์„œ๋งŒ ์‚ฌ์šฉ๋˜๋ฉฐ, Client Socket์˜ local binding ํฌํŠธ ๋ฒˆํ˜ธ # Message Header Protocol 4๊ฐœ์˜ ํ”„๋กœํ† ์ฝœ์€ ๋ฉ”์‹œ์ง€์— header ์ •๋ณด๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. header ์ •๋ณด์˜ ์œ„์น˜ ๋ฐ ๋‚ด์šฉ์€ ์•„๋ž˜ ์˜ต์…˜์— ๋”ฐ๋ผ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. #### Protocol Type - `FIXED_LENGTH_HEADER` - `UDP_FIXED_LENGTH_HEADER` - `XECURE` - `EGSEED` ![image-20240812130411091](assets/eLink-SOCKET/image-20240812130411091.png) ## ํ—ค๋” ๊ณตํ†ต ์†์„ฑ #### ll.field.type - ๊ฐ’: `BIN`, `CHAR`, `NONE` - ๊ธฐ๋ณธ๊ฐ’: `BIN` - ์„ค๋ช…: header ์ •๋ณด์˜ ํƒ€์ž…์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. 1. `BIN`: payload ์ •๋ณด๋ฅผ byte ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ header๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. 2. `CHAR`: payload ์ •๋ณด๋ฅผ ASCII ์ •๋ณด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ header๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. 3. `NONE`: header ์ •๋ณด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. Chunk ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. #### ll.field.offset - ๊ฐ’: `[0-9]+` - ๊ธฐ๋ณธ๊ฐ’: `0` - ์„ค๋ช…: header ์ •๋ณด๊ฐ€ ๋ฉ”์‹œ์ง€์˜ ์–ด๋А ๋ถ€๋ถ„์—์„œ ์‹œ์ž‘ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด #### ll.field.length - ๊ฐ’: `[0-9]+` - ๊ธฐ๋ณธ๊ฐ’: `2` - ์„ค๋ช…: header ์ •๋ณด์˜ ๊ธธ์ด (byte) #### ll.offset.exclude - ๊ฐ’: `Y` ๋˜๋Š” `N` - ๊ธฐ๋ณธ๊ฐ’: `N` - ์„ค๋ช…: header ์ •๋ณด์— offset ๊ธธ์ด๋ฅผ ํฌํ•จํ•  ๊ฒƒ์ธ์ง€ ๋ง ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ ์ •๋ณด #### ll.field.include - ๊ฐ’: `Y` ๋˜๋Š” `N` - ๊ธฐ๋ณธ๊ฐ’: `N` - ์„ค๋ช…: header ์ •๋ณด์— header ๊ธธ์ด๋ฅผ ํฌํ•จํ•  ๊ฒƒ์ธ์ง€ ๋ง ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ ์ •๋ณด #### ll.include - ๊ฐ’: `Y` ๋˜๋Š” `N` - ๊ธฐ๋ณธ๊ฐ’: `N` - ์„ค๋ช…: ์†Œ์ผ“ ์–ด๋Œ‘ํ„ฐ์—์„œ F/W์— ์ „๋‹ฌํ•  ๋•Œ, header ์ •๋ณด๋ฅผ ํฌํ•จํ•˜์—ฌ ์ „๋‹ฌํ• ์ง€ ์—ฌ๋ถ€์— ๋Œ€ํ•œ ์ •๋ณด. eLink ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์†Œ์ผ“ ์–ด๋Œ‘ํ„ฐ์— ์ „๋‹ฌํ•  ๋•Œ์—๋„, ์†Œ์ผ“ ์–ด๋Œ‘ํ„ฐ๋Š” ์ด ์˜ต์…˜์„ ๋ณด๊ณ  header ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์—ˆ๋Š”์ง€, ์•„๋‹Œ์ง€๋ฅผ ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค. ## Protocol โ€“ FIXED_PAYLOAD_LENGTH FIXED_PAYLOAD_LENGTH ํ”„๋กœํ† ์ฝœ์€ ๋ฉ”์‹œ์ง€ ๋‚ด์— header ์ •๋ณด๊ฐ€ ์—†๊ณ , payload ์ •๋ณด๋งŒ ๊ตํ™˜๋ฉ๋‹ˆ๋‹ค. Header ์ •๋ณด๊ฐ€ ์—†์œผ๋ฏ€๋กœ payload ํฌ๊ธฐ๋Š” ๊ณ ์ •๋˜์–ด์•ผ ํ•˜๋ฉฐ, ์•„๋ž˜ 2๊ฐ€์ง€์˜ ํ”„๋กœํผํ‹ฐ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. #### send.payload.length - ๊ฐ’: `[0-9]+` - ์„ค๋ช…: ๋ณด๋‚ด๋Š” ์ „๋ฌธ์˜ ํฌ๊ธฐ (only payload) #### recv.payload.length - ๊ฐ’: `[0-9]+` - ์„ค๋ช…: ๋ฐ›๋Š” ์ „๋ฌธ์˜ ํฌ๊ธฐ (only payload) ## Protocol โ€“ XECURE XECURE ํ”„๋กœํ† ์ฝœ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํผํ‹ฐ๋“ค์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค: #### xecure.type - ๊ฐ’: `FIXED`, `BASIC`, `WELCOME`, ๋˜๋Š” `ENVELOPE` - ๊ธฐ๋ณธ๊ฐ’: `FIXED` - ์„ค๋ช…: xecure ํ”„๋กœํ† ์ฝœ์˜ 4๊ฐ€์ง€ ์„œ๋ธŒ ํ”„๋กœํ† ์ฝœ(๋ณ€ํ˜•)์„ ์ง€์ •ํ•˜๋Š” ํ”„๋กœํผํ‹ฐ. 4๊ฐ€์ง€๋ฅผ ๋ณ„๋„์˜ ํ”„๋กœํ† ์ฝœ๋กœ ์ดํ•ดํ•ด๋„ ๋ฌด๋ฐฉํ•ฉ๋‹ˆ๋‹ค. #### xecure.config.path - ์„ค๋ช…: xecure ์„ค์ • ๊ฐ’. Secret key file, Certificate file, Password ๋“ฑ์˜ ์„ค์ • ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ํŒŒ์ผ ![XECURE Config](assets/eLink-SOCKET/image-20240812130338492.png) #### xecure.remote.cert - ์„ค๋ช…: xecure ํ†ต์‹ ์„ ํ•˜๋Š” peer ์ชฝ์˜ ์ธ์ฆ์„œ ํŒŒ์ผ์˜ path ## Protocol โ€“ INISAFE #### inisafe.config.path - ์„ค๋ช…: inisafe ํ”„๋กœํ† ์ฝœ์—์„œ ์‚ฌ์šฉํ•˜๋Š” config ํŒŒ์ผ์˜ path๋ฅผ ์„ค์ • ์˜ˆ์‹œ config ํŒŒ์ผ: ``` ############################################################################# # Configuration File : # # File Name : .properties ํŒŒ์ผ # ๋งˆ์ง€๋ง‰ ์ˆ˜์ •์ผ์ž : 2008-07-10 PKIํŒ€ # ############################################################################# ############################################################################# ## License KEY CHECK ๋ฐ˜๋“œ์‹œ ์กด์žฌํ•ด์•ผํ•จ ############################################################################# LicenseKeyPath=modules/inisafe/windows/iniplugin/license/INISAFENET.License ############################################################################# ## ์‹ค์ œ ์„ธ์…˜ํ‚ค ์ƒ์„ฑ์— ์‚ฌ์šฉํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ############################################################################# KeyGenAlg=SEED ############################################################################# ## ์‹ค์ œ ๋ฐ์ดํ„ฐ์— ์‚ฌ์šฉํ•˜๋Š” ์•”ํ˜ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ############################################################################# #DataEncryptAlg=SEED/CBC/PKCS5Padding DataEncryptAlg=SEED/OFB128 ############################################################################# ## ์„ธ์…˜ํ‚ค ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜ (keyfix ์—์„œ ์‚ฌ์šฉ์•ˆํ•จ) ############################################################################# SessionKeyEncryptAlg=RSA ############################################################################# ## HashAlg ์„ ์ ์šฉํ•จ:1 , ์ ์šฉํ•˜์ง€ ์•Š์Œ:0 (keyfix ๋ฐฉ์‹์ผ๋•Œ ์‚ฌ์šฉ) ############################################################################# HashOption=1 ############################################################################# ## ์„ธ์…˜ํ‚ค ๋ฐ์ดํ„ฐ ์ƒ์„ฑ์— ์‚ฌ์šฉํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ (keyfix ๋ฐฉ์‹์ผ๋•Œ ์‚ฌ์šฉ) ############################################################################# #HashAlg=MD5 HashAlg=SHA1 ############################################################################# # ์„œ๋ฒ„ ์ธ์ฆ์„œ ๊ฒฝ๋กœ ์ง€์ • (keyfix ๋ฐฉ์‹์ผ๋•Œ ์‚ฌ์šฉ ์•ˆํ•จ) ############################################################################# ServerCertFile=modules/inisafe/windows/iniplugin/keys/initech_cert.der ########################################Cer##################################### # ๊ฐœ์ธํ‚ค์˜ ๊ฒฝ๋กœ๋ช… ์ง€์ • (keyfix ๋ฐฉ์‹์ผ๋•Œ ์‚ฌ์šฉ ์•ˆํ•จ) ############################################################################# PrivateKeyFile=modules/inisafe/windows/iniplugin/keys/initech_priv.pk8.der.enc PrivateKeyType=DER ############################################################################# # ์„œ๋ฒ„ํ‚ค์˜ ํŒจ์Šค์›Œ๋“œ ์ง€์ • (keyfix ๋ฐฉ์‹์ผ๋•Œ ์‚ฌ์šฉ ์•ˆํ•จ) ############################################################################# #ํŒจ์Šค์›Œ๋“œ ์•”ํ˜ธํ™” ์—ฌ๋ถ€ (true : ํŒจ์Šค์›Œ๋“œ ์•”ํ˜ธํ™”. false : ํŒจ์Šค์›Œ๋“œ ์•”ํ˜ธํ™”ํ•˜์ง€ ์•Š์Œ.default ๊ฐ’์€ false) privateKeyPasswordEnc = true PrivateKeyPassword=LLZ9U7+lanLMxvh9pUQTztgi6vEAswsHIp03wtcVpmA= #PrivateKeyPassword=initechtest ############################################################################# # ์ธ์ฆ์„œ ๊ฒฝ๋กœ๊ฒ€์ฆ ์‚ฌ์šฉ ์—ฌ๋ถ€ ์ ์šฉํ•จ:1 , ์ ์šฉํ•˜์ง€ ์•Š์Œ:0 (keyfix ๋ฐฉ์‹์ผ๋•Œ ์‚ฌ์šฉ ์•ˆํ•จ) # ์„œ๋ฒ„ ์ธ์ฆ์„œ ์ž„์œผ๋กœ Rfc3280Mode๋ฅผ 0์œผ๋กœ ํ•ด์„œ ์‚ฌ์šฉํ•˜๋„๋ก ํ•จ ############################################################################# # RFC 3280 ๋ชจ๋“œ์˜ ์‚ฌ์šฉ์—ฌ๋ถ€(0 - ์‚ฌ์šฉ์•ˆํ•จ, 1 - ์‚ฌ์šฉํ•จ) Rfc3280Mode=0 #jCertValidator ๊ฐ€ ๋กœ๋“œํ•  ํ”„๋กœํผํ‹ฐ ํŒŒ์ผ ์œ„์น˜ CertValidatorPropertiesPath=modules/inisafe/windows/iniplugin/properties/jCertPathValidator.properties # ์ •์ฑ…์œผ๋กœ ์‚ฌ์šฉํ•  ์นดํ…Œ๊ณ ๋ฆฌ ๋ช… Category=realPolicy ############################################################################# ####### INILOG4J ์„ค์ • ############################################################################# # ์•„๋ž˜์™€ ๊ฐ™์ด ํŒจํ‚ค์ง€๋ช…์„ ์ง€์ •ํ•ด์ฃผ๋ฉด ํ•ด๋‹น ํŒจํ‚ค์ง€ ์ดํ•˜ ํด๋ž˜์Šค์—์„œ ์ถœ๋ ฅํ•˜๋Š” # ๋กœ๊ทธ๋“ค์€ ๋ณ„๋„์˜ ์ง€์ •๋œ ๋กœ๊ทธํŒŒ์ผ์— ์Œ“์ด๊ฒŒ ๋œ๋‹ค. ๋กœ๊ทธ๋ ˆ๋ฒจ ์„ค์ • : OFF > FATAL > ERROR > INFO > DEBUG > ALL inilog4j.logger.com.initech.inisafenet=OFF,stdout,rolling # User define LoggerFactory #inilog4j.loggerFactory=com.initech.logger.common.IniLoggerFactory # Console Appneder ํ˜•์‹ ์ง€์ •ํ•˜๊ธฐ inilog4j.appender.stdout=com.initech.common.logger.ConsoleAppender inilog4j.appender.stdout.layout=com.initech.common.logger.PatternLayout inilog4j.appender.stdout.layout.ConversionPattern=[%d{ABSOLUTE} %p] %c(%t:%L) -%m%n # DailyRolling Appneder ํ˜•์‹ ์ง€์ •ํ•˜๊ธฐ inilog4j.appender.rolling=com.initech.common.logger.DailyRollingFileAppender inilog4j.appender.rolling.layout=com.initech.common.logger.PatternLayout inilog4j.appender.rolling.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss} %6p][%c{1}:%L] %m%n # ๋ฐ‘์˜ ๋‚ด์šฉ์€ ํ•˜๋ฃจ ๋‹จ์œ„๋กœ ๋กœ๊ทธ ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐฑ์—…๋ฐ›์„๋•Œ ๋ฐฑ์—…๋ช…์„ ์ง€์ •ํ•œ๋‹ค. inilog4j.appender.rolling.DatePattern='.'yyyy-MM-dd inilog4j.appender.rolling.Append = true inilog4j.appender.rolling.File=modules/inisafe/windows/iniplugin/logs/INISAFENet.log ############################################################################# #encoding, decoding option ์œผ๋กœ HandShake ํ”„๋กœํ† ์ฝœ์ธ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๋จ #์ธ์ฝ”๋”ฉ์˜ˆ๊ฐ’์€ ์•„๋ž˜๋ฅผ ์ฐธ์กฐ #0000 => No Encoding #0001 => Base64 #0010 => URL #0011 => Base64 + URL ############################################################################# EncodingFlag = 0000 ############################################################################# ## ์•”ํ˜ธํ™”๋œ IV ์™€ skey ๋ฅผ ์‚ฌ์šฉํ• ์ง€ ๋ง์ง€ ์ ์šฉํ•จ 1 : ์ ์šฉํ•˜์ง€ ์•Š์Œ : 0 (keyfix ์ „์šฉ) ############################################################################# EncSkeyIvUse = 1 ############################################################################# #์•”ํ˜ธํ™”๋˜ IV ์™€ skey ๊ฐ€ ์ €์žฅ๋œ ํŒŒ์ผ์˜ passwd(keyfix ์ „์šฉ) #encpw.bat๋กœ ์ƒ์„ฑ ############################################################################# EncSkeyPassword=36qE34ptX81bmsLIhumx92LtBq73ZGCLp0drBJgyThE= ############################################################################# #์•”ํ˜ธํ™”๋œ IV ์™€ skey๊ฐ€ ์ €์žฅ๋œ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ ๋ฐ ํŒŒ์ผ๋ช…(keyfix ์ „์šฉ) #gensk.bat๋กœ ์ƒ์„ฑ ############################################################################# EncryptedSkeyPath = modules/inisafe/windows/iniplugin/keys/EncryptKey.der ``` #### inisafe.start.adapter (ํŠน์ • ์‚ฌ์ดํŠธ์—์„œ ์—…๋ฌด์š”๊ฑด์œผ๋กœ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€๋œ ๊ฒฝ์šฐ์—๋งŒ) - ์„ค๋ช…: inisafe ํ†ต์‹ ์„ ์‹œ์ž‘ํ•˜๊ณ  handshake ์ž‘์—…์ด ๋๋‚˜๋ฉด, ํŠน์ • ์–ด๋Œ‘ํ„ฐ๋ฅผ ๊ตฌ๋™์‹œํ‚ค๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. K์€ํ–‰์˜ ๊ฒฝ์šฐ SNA ์–ด๋Œ‘ํ„ฐ๋ฅผ ๊ตฌ๋™ ์‹œ์ผœ์•ผ ํ•˜๋Š”๋ฐ, ์ด SNA ์–ด๋Œ‘ํ„ฐ์˜ ์ด๋ฆ„์„ ์—ฌ๊ธฐ์— ์„ค์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. #### inisafe.start.message (ํŠน์ • ์‚ฌ์ดํŠธ์—์„œ ์—…๋ฌด์š”๊ฑด์œผ๋กœ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€๋œ ๊ฒฝ์šฐ์—๋งŒ) - ์„ค๋ช…: handshake ์ดํ›„์— ์ตœ์ดˆ ๋ฉ”์‹œ์ง€๋ฅผ eLinkํ”„๋ ˆ์ž„์›Œํฌ์— ์ „๋‹ฌํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด ์ตœ์ดˆ ๋ฉ”์‹œ์ง€๋ฅผ ์—ฌ๊ธฐ์— ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. #### inisafe.stop.message (ํŠน์ • ์‚ฌ์ดํŠธ์—์„œ ์—…๋ฌด์š”๊ฑด์œผ๋กœ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€๋œ ๊ฒฝ์šฐ์—๋งŒ) - ์„ค๋ช…: inisafe connection์ด ๋Š๊ธฐ๋ฉด ์—ฐ๊ด€๋œ ๋ฐ˜๋Œ€์ชฝ ์–ด๋Œ‘ํ„ฐ๋„ ์ค‘์ง€์‹œ์ผœ์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์„ค์ •ํ•˜๋Š” ๋ฉ”์‹œ์ง€ ์ •๋ณด๋ฅผ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค. ์ด ์ž‘์—…์„ ์œ„ํ•ด stop message๋ฅผ eLinkํ”„๋ ˆ์ž„์›Œํฌ์— ์ „๋‹ฌํ•˜๋ฉด ํ•ด๋‹น ์–ด๋Œ‘ํ„ฐ๋ฅผ ์ค‘์ง€์‹œํ‚ต๋‹ˆ๋‹ค. # Filter ## Filter - POLLING Health check๋ฅผ ์œ„ํ•ด ์ฃผ๊ธฐ์ ์œผ๋กœ polling ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋„๋ก ์–ด๋Œ‘ํ„ฐ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. #### polling.use - ๊ฐ’: `Y` ๋˜๋Š” `N` - ๊ธฐ๋ณธ๊ฐ’: `N` - ์„ค๋ช…: polling ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ• ์ง€ ๋ง์ง€๋ฅผ ์„ค์ • #### polling.role - ๊ฐ’: `SENDER` ๋˜๋Š” `RECEIVER` - ๊ธฐ๋ณธ๊ฐ’: - socket type์ด client์ผ ๊ฒฝ์šฐ `SENDER` - socket type์ด server์ผ ๊ฒฝ์šฐ `RECEIVER` - ์„ค๋ช…: 1. `SENDER`: polling request๋ฅผ ๋ณด๋‚ด๊ณ , polling response๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค. 2. `RECEIVER`: polling request๋ฅผ ๋ฐ›์€ ํ›„, polling response๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค. #### polling.oneway - ๊ฐ’: `Y` ๋˜๋Š” `N` - ๊ธฐ๋ณธ๊ฐ’: `N` - ์„ค๋ช…: 1. `SENDER`์˜ ๊ฒฝ์šฐ: polling request๋ฅผ ๋ณด๋‚ธ ํ›„, polling response๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 2. `RECEIVER`์˜ ๊ฒฝ์šฐ: polling request๋ฅผ ๋ฐ›์€ ํ›„, polling response๋ฅผ ๋ณด๋‚ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. #### polling.timeout (SENDER only) - ๊ธฐ๋ณธ๊ฐ’: `600` (์ดˆ) - ์„ค๋ช…: SENDER๋Š” ์ด interval๋งˆ๋‹ค polling request๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค. Idle time ๊ฐœ๋…์œผ๋กœ ๋งˆ์ง€๋ง‰ ๋ฉ”์‹œ์ง€ (์‹ค ๊ฑฐ๋ž˜ ๋ฉ”์‹œ์ง€ ๋˜๋Š” polling message) ์ „๋‹ฌ ํ›„๋ถ€ํ„ฐ ์‹œ๊ฐ„์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. #### polling.request (SENDER only) - ๊ธฐ๋ณธ๊ฐ’: `HDRREQPOLL%d{MMddHHmmss}` - ์„ค๋ช…: SENDER๊ฐ€ ๋ณด๋‚ด๋Š” polling request์˜ ํฌ๋งท์ž…๋‹ˆ๋‹ค. ๋‚ ์งœ ๋ฐ์ดํ„ฐ๋Š” `%d{MMddHHmmss}` ํ˜•ํƒœ๋กœ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. - ์˜ˆ์ œ: `HDRREQPOLL0805141530` (2023๋…„ 8์›” 5์ผ 14์‹œ 15๋ถ„ 30์ดˆ์— ๋ณด๋‚ด๋Š” polling request) #### polling.request.pattern (RECEIVER only) - ๊ธฐ๋ณธ๊ฐ’: `(HDR)?(REQPOLL)([0-9]{10})` - ์„ค๋ช…: RECEIVER๊ฐ€ polling request๋ฅผ ํŒ๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ „๋ฌธ ํฌ๋งท์ž…๋‹ˆ๋‹ค. Regular expression์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. - ์˜ˆ์ œ: - ์ž…๋ ฅ: `HDRREQPOLL0805141530` - ๋งค์น˜ ๊ทธ๋ฃน: 1. `HDR` 2. `REQPOLL` 3. `0805141530` #### polling.replacement (RECEIVER only) - ๊ธฐ๋ณธ๊ฐ’: `$1RESPOLL$3` - ์„ค๋ช…: RECEIVER๊ฐ€ polling request๋ฅผ ํŒ๋ณ„ํ•œ ํ›„, polling response๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์ „๋ฌธ ํฌ๋งท์ž…๋‹ˆ๋‹ค. Polling request์— ๋Œ€ํ•œ replacement ํ…์ŠคํŠธ๋กœ Regular expression์œผ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. - ์˜ˆ์ œ: - ์ž…๋ ฅ: `HDRREQPOLL0805141530` - ์ถœ๋ ฅ: `HDRRESPOLL0805141530` #### polling.response.pattern (SENDER only) - ๊ธฐ๋ณธ๊ฐ’: `(HDR)?(RESPOLL)([0-9]{10})` - ์„ค๋ช…: SENDER๊ฐ€ polling response๋ฅผ ํŒ๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ์ „๋ฌธ ํฌ๋งท์ž…๋‹ˆ๋‹ค. Regular expression์œผ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. - ์˜ˆ์ œ: - ์ž…๋ ฅ: `HDRRESPOLL0805141530` - ๋งค์น˜ ๊ทธ๋ฃน: 1. `HDR` 2. `RESPOLL` 3. `0805141530` ## Filter - LIMIT #### max.connection - ๊ฐ’: `(\)?[0-9]+` - ๊ธฐ๋ณธ๊ฐ’: - CLIENT: `1` - SERVER: `""` (๋ฌดํ•œ๋Œ€) - ์„ค๋ช…: 1. CLIENT: - **permanent์ผ ๊ฒฝ์šฐ** ์„œ๋ฒ„ ์ชฝ์— ๋™์‹œ์— ๋งบ๋Š” connection ๊ฐœ์ˆ˜. Max connection ์˜๋ฏธ๋ณด๋‹ค๋Š” default connection ๊ฐœ์ˆ˜์˜ ์˜๋ฏธ๋กœ ์‚ฌ์šฉ๋จ. - Non-permanent์ผ ๊ฒฝ์šฐ ์š”์ฒญ ์–ด๋Œ‘ํ„ฐ์˜ ๋™์‹œ์ฒ˜๋ฆฌ Threads ๋งŒํผ ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ์Œ. 2. SERVER: - ํด๋ผ์ด์–ธํŠธ์™€ ๋งบ๋Š” connection ์ตœ๋Œ€ ๊ฐœ์ˆ˜. - ์ด ๊ฐœ์ˆ˜ ์ดˆ๊ณผ ์‹œ: - ๊ฐ’์ด 0๋ณด๋‹ค ํด ๊ฒฝ์šฐ, ์ƒˆ๋กœ์šด(NEW) connection์„ ๋Š์Œ. - 0๋ณด๋‹ค ์ž‘์„ ๊ฒฝ์šฐ, ๊ธฐ์กด ๋งบ์–ด์ง„ connection ์ค‘ ๊ฐ€์žฅ ์ตœ๊ทผ์— ๋งบ์–ด์ง„ (YOUNGEST) connection์„ ๋Š์Œ. (๊ฐ€์žฅ ์ตœ๊ทผ์— ๋งบ์–ด์ง„ connection์ด L4๋กœ๋ถ€ํ„ฐ ์˜ค๋Š” health check connection์ผ ๊ฐ€๋Šฅ์„ฑ์ด ํฌ๊ธฐ ๋•Œ๋ฌธ) #### connection.limit.per.ip (SERVER only) - ๊ฐ’: `[0-9]+` - ๊ธฐ๋ณธ๊ฐ’: `0` (๋ฌดํ•œ๋Œ€) - ์„ค๋ช…: - SERVER์—์„œ๋งŒ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ’์œผ๋กœ, ๊ฐ IP๋งˆ๋‹ค ๋งบ์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ connection ๊ฐœ์ˆ˜๋ฅผ ์„ค์ •. - IP๋‹น connection์ด ์ด ๊ฐ’์„ ์ดˆ๊ณผํ•˜๋Š” ๊ฒฝ์šฐ ์ƒˆ๋กœ์šด(NEW) connection์„ ๋Š์Œ. ## Filter - VALIDATION #### validation.rule - ๊ฐ’: `[offset, length] = (validation rule, regular expression)` - ๊ธฐ๋ณธ๊ฐ’: (์—†์Œ) - ์„ค๋ช…: - ์ „๋ฌธ์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์ฆํ•˜๋Š” ์„ค์ •. - ์ „๋ฌธ์—์„œ offset์œผ๋กœ๋ถ€ํ„ฐ length ๋งŒํผ์˜ ๊ธธ์ด์— ํ•ด๋‹นํ•˜๋Š” ๋ถ€๋ถ„์„ ๋–ผ์–ด๋‚ด์„œ, Regular expression๊ณผ ๋น„๊ต. - ํ•ด๋‹น ๋ฐ์ดํ„ฐ๊ฐ€ ๋งค์นญ์ด ๋˜์ง€ ์•Š์œผ๋ฉด, ์—๋Ÿฌ๋ฅผ ๋‚ธ ํ›„ ํ•ด๋‹น connection์„ ๋Š์Œ. ## Filter - ACL #### acl.list (SERVER only) - ๊ฐ’: `(ip list, regular expression, comma-separated)` - ๊ธฐ๋ณธ๊ฐ’: (์—†์Œ) - ์„ค๋ช…: - SERVER ๊ฒฝ์šฐ์—์„œ๋งŒ ์‚ฌ์šฉ. - acl.list๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ, ์ƒˆ๋กœ์šด connection ์š”์ฒญ์ด ์™”์„ ๋•Œ ์ด ๋ฆฌ์ŠคํŠธ์— ์—†๋Š” connection์€ ๋กœ๊ทธ๋ฅผ ๋‚จ๊ธฐ๊ณ  ๋Š์Œ. - Comma๋กœ ๋‚˜๋ˆ„์–ด์„œ ์—ฌ๋Ÿฌ IP๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๊ณ , * ๋ฐ regular expression์œผ๋กœ ํ‘œํ˜„ ๊ฐ€๋Šฅ. - ์˜ˆ์‹œ: - `172.17.0.100,172.17.0.101` - ์„ค์ •๋œ 2๊ฐœ์˜ IP๋งŒ์„ ํ—ˆ์šฉ. - `172.17.0.*` - 172.17.0.์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” IP๋งŒ์„ ํ—ˆ์šฉ. - `172.17.1.3[1-7]+` - 172.17.1.31 ~ 172.17.1.37 ๊ตฌ๊ฐ„์˜ IP๋งŒ์„ ํ—ˆ์šฉ. - `192.168.1.0/24` - 192.168.1.0 ~ 192.168.1.255 (CIDR ํ‘œ๊ธฐ๋ฒ•, v4.5 ์ดํ›„ ์ง€์›) ## Filter โ€“ BLOCK #### block.ip.list - ๊ฐ’: `(ip list, regular expression, comma-separated)` - ๊ธฐ๋ณธ๊ฐ’: (์—†์Œ) - ์„ค๋ช…: - ACL๊ณผ ๋ฐ˜๋Œ€๋กœ ์ ‘์†์„ ๊ฑฐ๋ถ€ํ•  IP ๋ฆฌ์ŠคํŠธ๋ฅผ ๋“ฑ๋ก. - IP ๊ฒ€์ฆ ๋ฐฉ์‹์€ ACL๊ณผ ๋™์ผ. ## Filter โ€“ L4 L4์—์„œ health check๋ฅผ ์œ„ํ•ด ์—ฐ๊ฒฐํ•  ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰. #### l4.skip.ip.list - ๊ฐ’: `(ip list, regular expression, comma-separated)` - ๊ธฐ๋ณธ๊ฐ’: (์—†์Œ) - ์„ค๋ช…: ๋“ฑ๋ก๋œ IP์— ๋Œ€ํ•œ ์ ‘๊ทผ์€ L4๋กœ ์ธ์‹ํ•˜์—ฌ eLink FW์œผ๋กœ ์ „๋‹ฌํ•˜์ง€ ์•Š์Œ. ## Filter โ€“ EXECUTOR (Thread Executor) #### max.thread - ๊ฐ’: `[0-9]+` - ๊ธฐ๋ณธ๊ฐ’: `10` - ์„ค๋ช…: - ๊ฐ ์–ด๋Œ‘ํ„ฐ ๋ณ„๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Worker Thread ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋ฅผ ์„ค์ •. - ๋Ÿฐํƒ€์ž„์— ์‹ค์ œ๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” Thread ๊ฐœ์ˆ˜๋Š” 0 ~ max.thread+10. - ์š”์ฒญ์ด ์—†์„ ๊ฒฝ์šฐ Worker Thread๋Š” ํ•œ ๊ฐœ๋„ ์ƒ์„ฑ๋˜์ง€ ์•Š๊ณ , ๋ถ€ํ•˜๊ฐ€ ๋งŽ์„ ์‹œ์—๋Š” max.thread+10 ๊ฐœ์˜ Worker Thread๊ฐ€ ๋™์ž‘. - Worker Thread์™€๋Š” ๋ณ„๋„๋กœ Socket์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์„œ Mina์˜ Codec Filter๋กœ ๋„˜๊ธฐ๋Š” IoProcessor Thread๊ฐ€ ์กด์žฌ. - IoProcessor Thread์˜ ๊ฐœ์ˆ˜๋Š” (max.thread+10)/10๊ณผ CPU ๊ฐœ์ˆ˜ ์ค‘ ์ž‘์€ ๊ฐ’์œผ๋กœ ์„ค์ •. ## single Session & Fail Over ๋Œ€์™ธ๊ธฐ๊ด€์ด 1๊ฐœ์˜ ์—ฐ๊ฒฐ(connection/session)๋งŒ ์ง€์›ํ•˜๋Š” ๊ฒฝ์šฐ, eLink ์ด์ค‘ํ™” ๊ตฌ์„ฑ์„ ์œ„ํ•ด ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์˜ ๊ธฐ๋Šฅ์€ v4.5 ์ดํ›„์— ๋ฐ˜์˜๋œ ๊ธฐ๋Šฅ์ด ์žˆ์œผ๋ฏ€๋กœ ํ™•์ธ ๋ฐ ๊ธฐ๋Šฅ ํŒจ์น˜๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. #### is.single.session - ๊ฐ’: `Y` ๋˜๋Š” `N` - ๊ธฐ๋ณธ๊ฐ’: `N` - ์„ค๋ช…: - Outbound permanent Client์ด๊ณ , ์—ฐ๊ฒฐ๋˜๋Š” ๊ธฐ๊ด€(Server Socket)์ด ํ•˜๋‚˜์˜ ์„ธ์…˜๋งŒ ํ—ˆ์šฉํ•˜๋Š” ๊ฒฝ์šฐ - ์ด์ค‘ํ™” ๊ตฌ์„ฑ๋œ ์–ด๋Œ‘ํ„ฐ๋ฅผ ํ†ตํ•œ Fail Over ์—ฐ๊ฒฐ์„ ์ง€์›ํ•˜๋Š” ๊ธฐ๋Šฅ - ์ด์ค‘ํ™”๋œ eLink ์ธ์Šคํ„ด์Šค์˜ ์–ด๋Œ‘ํ„ฐ ์ค‘ ๋จผ์ € ์ ‘์†๋œ ์–ด๋Œ‘ํ„ฐ๊ฐ€ ์ ‘์†์„ ์œ ์ง€ํ•˜๊ณ , ๋จผ์ € ์ ‘์†๋œ ์–ด๋Œ‘ํ„ฐ์˜ ์—ฐ๊ฒฐ์ด ๋Š์–ด์ง€๊ฑฐ๋‚˜, ํ•ด๋‹น ์ธ์Šคํ„ด์Šค(์„œ๋ฒ„)๊ฐ€ ๋น„์ •์ƒ ์ข…๋ฃŒ๋˜์—ˆ์„ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค์˜ ์–ด๋Œ‘ํ„ฐ๊ฐ€ ์ ‘์†์„ ์‹œ๋„ํ•˜๊ณ  ์—ฐ๊ฒฐ์ด ์ด๋ฃจ์–ด์ง - (2๊ฐœ์˜ ์ธ์Šคํ„ด์Šค ๊ฐ„ ์ด์ค‘ํ™” ๊ตฌ์„ฑ๋งŒ ์ง€์›๋จ) #### single.primary.inst - ๊ฐ’: eLink server inst.Name - ๊ธฐ๋ณธ๊ฐ’: (์—†์Œ) - ์„ค๋ช…: - ์ด์ค‘ํ™”๊ฐ€ ๊ตฌ์„ฑ๋œ ์„œ๋ฒ„์˜ primary ์ธ์Šคํ„ด์Šค ๋ช…์„ ์„ค์ •ํ•˜๋ฉด, ์„œ๋ฒ„ ๋™์‹œ ๊ธฐ๋™ ์‹œ์— primary ์ธ์Šคํ„ด์Šค์˜ ์–ด๋Œ‘ํ„ฐ๊ฐ€ ๋จผ์ € ์ ‘์†๋˜๋„๋ก ํ•จ - ์„œ๋ฒ„ ์ธ์Šคํ„ด์Šค์˜ ๊ธฐ๋™์‹œ๊ฐ„์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ(ํฌ๊ฒŒ ์ฐจ์ด๋‚˜๋Š” ๊ฒฝ์šฐ: 30์ดˆ ์ด์ƒ)์—๋Š” ๋จผ์ € ๊ธฐ๋™๋œ ์ธ์Šคํ„ด์Šค์˜ ์–ด๋Œ‘ํ„ฐ๊ฐ€ ์—ฐ๊ฒฐ๋จ #### single.lazystart.secs - ๊ฐ’: seconds - ๊ธฐ๋ณธ๊ฐ’: `[0-9]+` - ์„ค๋ช…: - ์–ด๋Œ‘ํ„ฐ ๊ธฐ๋™ ์‹œ primary.inst๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ ์ง€์—ฐ๋˜๋Š” ์‹œ๊ฐ„์œผ๋กœ primary.inst๊ฐ€ ๋จผ์ € ์—ฐ๊ฒฐ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋Œ€๊ธฐํ•˜๋Š” ์‹œ๊ฐ„ - ํ•ด๋‹น ์‹œ๊ฐ„ ์•ˆ์— primary.inst๊ฐ€ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์— single session์€ ๋žœ๋คํ•˜๊ฒŒ ์ ‘์†๋จ (๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค์˜ ์–ด๋Œ‘ํ„ฐ๊ฐ€ ์ ‘์†ํ•  ์ˆ˜ ์žˆ์Œ) #### single.adaptercheck.url - ๊ฐ’: ์–ด๋Œ‘ํ„ฐ ์ƒํƒœ ์ฒดํฌ๋ฅผ ์œ„ํ•œ ์ ‘์† HTTP URL - ๊ธฐ๋ณธ๊ฐ’: `adapterStatus` (adapterStatus.jsp โ€“ old version์€ ์„ค์ • ํ•„์š”ํ•จ) - ์„ค๋ช…: - primary.inst๊ฐ€ ๊ธฐ๋™๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ์–ด๋Œ‘ํ„ฐ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ START๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” URL ์ •๋ณด - primary.inst๊ฐ€ ์ •์ƒ ๊ธฐ๋™๋œ ์ƒํƒœ์—์„œ ์–ด๋Œ‘ํ„ฐ๋ฅผ ๊ฐ•์ œ๋กœ STOPํ•œ ๊ฒฝ์šฐ์— ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค์˜ ์–ด๋Œ‘ํ„ฐ๊ฐ€ ์ ‘์† ์‹œ๋„๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ # Protocol ๋ณ„ ์ƒ์„ธ ๊ฐ€์ด๋“œ ## FIXED_LENGTH_HEADER ํ”„๋กœํ† ์ฝœ #### ๊ฐœ์š” Header(LL byte)๊ธธ์ด๊ฐ€ Fixed ๋˜์–ด์žˆ๋Š” ํ”„๋กœํ† ์ฝœ FIXED_LENGTH_HEADER๋Š” ์ผ๋ฐ˜์ ์ธ Socket ์ ‘์†์— ์‚ฌ์šฉ๋˜์–ด์ง€๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ํ”„๋กœํ† ์ฝœ์ด๋‹ค. ![FIXED_LENGTH_HEADER ํ”„๋กœํ† ์ฝœ](assets/eLink-SOCKET/image-20240812130437990.png) #### ๊ด€๋ จ Configuration | ์„ค์ • ํ‚ค | ์„ค๋ช… | ๊ฐ€๋Šฅํ•œ ๊ฐ’ | |---------|------|-----------| | `protocol` | ํ”„๋กœํ† ์ฝœ ํƒ€์ž… | `FIXED_LENGTH_HEADER` | | `blocking` | ๋ธ”๋กœํ‚น ๋ชจ๋“œ ์„ค์ • | `Y` / `N` | | `polling.use` | ํด๋ง ์‚ฌ์šฉ ์—ฌ๋ถ€ | `Y` / `N` | | `polling.role` | ํด๋ง ์—ญํ•  | `SENDER` / `RECEIVER` | | `polling.oneway` | ๋‹จ๋ฐฉํ–ฅ ํด๋ง ์—ฌ๋ถ€ | `Y` / `N` | | `(S)polling.timeout` | ํด๋ง ํƒ€์ž„์•„์›ƒ (Sender) | ์ •์ˆ˜ (์ดˆ) | | `(S)polling.request` | ํด๋ง ์š”์ฒญ ํ˜•์‹ (Sender) | ๋ฌธ์ž์—ด | | `(R)polling.request.pattern` | ํด๋ง ์š”์ฒญ ํŒจํ„ด (Receiver) | ์ •๊ทœํ‘œํ˜„์‹ | | `(R)polling.replacement` | ํด๋ง ์‘๋‹ต ๋Œ€์ฒด ํŒจํ„ด (Receiver) | ๋ฌธ์ž์—ด | | `(S)polling.response.pattern` | ํด๋ง ์‘๋‹ต ํŒจํ„ด (Sender) | ์ •๊ทœํ‘œํ˜„์‹ | | `ll.field.type` | LL ํ•„๋“œ ํƒ€์ž… | `BIN` / `CHAR` / `NONE` | | `ll.field.length` | LL ํ•„๋“œ ๊ธธ์ด | ์ •์ˆ˜ | | `ll.field.offset` | LL ํ•„๋“œ ์˜คํ”„์…‹ | ์ •์ˆ˜ | | `ll.field.include` | LL ํ•„๋“œ ํฌํ•จ ์—ฌ๋ถ€ | `Y` / `N` | | `ll.offset.exclude` | LL ์˜คํ”„์…‹ ์ œ์™ธ ์—ฌ๋ถ€ | `Y` / `N` | | `ll.include` | LL ํฌํ•จ ์—ฌ๋ถ€ | `Y` / `N` | #### ์ „๋ฌธ์˜ˆ์‹œ ##### BIN ํƒ€์ž…์˜ ๊ฒฝ์šฐ | ์„ค์ • ํ‚ค | ๊ฐ’ | |---------|-----| | `protocol` | `FIXED_LENGTH_HEADER` | | `ll.field.type` | `BIN` | | `ll.field.offset` | `0` | | `ll.field.length` | `2` | | `ll.field.include` | `N` | | `ll.offset.exclude` | `N` | | `ll.include` | `N` | ![BIN ํƒ€์ž… ์˜ˆ์‹œ](assets/eLink-SOCKET/clip_image002-1723434820397.gif) ##### CHAR ํƒ€์ž…์˜ ๊ฒฝ์šฐ | ์„ค์ • ํ‚ค | ๊ฐ’ | |---------|-----| | `protocol` | `FIXED_LENGTH_HEADER` | | `ll.field.type` | `CHAR` | | `ll.field.offset` | `0` | | `ll.field.length` | `4` | | `ll.field.include` | `N` | | `ll.offset.exclude` | `N` | | `ll.include` | `N` | ![CHAR ํƒ€์ž… ์˜ˆ์‹œ](assets/eLink-SOCKET/clip_image002-1723434827775.gif) ##### CHAR ํƒ€์ž…์˜ ๊ฒฝ์šฐ(๋‚ด๋ถ€ํ‘œ์ค€์ „๋ฌธ) | ์„ค์ • ํ‚ค | ๊ฐ’ | |---------|-----| | `protocol` | `FIXED_LENGTH_HEADER` | | `ll.field.type` | `CHAR` | | `ll.field.offset` | `4` | | `ll.field.length` | `9` | | `ll.field.include` | `Y` | | `ll.offset.exclude` | `N` | | `ll.include` | `Y` | ![CHAR ํƒ€์ž… ๋‚ด๋ถ€ํ‘œ์ค€์ „๋ฌธ ์˜ˆ์‹œ](assets/eLink-SOCKET/clip_image002-1723434833752.gif) ## UDP_FIXED_LENGTH_HEADER ํ”„๋กœํ† ์ฝœ #### ๊ฐœ์š” UDP ํ†ต์‹ ์„ ํ•œ๋‹ค๋Š” ์  ๋ง๊ณ ๋Š” FIXED_LENGTH_HEADER ํ”„๋กœํ† ์ฝœ๊ณผ ๊ฐ™๋‹ค. Polling ๊ด€๋ จ ์ž‘์—…์„ UDP ํŠน์„ฑ์ƒ ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฏ€๋กœ, ์ด์— ๊ด€๋ จ๋œ ์„ค์ •์€ ํ•„์š” ์—†๋‹ค. #### ๊ด€๋ จ Configuration | ์„ค์ • ํ‚ค | ์„ค๋ช… | ๊ฐ€๋Šฅํ•œ ๊ฐ’ | |---------|------|-----------| | `protocol` | ํ”„๋กœํ† ์ฝœ ํƒ€์ž… | `UDP_FIXED_LENGTH_HEADER` | | `blocking` | ๋ธ”๋กœํ‚น ๋ชจ๋“œ ์„ค์ • | `Y` / `N` | | `ll.field.type` | LL ํ•„๋“œ ํƒ€์ž… | `BIN` / `CHAR` / `NONE` | | `ll.field.length` | LL ํ•„๋“œ ๊ธธ์ด | ์ •์ˆ˜ | | `ll.field.offset` | LL ํ•„๋“œ ์˜คํ”„์…‹ | ์ •์ˆ˜ | | `ll.field.include` | LL ํ•„๋“œ ํฌํ•จ ์—ฌ๋ถ€ | `Y` / `N` | | `ll.offset.exclude` | LL ์˜คํ”„์…‹ ์ œ์™ธ ์—ฌ๋ถ€ | `Y` / `N` | | `ll.include` | LL ํฌํ•จ ์—ฌ๋ถ€ | `Y` / `N` | ## FIXED_LENGTH_PAYLOAD ํ”„๋กœํ† ์ฝœ #### ๊ฐœ์š” PayLoad๊ธธ์ด๋ฅผ ์•Œ์ˆ˜ ์žˆ๋Š” Header๊ฐ€ ์กด์žฌ ํ•˜์ง€ ์•Š๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค. PayLoad ๊ธธ์ด๊ฐ€ ๊ณ ์ •๋˜์–ด์žˆ๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค. ![FIXED_LENGTH_PAYLOAD ํ”„๋กœํ† ์ฝœ](assets/eLink-SOCKET/clip_image002-1723434844828.gif) #### ๊ด€๋ จ Configuration | ์„ค์ • ํ‚ค | ์„ค๋ช… | ๊ฐ€๋Šฅํ•œ ๊ฐ’ | |---------|------|-----------| | `Protocol` | ํ”„๋กœํ† ์ฝœ ํƒ€์ž… | `FIXED_LENGTH_PAYLOAD` | | `send.payload.length` | ์†ก์‹  ํŽ˜์ด๋กœ๋“œ ๊ธธ์ด | ์ •์ˆ˜ | | `recv.payload.length` | ์ˆ˜์‹  ํŽ˜์ด๋กœ๋“œ ๊ธธ์ด | ์ •์ˆ˜ | #### ์ „๋ฌธ์˜ˆ์‹œ ##### ์†ก์ˆ˜์‹  ๊ธธ์ด๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ | ์„ค์ • ํ‚ค | ๊ฐ’ | |---------|-----| | `protocol` | `FIXED_LENGTH_HEADER` | | `send.payload.length` | `16` | | `recv.payload.length` | `32` | ![์†ก์ˆ˜์‹  ๊ธธ์ด๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ ์˜ˆ์‹œ](assets/eLink-SOCKET/clip_image002-1723434853800.gif) ## UDP_FIXED_LENGTH_PAYLOAD ํ”„๋กœํ† ์ฝœ #### ๊ฐœ์š” UDP ํ†ต์‹ ์„ ํ•œ๋‹ค๋Š” ์ ์„ ์ œ์™ธํ•˜๊ณ ๋Š” FIXED_LENGTH_PAYLOAD ํ”„๋กœํ† ์ฝœ๊ณผ ๊ฐ™๋‹ค. Polling ๊ด€๋ จ ์ž‘์—…์„ UDP ํŠน์„ฑ์ƒ ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฏ€๋กœ, ์ด์— ๊ด€๋ จ๋œ ์„ค์ •์€ ํ•„์š” ์—†๋‹ค. #### ๊ด€๋ จ Configuration | ์„ค์ • ํ‚ค | ์„ค๋ช… | ๊ฐ€๋Šฅํ•œ ๊ฐ’ | |---------|------|-----------| | `protocol` | ํ”„๋กœํ† ์ฝœ ํƒ€์ž… | `UDP_FIXED_LENGTH_HEADER` | | `blocking` | ๋ธ”๋กœํ‚น ๋ชจ๋“œ ์„ค์ • | `Y` / `N` | | `ll.field.type` | LL ํ•„๋“œ ํƒ€์ž… | `BIN` / `CHAR` / `NONE` | | `ll.field.length` | LL ํ•„๋“œ ๊ธธ์ด | ์ •์ˆ˜ | | `ll.field.offset` | LL ํ•„๋“œ ์˜คํ”„์…‹ | ์ •์ˆ˜ | | `ll.field.include` | LL ํ•„๋“œ ํฌํ•จ ์—ฌ๋ถ€ | `Y` / `N` | | `ll.offset.exclude` | LL ์˜คํ”„์…‹ ์ œ์™ธ ์—ฌ๋ถ€ | `Y` / `N` | | `ll.include` | LL ํฌํ•จ ์—ฌ๋ถ€ | `Y` / `N` | ## CISCO ํ”„๋กœํ† ์ฝœ #### ๊ฐœ์š” ์‹œ์Šค์ฝ” ๋ผ์šฐํ„ฐ์˜ IOS๋Š” X.25 Host์—์„œ ์ „์†ก๋˜๋Š” X.25 ํŒจํ‚ท์„ TCP๋กœ ์ „ํ™˜ํ•˜์—ฌ TCPํŒจํ‚ท์œผ๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๊ฑฐ๋‚˜ ํ˜น์€ ๊ทธ ๋ฐ˜๋Œ€๋กœ ์ „ํ™˜ํ•ด์ฃผ๋Š” TCP to X.25 ๋ณ€ํ™˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ![img](assets/eLink-SOCKET/clip_image001.gif) ๋‘ ํ˜ธ์ŠคํŠธ ๊ฐ„์— ์ „์†ก๋˜๋Š” X.25 ํŒจํ‚ท์˜ ํฌ๊ธฐ๊ฐ€ 1024 Bytes (1KB)๊ฐ€ ๋„˜์„ ๊ฒฝ์šฐ More-Bit ๋กœ ํ‘œ์‹œ๋˜๋Š” X.25 ํŒจํ‚ท์˜ boundary ์ •๋ณด๋ฅผ ์ ์ ˆํžˆ ๊ตํ™˜ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋˜์–ด TCP Connection์ด ๋‹จ์ ˆ๋˜๋Š” ๋“ฑ ํ†ต์‹ ์ƒ์˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. CISCO Router๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ์—๋Š” ๋’ค์— ์„ค๋ช…ํ•  RBP Header ์ •๋ณด๋ฅผ ์ด์šฉํ•˜์—ฌ 1KB ์ดํ•˜์˜ ํŒจํ‚ท์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•˜๋‹ค. #### ์ „๋ฌธ ํ—ค๋” - RBP (Record Boundary Preservation) Header IP Translation์˜ ๋ฌธ์ œ๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋ผ์šฐํ„ฐ์™€ TCP ํ˜ธ์ŠคํŠธ๊ฐ„์— X.25 ํŒจํ‚ท์˜ boundary ์ •๋ณด๋ฅผ ๊ตํ™˜ํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ๋กœ์„œ IP Translation ๊ธฐ๋Šฅ๊ณผ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋Œ€์ฒด ๊ธฐ๋Šฅ์ด๋‹ค. X.25 ํ˜ธ์ŠคํŠธ์—์„œ ์ „์†ก๋˜๋Š” X.25 ํŒจํ‚ท์˜ More-Bit๋ฅผ ์ ์ ˆํžˆ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ TCP Host์˜ ํ†ต์‹  ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ด RBP ํ”„๋กœํ† ์ฝœ์„ ์ง€์›ํ•˜๋„๋ก ํ”„๋กœ๊ทธ๋žจ ๋˜์–ด์•ผ ํ•œ๋‹ค. ![image-20240812125616338](assets/eLink-SOCKET/image-20240812125616338.png) #### ๊ด€๋ จ Configuration | ์„ค์ • ํ‚ค | ์„ค๋ช… | ๊ฐ€๋Šฅํ•œ ๊ฐ’ | |---------|------|-----------| | `protocol` | ํ”„๋กœํ† ์ฝœ ํƒ€์ž… | `CISCO` | #### ์ „๋ฌธ ์˜ˆ์‹œ ##### Payload๊ฐ€ 1KB ๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ (Payload Size = 5 Bytes) ์ „๋ฌธ์˜ ํฌ๊ธฐ๊ฐ€ 1024 Bytes (1KB) ๋ณด๋‹ค ์ž‘๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜์˜ ํŒจํ‚ท์œผ๋กœ ๋ฐ์ดํ„ฐ์˜ ์†ก์ˆ˜์‹ ์ด ์ด๋ฃจ์–ด์ง„๋‹ค ![image-20240812130822525](assets/eLink-SOCKET/image-20240812130822525.png) ##### Payload๊ฐ€ 1KB ๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ (Payload Size = 1029 Bytes) ์ „๋ฌธ์˜ ํฌ๊ธฐ๊ฐ€ 1029 Bytes ์ธ ๊ฒฝ์šฐ 1024 Bytes (1KB) ๊ฐ€ ๋„˜๊ธฐ ๋•Œ๋ฌธ์—, ์•„๋ž˜์™€ ๊ฐ™์ด 1024B + 5B ๋กœ ๋‚˜๋ˆ„์–ด ์ „์†กํ•œ๋‹ค. ![image-20240812130806675](assets/eLink-SOCKET/image-20240812130806675.png) ## XECURE ํ”„๋กœํ† ์ฝœ #### ๊ฐœ์š” Softforum ์ œํ’ˆ์ธ XecureConnect ๋ฅผ ์“ฐ๋Š” ์•”ํ˜ธํ™” ํ”„๋กœํ† ์ฝœ์ด๋‹ค. ์•”ํ˜ธํ™” ๋ฐฉ์‹์—๋Š” ํฌ๊ฒŒ HandShake ๋ฐฉ์‹๊ณผ Envelope ๋ฐฉ์‹ 2๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. HandShake ์—๋Š” FIXED ๋ฐฉ์‹ ๊ณผ WELCOME๋ฐฉ์‹์œผ๋กœ ๋‚˜๋‰œ๋‹ค. ![XecureConnect FIXED,BASIC,ENVELOPE ๋ฐฉ์‹](assets/eLink-SOCKET/clip_image002-1723434992034.gif) ![XecureConnect WELCOME๋ฐฉ์‹](assets/eLink-SOCKET/clip_image002-1723434996272.gif) ![XecureConnect ๋ฐฉ์‹](assets/eLink-SOCKET/clip_image002-1723435043700.gif) #### ๊ด€๋ จ Configuration | ์„ค์ • ํ‚ค | ์„ค๋ช… | ๊ฐ€๋Šฅํ•œ ๊ฐ’ | |---------|------|-----------| | `protocol` | ํ”„๋กœํ† ์ฝœ ํƒ€์ž… | `XECURE` | | `ll.field.type` | LL ํ•„๋“œ ํƒ€์ž… | `BIN` / `CHAR` | | `ll.field.length` | LL ํ•„๋“œ ๊ธธ์ด | ์ •์ˆ˜ | | `ll.field.offset` | LL ํ•„๋“œ ์˜คํ”„์…‹ | ์ •์ˆ˜ | | `ll.field.include` | LL ํ•„๋“œ ํฌํ•จ ์—ฌ๋ถ€ | `Y` / `N` | | `ll.offset.exclude` | LL ์˜คํ”„์…‹ ์ œ์™ธ ์—ฌ๋ถ€ | `Y` / `N` | | `ll.include` | LL ํฌํ•จ ์—ฌ๋ถ€ | `Y` / `N` | | `xecure.type` | Xecure ํƒ€์ž… | `BASIC` / `FIXED` / `WELCOME` / `ENVELOPE` | | `xecure.config.path` | Xecure ์„ค์ • ํŒŒ์ผ ๊ฒฝ๋กœ | ๋ฌธ์ž์—ด | | `xecure.remote.cert` | ์›๊ฒฉ ์ธ์ฆ์„œ | ๋ฌธ์ž์—ด | #### ์ „๋ฌธ์˜ˆ์‹œ ##### BASIC ํƒ€์ž…์˜ ๊ฒฝ์šฐ | ์„ค์ • ํ‚ค | ๊ฐ’ | |---------|-----| | `protocol` | `XECURE` | | `xecure.type` | `BASIC` | | `xecure.config.path` | `/fsapp/eai/softforum/xc30/conf/xc_conf.txt` | | `xecure.remote.cert` | | ![BASIC ํƒ€์ž… ์˜ˆ์‹œ1](assets/eLink-SOCKET/clip_image002-1723435053289.gif) ![BASIC ํƒ€์ž… ์˜ˆ์‹œ2](assets/eLink-SOCKET/clip_image002-1723435061946.gif) ![BASIC ํƒ€์ž… ์˜ˆ์‹œ3](assets/eLink-SOCKET/clip_image002-1723435066504.gif) ![BASIC ํƒ€์ž… ์˜ˆ์‹œ4](assets/eLink-SOCKET/clip_image002-1723435072124.gif) ##### FIXED ํƒ€์ž…์˜ ๊ฒฝ์šฐ | ์„ค์ • ํ‚ค | ๊ฐ’ | |---------|-----| | `protocol` | `XECURE` | | `xecure.type` | `FIXED` | | `ll.field.type` | `CHAR` | | `ll.field.offset` | `0` | | `ll.field.length` | `7` | | `ll.field.include` | `N` | | `ll.offset.exclude` | `N` | | `ll.include` | `Y` | | `xecure.config.path` | `/fsapp/eai/softforum/xc30/conf/xc_conf.txt` | | `xecure.remote.cert` | | ![FIXED ํƒ€์ž… ์˜ˆ์‹œ1](assets/eLink-SOCKET/clip_image002-1723435083181.gif) ![FIXED ํƒ€์ž… ์˜ˆ์‹œ2](assets/eLink-SOCKET/clip_image002-1723435087405.gif) ![FIXED ํƒ€์ž… ์˜ˆ์‹œ3](assets/eLink-SOCKET/clip_image002-1723435093170.gif) ![FIXED ํƒ€์ž… ์˜ˆ์‹œ4](assets/eLink-SOCKET/clip_image002-1723435097217.gif) ##### WELCOME ํƒ€์ž…์˜ ๊ฒฝ์šฐ | ์„ค์ • ํ‚ค | ๊ฐ’ | |---------|-----| | `protocol` | `XECURE` | | `xecure.type` | `WELCOME` | | `xecure.config.path` | `/fsapp/eai/softforum/xc30/conf/xc_conf.txt` | | `xecure.remote.cert` | | ![WELCOME ํƒ€์ž… ์˜ˆ์‹œ1](assets/eLink-SOCKET/clip_image002-1723435106326.gif) ![WELCOME ํƒ€์ž… ์˜ˆ์‹œ2](assets/eLink-SOCKET/clip_image002-1723435133176.gif) ![WELCOME ํƒ€์ž… ์˜ˆ์‹œ3](assets/eLink-SOCKET/clip_image004.gif) ![WELCOME ํƒ€์ž… ์˜ˆ์‹œ4](assets/eLink-SOCKET/clip_image006.gif) ![WELCOME ํƒ€์ž… ์˜ˆ์‹œ5](assets/eLink-SOCKET/clip_image008.gif) ##### ENVELOPE ํƒ€์ž…์˜ ๊ฒฝ์šฐ | ์„ค์ • ํ‚ค | ๊ฐ’ | |---------|-----| | `protocol` | `XECURE` | | `ll.field.type` | `ENVELOPE` | | `ll.field.offset` | `0` | | `ll.field.length` | `7` | | `ll.field.include` | `N` | | `ll.offset.exclude` | `N` | | `ll.include` | `Y` | | `xecure.config.path` | `/fsapp/eai/softforum/xc30/conf/xc_conf.txt` | | `xecure.remote.cert` | `daum/local_signCert.der` | ![ENVELOPE ํƒ€์ž… ์˜ˆ์‹œ1](assets/eLink-SOCKET/clip_image002-1723435181028.gif) ![ENVELOPE ํƒ€์ž… ์˜ˆ์‹œ2](assets/eLink-SOCKET/clip_image004-1723435181028.gif) ![ENVELOPE ํƒ€์ž… ์˜ˆ์‹œ3](assets/eLink-SOCKET/clip_image006-1723435181028.gif) ![ENVELOPE ํƒ€์ž… ์˜ˆ์‹œ4](assets/eLink-SOCKET/clip_image008-1723435181028.gif) ## INISAFE ํ”„๋กœํ† ์ฝœ #### ๊ฐœ์š” ์‹ ํ•œ๊ตญ์€ํ–‰๋ง์„ ์œ„ํ•ด์„œ ๋งŒ๋“  ํ”„๋กœํ† ์ฝœ์ด๋‹ค. HandShake ํ›„์— ๊ฑฐ๋ž˜ ๋ฐ์ดํ„ฐ๋ฅผ ์•”๋ณตํ˜ธํ™” ํ•œ๋‹ค. Server์™€ Client๋ฅผ ๊ฐ™์ด ์…‹ํŒ… ํ•ด์•ผ ๋œ๋‹ค. ์‹ ํ•œ๊ตญ์€ํ–‰์—์„œ Server๋กœ ์ ‘์†์„ ํ•˜๋ฉด ์‹ ํ•œ๊ตญ์€ํ–‰์œผ๋กœ ์ ‘์†์„ ์‹œ๋„ํ•œ๋‹ค. ์ ‘์†์„ฑ๊ณต์‹œ Framework์œผ๋กœ ํŠน์ •ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋˜์ง„๋‹ค. ์ ‘์†๋‹จ์ ˆ์‹œ Framework์œผ๋กœ ํŠน์ •ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋˜์ง„๋‹ค. ![INISAFE ํ”„๋กœํ† ์ฝœ ๊ฐœ์š”1](assets/eLink-SOCKET/clip_image002-1723435217517.gif) ![INISAFE ํ”„๋กœํ† ์ฝœ ๊ฐœ์š”2](assets/eLink-SOCKET/clip_image002-1723435221148.gif) #### ๊ด€๋ จ Configuration | ์„ค์ • ํ‚ค | ์„ค๋ช… | ๊ฐ€๋Šฅํ•œ ๊ฐ’ | |---------|------|-----------| | `protocol` | ํ”„๋กœํ† ์ฝœ ํƒ€์ž… | `INISAFE` | | `inisafe.config.path` | INISAFE ์„ค์ • ํŒŒ์ผ ๊ฒฝ๋กœ | ๋ฌธ์ž์—ด | | `inisafe.related.adapter.groups` | ๊ด€๋ จ ์–ด๋Œ‘ํ„ฐ ๊ทธ๋ฃน | ๋ฌธ์ž์—ด | | `inisafe.start.message` | ์‹œ์ž‘ ๋ฉ”์‹œ์ง€ | ๋ฌธ์ž์—ด | | `inisafe.stop.message` | ์ข…๋ฃŒ ๋ฉ”์‹œ์ง€ | ๋ฌธ์ž์—ด | #### ์ „๋ฌธ์˜ˆ์‹œ ##### INISAFE์˜ ๊ฒฝ์šฐ | ์„ค์ • ํ‚ค | ๊ฐ’ | |---------|-----| | `protocol` | `INISAFE` | | `inisafe.config.path` | `/fsapp/eai/initech/inisafe/properties/INISAFENet.properties` | | `inisafe.related.adapter.groups` | `_KGB_IN_SNA_AsR,_KGB_OU_SNA_AsC` | | `inisafe.start.message` | `00000EAI000005BOK0000%d{yyyyMMdd} 000000000000000000000000%d{yyyyMMddHHmmss}0000000000000000000010511016N001 id12345678901234pass123456789012` | | `inisafe.stop.message` | `00000EAI999999BOK0000%d{yyyyMMdd} 000000000000000000000000%d{yyyyMMddHHmmss}0000000000000000000010511016N001 id12345678901234pass123456789012` | ![INISAFE ์˜ˆ์‹œ1](assets/eLink-SOCKET/clip_image002-1723435262032.gif) ![INISAFE ์˜ˆ์‹œ2](assets/eLink-SOCKET/clip_image004-1723435262032.gif) ![INISAFE ์˜ˆ์‹œ3](assets/eLink-SOCKET/clip_image006-1723435262032.gif) ![INISAFE ์˜ˆ์‹œ4](assets/eLink-SOCKET/clip_image008-1723435262032.gif) ![INISAFE ์˜ˆ์‹œ5](assets/eLink-SOCKET/clip_image010.gif) ![INISAFE ์˜ˆ์‹œ6](assets/eLink-SOCKET/clip_image012.gif) ![INISAFE ์˜ˆ์‹œ7](assets/eLink-SOCKET/clip_image014.gif) ๋„ค, ์ œ๊ณตํ•˜์‹  ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ## EGSEED ํ”„๋กœํ† ์ฝœ #### ๊ฐœ์š” ์ด์ง€๋ก  ๋Œ€์ถœ์„ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. SEED ์•”ํ˜ธํ™”๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์•”ํ˜ธํ‚ค๋Š” ๋ฐฐํฌ๋œ jar์— ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Server ๋ชจ๋“œ๋งŒ ์žˆ์œผ๋ฉฐ, ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณตํ˜ธํ™”ํ•˜์—ฌ eLink ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ๋ณด๋‚ด๊ณ  ์‘๋‹ต์„ ๋ณด๋‚ผ ๋•Œ๋Š” ํ‰๋ฌธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ![EGSEED ํ”„๋กœํ† ์ฝœ ๊ฐœ์š”1](assets/eLink-SOCKET/clip_image002-1723435269903.gif) ![EGSEED ํ”„๋กœํ† ์ฝœ ๊ฐœ์š”2](assets/eLink-SOCKET/clip_image004-1723435269903.gif) #### ๊ด€๋ จ Configuration | ์„ค์ • ํ‚ค | ์„ค๋ช… | ๊ฐ€๋Šฅํ•œ ๊ฐ’ | |---------|------|-----------| | `protocol` | ํ”„๋กœํ† ์ฝœ ํƒ€์ž… | `EGSEED` | | `ll.field.type` | LL ํ•„๋“œ ํƒ€์ž… | `BIN` / `CHAR` | | `ll.field.length` | LL ํ•„๋“œ ๊ธธ์ด | ์ •์ˆ˜ | | `ll.field.offset` | LL ํ•„๋“œ ์˜คํ”„์…‹ | ์ •์ˆ˜ | | `ll.field.include` | LL ํ•„๋“œ ํฌํ•จ ์—ฌ๋ถ€ | `Y` / `N` | | `ll.offset.exclude` | LL ์˜คํ”„์…‹ ์ œ์™ธ ์—ฌ๋ถ€ | `Y` / `N` | | `ll.include` | LL ํฌํ•จ ์—ฌ๋ถ€ | `Y` / `N` | #### ์ „๋ฌธ์˜ˆ์‹œ ##### EGSEED์˜ ๊ฒฝ์šฐ | ์„ค์ • ํ‚ค | ๊ฐ’ | |---------|-----| | `protocol` | `EGSEED` | | `ll.field.type` | `CHAR` | | `ll.field.offset` | `0` | | `ll.field.length` | `4` | | `ll.field.include` | `N` | | `ll.offset.exclude` | `N` | | `ll.include` | `N` | ![EGSEED ์˜ˆ์‹œ1](assets/eLink-SOCKET/clip_image002-1723435279857.gif) ![EGSEED ์˜ˆ์‹œ2](assets/eLink-SOCKET/clip_image004-1723435279857.gif) ## CERT ํ”„๋กœํ† ์ฝœ #### ๊ฐœ์š” ๋Œ€๋‚ด ๋น„์‹ ๋ขฐ ๊ตฌ๊ฐ„์— ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ๋Š” ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. #### ๊ด€๋ จ Configuration | ์„ค์ • ํ‚ค | ์„ค๋ช… | ๊ฐ€๋Šฅํ•œ ๊ฐ’ | |---------|------|-----------| | `protocol` | ํ”„๋กœํ† ์ฝœ ํƒ€์ž… | `CERT` | ## HTTP ํ”„๋กœํ† ์ฝœ #### ๊ฐœ์š” Socket Adapter ์ •๋ณด๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. #### ๊ด€๋ จ Configuration | ์„ค์ • ํ‚ค | ์„ค๋ช… | ๊ฐ€๋Šฅํ•œ ๊ฐ’ | |---------|------|--------| | `protocol` | ํ”„๋กœํ† ์ฝœ ํƒ€์ž… | `HTTP` |