Skydive ํด๋ผ์ด์–ธํŠธ๋ฅผ ํ†ตํ•ด ์ˆ˜๋™์œผ๋กœ Skydive ํ† ํด๋กœ์ง€์— ๋…ธ๋“œ ์ถ”๊ฐ€

Skydive๋Š” ์˜คํ”ˆ ์†Œ์Šค ์‹ค์‹œ๊ฐ„ ๋„คํŠธ์›Œํฌ ํ† ํด๋กœ์ง€ ๋ฐ ํ”„๋กœํ† ์ฝœ ๋ถ„์„๊ธฐ์ž…๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ์ธํ”„๋ผ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ƒํ™ฉ์„ ํฌ๊ด„์ ์œผ๋กœ ์ดํ•ดํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„์˜ ๊ด€์‹ฌ์„ ๋Œ๊ธฐ ์œ„ํ•ด ์Šค์นด์ด๋‹ค์ด๋ธŒ ๊ด€๋ จ ์Šคํฌ๋ฆฐ์ƒท ๋ช‡ ์žฅ์„ ๋ณด์—ฌ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ์Šค์นด์ด๋‹ค์ด๋ธŒ ์†Œ๊ฐœ ๊ธ€์ž…๋‹ˆ๋‹ค.

Skydive ํด๋ผ์ด์–ธํŠธ๋ฅผ ํ†ตํ•ด ์ˆ˜๋™์œผ๋กœ Skydive ํ† ํด๋กœ์ง€์— ๋…ธ๋“œ ์ถ”๊ฐ€

Skydive ํด๋ผ์ด์–ธํŠธ๋ฅผ ํ†ตํ•ด ์ˆ˜๋™์œผ๋กœ Skydive ํ† ํด๋กœ์ง€์— ๋…ธ๋“œ ์ถ”๊ฐ€

์šฐํŽธ "skydive.network ์†Œ๊ฐœยป ํ•˜๋ธŒ๋ฅด์— ์žˆ์Œ.

Skydive๋Š” Skydive ์—์ด์ „ํŠธ๋กœ๋ถ€ํ„ฐ ๋„คํŠธ์›Œํฌ ์ด๋ฒคํŠธ๋ฅผ ์ˆ˜์‹ ํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ํ† ํด๋กœ์ง€๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. Skydive ์—์ด์ „ํŠธ ๋„คํŠธ์›Œํฌ ์™ธ๋ถ€์— ์žˆ๋Š” ๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ ์š”์†Œ๋‚˜ TOR, ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ ๋“ฑ๊ณผ ๊ฐ™์€ ๋„คํŠธ์›Œํฌ๊ฐ€ ์•„๋‹Œ ๊ฐ์ฒด๋ฅผ ํ† ํด๋กœ์ง€ ๋‹ค์ด์–ด๊ทธ๋žจ์— ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ถ๊ธˆํ•ดํ•˜์‹  ์ ์ด ์žˆ์œผ์‹ ๊ฐ€์š”? ๋…ธ๋“œ ๊ทœ์น™ API ๋•๋ถ„์— ๋” ์ด์ƒ ๊ณ ๋ฏผํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

Skydive๋Š” 0.20 ๋ฒ„์ „๋ถ€ํ„ฐ ์ƒˆ ๋…ธ๋“œ์™€ ์—ฃ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ธฐ์กด ๋…ธ๋“œ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋…ธ๋“œ ๊ทœ์น™ API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋…ธ๋“œ ๊ทœ์น™ API๋Š” ๋…ธ๋“œ ๊ทœ์น™ API์™€ ์—ฃ์ง€ ๊ทœ์น™ API, ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ๋…ธ๋“œ ๊ทœ์น™ API๋Š” ์ƒˆ ๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ธฐ์กด ๋…ธ๋“œ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์—ฃ์ง€ ๊ทœ์น™ API๋Š” ๋‘ ๋…ธ๋“œ ์‚ฌ์ด์— ๊ฒฝ๊ณ„๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋‘ ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ด ๋ธ”๋กœ๊ทธ์—์„œ๋Š” ๋‘ ๊ฐ€์ง€ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” ์Šค์นด์ด๋‹ค์ด๋ธŒ ๋„คํŠธ์›Œํฌ์— ์†ํ•˜์ง€ ์•Š๋Š” ๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ ์š”์†Œ์ด๊ณ , ๋‘ ๋ฒˆ์งธ๋Š” ๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์•„๋‹Œ ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค. ๊ทธ ์ „์— ํ† ํด๋กœ์ง€ ๊ทœ์น™ API์˜ ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋ณธ์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์Šค์นด์ด๋‹ค์ด๋ธŒ ๋…ธ๋“œ ์ƒ์„ฑ

๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ๊ณ ์œ ํ•œ ๋…ธ๋“œ ์ด๋ฆ„๊ณผ ์œ ํšจํ•œ ๋…ธ๋“œ ์œ ํ˜•์„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

skydive client node-rule create --action="create" --node-name="node1" --node-type="fabric" --name="node rule1"
{
  "UUID": "ea21c30f-cfaa-4f2d-693d-95159acb71ed",
  "Name": "node rule1",
  "Description": "",
  "Metadata": {
    "Name": "node1",
    "Type": "fabric"
  },
  "Action": "create",
  "Query": ""
}

์Šค์นด์ด๋‹ค์ด๋ธŒ ๋…ธ๋“œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธ

๊ธฐ์กด ๋…ธ๋“œ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๋…ธ๋“œ๋ฅผ ์„ ํƒํ•˜๋Š” Gremlin ์ฟผ๋ฆฌ๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ์— ๋”ฐ๋ผ ๋‹จ์ผ ๋…ธ๋“œ ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๋‚˜ ์ด์ƒ์˜ ๋…ธ๋“œ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

skydive client node-rule create --action="update" --name="update rule" --query="G.V().Has('Name', 'node1')" --metadata="key1=val1, key2=val2"
{
  "UUID": "3e6c0e15-a863-4583-6345-715053ac47ce",
  "Name": "update rule",
  "Description": "",
  "Metadata": {
    "key1": "val1",
    "key2": "val2"
  },
  "Action": "update",
  "Query": "G.V().Has('Name', 'node1')"
}

์Šค์นด์ด๋‹ค์ด๋น™ ๋ฆฌ๋ธŒ ๋งŒ๋“ค๊ธฐ

์—์ง€๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ์†Œ์Šค ๋…ธ๋“œ์™€ ๋Œ€์ƒ ๋…ธ๋“œ, ๊ทธ๋ฆฌ๊ณ  ์—์ง€ ๋งํฌ ์œ ํ˜•์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์‹ ๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ๋งํฌ ์œ ํ˜• ๊ฐ’์ด '์†Œ์œ ๊ถŒ'์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ๋ ˆ์ด์–ด 2 ๋งํฌ๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ๋งํฌ ์œ ํ˜• ๊ฐ’์ด '๋ ˆ์ด์–ด 2'์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋…ธ๋“œ ์‚ฌ์ด์— ์—ฌ๋Ÿฌ ๋งํฌ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋งํฌ ์œ ํ˜•์€ ์„œ๋กœ ๋‹ฌ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

skydive client edge-rule create --name="edge" --src="G.v().has('TID', '2f6f9b99-82ef-5507-76b6-cbab28bda9cb')" --dst="G.V().Has('TID', 'd6ec6e2f-362e-51e5-4bb5-6ade37c2ca5c')" --relationtype="both"
{
  "UUID": "50fec124-c6d0-40c7-42a3-2ed8d5fbd410",
  "Name": "edge",
  "Description": "",
  "Src": "G.v().has('TID', '2f6f9b99-82ef-5507-76b6-cbab28bda9cb')",
  "Dst": "G.V().Has('TID', 'd6ec6e2f-362e-51e5-4bb5-6ade37c2ca5c')",
  "Metadata": {
    "RelationType": "both"
  }
}

์ฒซ ๋ฒˆ์งธ ์‚ฌ์šฉ ์‚ฌ๋ก€

์ด ๊ฒฝ์šฐ, ์Šค์นด์ด๋‹ค์ด๋ธŒ ํ† ํด๋กœ์ง€์—์„œ ๋„คํŠธ์›Œํฌ๊ฐ€ ์•„๋‹Œ ์žฅ์น˜๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์Šค์นด์ด๋‹ค์ด๋ธŒ ํ† ํด๋กœ์ง€ ๋‹ค์ด์–ด๊ทธ๋žจ์— ์œ ์šฉํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์™€ ํ•จ๊ป˜ ํ‘œ์‹œ๋˜์–ด์•ผ ํ•˜๋Š” ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ† ํด๋กœ์ง€์— ์žฅ์น˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋…ธ๋“œ ๊ทœ์น™๋งŒ ์ƒ์„ฑํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์žฅ์น˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” create ๋ช…๋ น์˜ ์ผ๋ถ€๋กœ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜, ๋‚˜์ค‘์— ํ•˜๋‚˜ ์ด์ƒ์˜ update node rule ๋ช…๋ น์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ๋…ธ๋“œ ๊ทœ์น™ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ํ† ํด๋กœ์ง€ ๋‹ค์ด์–ด๊ทธ๋žจ์— ์ €์žฅ ์žฅ์น˜๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

skydive client node-rule create --action="create" --node-name="sda" --node-type="persistentvolume" --metadata="DEVNAME=/dev/sda,DEVTYPE=disk,ID.MODEL=SD_MMC, ID.MODEL ID=0316, ID.PATH TAG=pci-0000_00_14_0-usb-0_3_1_0-scsi-0_0_0_0, ID.SERIAL SHORT=20120501030900000, ID.VENDOR=Generic-, ID.VENDOR ID=0bda, MAJOR=8, MINOR=0, SUBSYSTEM=block, USEC_INITIALIZED=104393719727"

์•„๋ž˜์˜ edge rule ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ์ƒ์„ฑ๋œ ๋…ธ๋“œ๋ฅผ ํ˜ธ์ŠคํŠธ ๋…ธ๋“œ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

skydive client edge-rule create --src="G.V().Has('Name', 'node1')" --dst="G.V().Has('Name', 'sda')" --relationtype="ownership"

์œ„์˜ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด ์ด์ œ ์•„๋ž˜ ์ด๋ฏธ์ง€์— ํ‘œ์‹œ๋œ ๋Œ€๋กœ ์ฃผ์–ด์ง„ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์™€ ํ•จ๊ป˜ ์Šค์นด์ด๋‹ค์ด๋ธŒ ํ† ํด๋กœ์ง€ ๋‹ค์ด์–ด๊ทธ๋žจ์—์„œ ํ•ด๋‹น ์žฅ์น˜๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Skydive ํด๋ผ์ด์–ธํŠธ๋ฅผ ํ†ตํ•ด ์ˆ˜๋™์œผ๋กœ Skydive ํ† ํด๋กœ์ง€์— ๋…ธ๋“œ ์ถ”๊ฐ€

๋‘ ๋ฒˆ์งธ ์‚ฌ์šฉ ์‚ฌ๋ก€

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

TOR ์Šค์œ„์น˜๊ฐ€ ์—†์œผ๋ฉด ๋‘ ์—์ด์ „ํŠธ๋Š” ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๋งํฌ๊ฐ€ ์—†๋Š” ๋‘ ๊ฐœ์˜ ๋‹ค๋ฅธ ๋…ธ๋“œ๋กœ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

Skydive ํด๋ผ์ด์–ธํŠธ๋ฅผ ํ†ตํ•ด ์ˆ˜๋™์œผ๋กœ Skydive ํ† ํด๋กœ์ง€์— ๋…ธ๋“œ ์ถ”๊ฐ€

์ด์ œ ๋‹ค์Œ ๋…ธ๋“œ ๊ทœ์น™ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ TOR ์Šค์œ„์น˜์™€ ํฌํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

skydive client node-rule create --node-name="TOR" --node-type="fabric" --action="create"
skydive client node-rule create --node-name="port1" --node-type="port" --action="create"
skydive client node-rule create --node-name="port2" --node-type="port" --action="create"

๋ณด์‹œ๋‹ค์‹œํ”ผ TOR ์Šค์œ„์น˜์™€ ํฌํŠธ๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์Šค์นด์ด๋‹ค์ด๋ธŒ ํ† ํด๋กœ์ง€์— ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฉฐ ์ด์ œ ํ† ํด๋กœ์ง€๋Š” ์•„๋ž˜ ์ด๋ฏธ์ง€์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Skydive ํด๋ผ์ด์–ธํŠธ๋ฅผ ํ†ตํ•ด ์ˆ˜๋™์œผ๋กœ Skydive ํ† ํด๋กœ์ง€์— ๋…ธ๋“œ ์ถ”๊ฐ€

์ด์ œ ๋‹ค์Œ Edge Rule ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ TOR ์Šค์œ„์น˜, ํฌํŠธ 1 ๋ฐ ํ˜ธ์ŠคํŠธ 1์˜ ๊ณต์šฉ ์ธํ„ฐํŽ˜์ด์Šค ์‚ฌ์ด์— ๋งํฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

skydive client edge-rule create --src="G.V().Has('Name', 'TOR')" --dst="G.V().Has('Name', 'port1')" --relationtype="ownership"
skydive client edge-rule create --src="G.V().Has('Name', 'TOR')" --dst="G.V().Has('Name', 'port1')" --relationtype="layer2"
skydive client edge-rule create --src="G.V().Has('TID', '372c254d-bac9-50c2-4ca9-86dcc6ce8a57')" --dst="G.V().Has('Name', 'port1')" --relationtype="layer2"

๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ TOR ์Šค์œ„์น˜, ํฌํŠธ 2 ๋ฐ ํ˜ธ์ŠคํŠธ 2์˜ ๊ณต์šฉ ์ธํ„ฐํŽ˜์ด์Šค ๊ฐ„์— ๋งํฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

skydive client edge-rule create --src="G.V().Has('Name', 'TOR')" --dst="G.V().Has('Name', 'port2')" --relationtype="layer2"
skydive client edge-rule create --src="G.V().Has('Name', 'TOR')" --dst="G.V().Has('Name', 'port2')" --relationtype="ownership"
skydive client edge-rule create --src="G.V().Has('TID', '50037073-7862-5234-4996-e58cc067c69c')" --dst="G.V().Has('Name', 'port2')" --relationtype="layer2"

์ด์ œ TOR ์Šค์œ„์น˜์™€ ํฌํŠธ ๊ฐ„์˜ ์†Œ์œ ๊ถŒ ๋ฐ 2๊ณ„์ธต ๋งํฌ๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ์œผ๋ฉฐ, ์—์ด์ „ํŠธ์™€ ํฌํŠธ ๊ฐ„์˜ 2๊ณ„์ธต ๋งํฌ๋„ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ตœ์ข… ํ† ํด๋กœ์ง€๋Š” ์•„๋ž˜ ์ด๋ฏธ์ง€์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Skydive ํด๋ผ์ด์–ธํŠธ๋ฅผ ํ†ตํ•ด ์ˆ˜๋™์œผ๋กœ Skydive ํ† ํด๋กœ์ง€์— ๋…ธ๋“œ ์ถ”๊ฐ€

์ด์ œ ๋‘ ํ˜ธ์ŠคํŠธ/์—์ด์ „ํŠธ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์—ฐ๊ฒฐ๋˜์—ˆ์œผ๋ฉฐ ๋‘ ํ˜ธ์ŠคํŠธ ๊ฐ„์— ์—ฐ๊ฒฐ์„ ํ…Œ์ŠคํŠธํ•˜๊ฑฐ๋‚˜ ์ตœ๋‹จ ๊ฒฝ๋กœ ์บก์ฒ˜๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

P.S. ๋งํฌ ์›๋ณธ ๊ฒŒ์‹œ๋ฌผ

์šฐ๋ฆฌ๋Š” ์Šค์นด์ด๋‹ค์ด๋ธŒ์˜ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๊ฒŒ์‹œ๋ฌผ์„ ์“ธ ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
ํ…”๋ ˆ๊ทธ๋žจ ์ฑ„ํŒ… skydive.network ์ œ๊ณต.

์ถœ์ฒ˜ : habr.com

DDoS ๋ณดํ˜ธ, VPS VDS ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” ์‚ฌ์ดํŠธ๋ฅผ ์œ„ํ•œ ์•ˆ์ •์ ์ธ ํ˜ธ์ŠคํŒ… ๊ตฌ์ž… ๐Ÿ”ฅ DDoS ๊ณต๊ฒฉ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ์ด ํƒ‘์žฌ๋œ ์•ˆ์ •์ ์ธ ์›น์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ…, VPS ๋ฐ VDS ์„œ๋ฒ„๋ฅผ ๊ตฌ๋งคํ•˜์„ธ์š” | ProHoster