์ด๊ฒ์ Ubuntu Online, Fedora Online, Windows ์จ๋ผ์ธ ์๋ฎฌ๋ ์ดํฐ ๋๋ MAC OS ์จ๋ผ์ธ ์๋ฎฌ๋ ์ดํฐ์ ๊ฐ์ ์ฌ๋ฌ ๋ฌด๋ฃ ์จ๋ผ์ธ ์ํฌ์คํ ์ด์ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ OnWorks ๋ฌด๋ฃ ํธ์คํ ์ ๊ณต์ ์ฒด์์ ์คํํ ์ ์๋ ๋ช ๋ น filan์ ๋๋ค.
ํ๋ก๊ทธ๋จ:
์ด๋ฆ
socat - ๋ค๋ชฉ์ ๋ฆด๋ ์ด(SOcket CAT)
๊ฐ์
์์บฃ [์ต์ ]
์์บฃ -V
์์บฃ -h[h[h]] | -?[?[?]]
ํ๋
ํ๋ก์นธ
๊ธฐ์
์์บฃ ๋ ๊ฐ์ ์๋ฐฉํฅ ๋ฐ์ดํธ ์คํธ๋ฆผ์ ์ค์ ํ๊ณ
๊ทธ๋ค ์ฌ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํฉ๋๋ค. ์๋ํ๋ฉด ์คํธ๋ฆผ์ ๋๊ท๋ชจ ์ธํธ๋ก ๊ตฌ์ฑ๋ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ค์ํ ์ ํ์ ๋ฐ์ดํฐ ์ฑํฌ ๋ฐ ์์ค(์ฃผ์ ์ ํ ์ฐธ์กฐ), ๊ทธ๋ฆฌ๊ณ ๋ง์ ์ฃผ์
์ต์ ์ด ์คํธ๋ฆผ์ ์ ์ฉ๋ ์ ์์ผ๋ฏ๋ก socat๋ ๋ค์ํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
๋ฑ ํ์ฑ ํ์ผ ์ค๋ช ์์ ๋ํ ์ ๋ณด๋ฅผ stdout์ผ๋ก ์ธ์ํ๋ ์ ํธ๋ฆฌํฐ์ ๋๋ค. ๊ทธ๊ฒ
๋๋ฒ๊น ์ ์ํด ์์ฑ๋์์ต๋๋ค ์์บฃ์ด์ง๋ง ๋ค๋ฅธ ๋ชฉ์ ์ผ๋ก๋ ์ ์ฉํ ์ ์์ต๋๋ค. ์ฌ์ฉ
-h ์ต์ ์ ์ฌ์ฉํ๋ฉด ๋ ๋ง์ ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
ํ๋ก์นธ ํ๋ก์ธ์ค ๋งค๊ฐ๋ณ์์ ๋ํ ์ ๋ณด๋ฅผ stdout์ผ๋ก ์ธ์ํ๋ ์ ํธ๋ฆฌํฐ์ ๋๋ค. ๊ทธ๊ฒ์ ๊ฐ์ง๊ณ ์๋ค
์ผ๋ถ UNIX ํ๋ก์ธ์ค ์์ฑ์ ๋ ์ ์ดํดํ๊ณ ๋๋ฒ๊น ์ ์ํด ์์ฑ๋์์ต๋๋ค. ์์บฃ,
ํ์ง๋ง ๋ค๋ฅธ ๋ชฉ์ ์ผ๋ก๋ ์ ์ฉํ ์ ์์ต๋๋ค.
์ ๋ผ์ดํ ์ฌ์ดํด ์์บฃ ์ธ์คํด์ค๋ ์ผ๋ฐ์ ์ผ๋ก XNUMX๋จ๊ณ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
. INIT ๋จ๊ณ์์๋ ๋ช ๋ น์ค ์ต์ ์ด ๊ตฌ๋ฌธ ๋ถ์๋๊ณ ๋ก๊น ์ด ์ด๊ธฐํ๋ฉ๋๋ค.
์ ์ด ์ ๋จ๊ณ, ์์บฃ ์ฒซ ๋ฒ์งธ ์ฃผ์๋ฅผ ์ฐ ๋ค์ ๋ ๋ฒ์งธ ์ฃผ์๋ฅผ ์ฝ๋๋ค.
์ด๋ฌํ ๋จ๊ณ๋ ์ผ๋ฐ์ ์ผ๋ก ์ฐจ๋จ๋ฉ๋๋ค. ๋ฐ๋ผ์ ํนํ ์๋ง๊ณผ ๊ฐ์ ๋ณต์กํ ์ฃผ์ ์ ํ์ ๊ฒฝ์ฐ
๋ค์ ๋จ๊ณ๋ฅผ ์ํํ๊ธฐ ์ ์ ์ฐ๊ฒฐ ์์ฒญ ๋๋ ์ธ์ฆ ๋ํ ์์๋ฅผ ์๋ฃํด์ผ ํฉ๋๋ค.
์์๋์์ต๋๋ค.
. ์ด์ ๋จ๊ณ, ์์บฃ ๋ค์์ ํตํด ๋ ์คํธ๋ฆผ์ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ํ์ผ ์ค๋ช ์๋ฅผ ๋ชจ๋ ๊ฐ์ํฉ๋๋ค.
select() ๋ฐ ํ์ชฝ์์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ ๊ณผ ๋ฐ๋ํธ์ ์ธ ์๋ ์๊ณ ,
socat๋ ์ด๋ฅผ ์ฝ๊ณ , ํ์ํ ๊ฒฝ์ฐ ๊ฐํ ๋ฌธ์ ๋ณํ์ ์ํํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ๋ค์์ ์๋๋ค.
๋ค๋ฅธ ์คํธ๋ฆผ์ ์ฐ๊ธฐ ํ์ผ ์ค๋ช ์๋ฅผ ์ฐพ์ ๋ค์ ๊ณ์ํด์ ๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ค๋ฆฝ๋๋ค.
์๋ฐฉํฅ.
์คํธ๋ฆผ ์ค ํ๋๊ฐ ์ค์ ๋ก EOF์ ๋๋ฌํ๋ฉด ํ์ ๋จ๊ณ๊ฐ ์์๋ฉ๋๋ค. ์์บฃ ์ ์ก
๋ค๋ฅธ ์คํธ๋ฆผ์ ๋ํ EOF ์กฐ๊ฑด, ์ฆ ์ฐ๊ธฐ ์คํธ๋ฆผ๋ง ์ข ๋ฃํ๋ ค๊ณ ์๋ํฉ๋๋ค.
์ ์์ ์ผ๋ก ์ข ๋ฃ๋ ์ ์๋ ๊ธฐํ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ ์๋ ์๊ฐ ๋์ ์์บฃ ๊ณ์ ์ด์ฒด ์ค
๋ค๋ฅธ ๋ฐฉํฅ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ์ง๋ง ๋๋จธ์ง ๋ชจ๋ ์ฑ๋์ ๋ซ๊ณ ์ข ๋ฃํฉ๋๋ค.
์ต์
์์บฃ ํ๋ก๊ทธ๋จ์ ๋์์ ์์ ํ๋ ๋ช ๊ฐ์ง ๋ช ๋ น์ค ์ต์ ์ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ค
์ฃผ์์ ์ผ๋ถ๋ก ์ฌ์ฉ๋๋ ์์ ์ฃผ์ ์ต์ ๊ณผ๋ ์๋ฌด ๊ด๋ จ์ด ์์ต๋๋ค.
๋ช ์ธ์.
-V ๋ฒ์ ๋ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ธฐ๋ฅ ์ ๋ณด๋ฅผ stdout์ผ๋ก ์ธ์ํ๊ณ ์ข ๋ฃํฉ๋๋ค.
-h | -?
๋ช ๋ น์ค ์ต์ ๊ณผ ์ฌ์ฉ ๊ฐ๋ฅํ ์ฃผ์๋ฅผ ์ค๋ช ํ๋ ๋์๋ง ํ ์คํธ๋ฅผ ํ์ค ์ถ๋ ฅ์ผ๋ก ์ธ์ํฉ๋๋ค.
์ ํ์ ์ ๋ ฅํ๊ณ ์ข ๋ฃํฉ๋๋ค.
- ํ | - ??
-h์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ์ฃผ์ ์ต์ ์ ์งง์ ์ด๋ฆ ๋ชฉ๋ก์ ์ถ๊ฐํฉ๋๋ค. ์ผ๋ถ
์ต์ ์ ํ๋ซํผ์ ๋ฐ๋ผ ๋ค๋ฅด๋ฏ๋ก ์ด ์ถ๋ ฅ์
ํน๋ณํ ๊ตฌํ.
-์์์ | - ???
-hh์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ์ฃผ์ ์ต์ ์ด๋ฆ ๋ชฉ๋ก์ ์ถ๊ฐํฉ๋๋ค.
-d ์ด ์ต์ ์ด ์์ผ๋ฉด ์น๋ช ์ ๋ฐ ์ค๋ฅ ๋ฉ์์ง๋ง ์์ฑ๋ฉ๋๋ค. ์ด๊ฒ์ ์ ์ฉ
์ต์ ์ ๊ฒฝ๊ณ ๋ฉ์์ง๋ ์ธ์ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์ง๋จ์ ์ฐธ์กฐํ์ธ์.
-d -d ์น๋ช ์ , ์ค๋ฅ, ๊ฒฝ๊ณ ๋ฐ ์๋ฆผ ๋ฉ์์ง๋ฅผ ์ธ์ํฉ๋๋ค.
-d -d -d
์น๋ช ์ , ์ค๋ฅ, ๊ฒฝ๊ณ , ์๋ฆผ ๋ฐ ์ ๋ณด ๋ฉ์์ง๋ฅผ ์ธ์ํฉ๋๋ค.
-d -d -d -d
์น๋ช ์ , ์ค๋ฅ, ๊ฒฝ๊ณ , ์๋ฆผ, ์ ๋ณด ๋ฐ ๋๋ฒ๊ทธ ๋ฉ์์ง๋ฅผ ์ธ์ํฉ๋๋ค.
-D ์ ์ก ๋จ๊ณ๋ฅผ ์์ํ๊ธฐ ์ ์ ํ์ผ ์ค๋ช ์์ ๋ํ ์ ๋ณด๋ฅผ ๊ธฐ๋กํฉ๋๋ค.
-ly[ ]
stderr ๋์ syslog์ ๋ฉ์์ง๋ฅผ ์๋๋ค. -d ์ต์ ์ผ๋ก ์ ์๋ ์ฌ๊ฐ๋.
์ต์ ์ผ๋ก , syslog ์ ํ์ ์ ํํ ์ ์์ผ๋ฉฐ ๊ธฐ๋ณธ๊ฐ์ "daemon"์ ๋๋ค.
ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ด ์ต์ ์ ๋ฐ๋ฅด์ง ์์ ์ ์์ต๋๋ค.
-lf
๋ค์์ ๋ฉ์์ง๋ฅผ ์๋๋ค. stderr ๋์ [ํ์ผ ์ด๋ฆ]. ์ผ๋ถ ์ XNUMX์
๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํนํ libwrap์ ์ด ์ต์ ์ ๋ฐ๋ฅด์ง ์์ ์ ์์ต๋๋ค.
-ls stderr์ ๋ฉ์์ง๋ฅผ ์๋๋ค(๊ธฐ๋ณธ๊ฐ). ์ผ๋ถ ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋
์ด ์ต์ ์ ๋ฐ๋ฅด์ง ๋ง์ญ์์ค. ํนํ libwrap์ syslog์๋ง ๊ธฐ๋กํ๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.
-lp
์ค๋ฅ ๋ฉ์์ง์ ์ธ์๋๊ณ ๊ตฌ์ฑ์ ์ฌ์ฉ๋๋ ํ๋ก๊ทธ๋จ ์ด๋ฆ์ ์ฌ์ ์ํฉ๋๋ค.
ํ๊ฒฝ ๋ณ์ ์ด๋ฆ.
-๋ฃจ ์ค๋ฅ ๋ฉ์์ง์ ํ์์คํฌํ๋ฅผ ๋ง์ดํฌ๋ก์ด ๋จ์๋ก ํ์ฅํฉ๋๋ค. ์๋ํ์ง ์์
syslog์ ๋ก๊ทธ์ธํ ๋.
-lm[ ]
ํผํฉ ๋ก๊ทธ ๋ชจ๋. ์์ํ๋ ๋์ ๋ฉ์์ง๋ stderr์ ์ธ์๋ฉ๋๋ค. ์ธ์ ์์บฃ ์์
์ ์ก ๋จ๊ณ ๋ฃจํ ๋๋ ๋ฐ๋ชฌ ๋ชจ๋(์ฆ, ๋ชจ๋ ์คํธ๋ฆผ์ ์ฐ ํ ๋ฐ
๋ฐ์ดํฐ ์ ์ก์ ์์ํ๊ฑฐ๋ ํฌํฌ ์ต์ ์ด ์๋ ์ฒญ์ทจ ์์ผ์ ์ฌ์ฉํ์ฌ
๋จผ์ ํตํ ์๋ฝ), ๋ก๊น ์ syslog๋ก ์ ํํฉ๋๋ค. ์ต์ ์ผ๋ก ,
syslog ์ ํ์ ์ ํํ ์ ์์ผ๋ฉฐ ๊ธฐ๋ณธ๊ฐ์ "daemon"์ ๋๋ค.
-ใ ๋ก๊ทธ ๋ฉ์์ง์ ํธ์คํธ ์ด๋ฆ์ ์ถ๊ฐํฉ๋๋ค. ํ๊ฒฝ ๋ณ์ HOSTNAME์ ๊ฐ์ ์ฌ์ฉํ๊ฑฐ๋
HOSTNAME์ด ์ค์ ๋์ง ์์ ๊ฒฝ์ฐ uname()์ผ๋ก ๊ฒ์๋ ๊ฐ์ ๋๋ค.
-v ์ ์ก๋ ๋ฐ์ดํฐ๋ฅผ ๋์ ์คํธ๋ฆผ๋ฟ๋ง ์๋๋ผ stderr์๋ ์๋๋ค.
์ถ๋ ฅ ํ์์ ๊ฐ๋ ์ฑ์ ์ํด ์ผ๋ถ ๋ณํ๋ ํ ์คํธ์ด๋ฉฐ ์ ๋์ฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
"> " ๋๋ "< "๋ ํ๋ฆ ๋ฐฉํฅ์ ๋ํ๋ ๋๋ค.
-x ์ ์ก๋ ๋ฐ์ดํฐ๋ฅผ ๋์ ์คํธ๋ฆผ๋ฟ๋ง ์๋๋ผ stderr์๋ ์๋๋ค.
์ถ๋ ฅ ํ์์ XNUMX์ง์์ด๋ฉฐ ํ๋ฆ์ ๋ํ๋ด๋ "> " ๋๋ "< " ์ ๋์ฌ๊ฐ ๋ถ์ต๋๋ค.
์ง๋. -v ์ ๊ฒฐํฉํ ์ ์์ต๋๋ค.
-๋น
๋ฐ์ดํฐ ์ ์ก ๋ธ๋ก์ ์ค์ ํฉ๋๋ค. [์ฌ์ด์ฆ_t]. ๋ง์ผ๋ฉด ๋ฐ์ดํธ๊ฐ ์ ์ก๋ฉ๋๋ค
๋จ๊ณ๋ง๋ค. ๊ธฐ๋ณธ๊ฐ์ 8192๋ฐ์ดํธ์ ๋๋ค.
-s ๊ธฐ๋ณธ์ ์ผ๋ก, ์์บฃ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ข ๋ฃ๋ฉ๋๋ค.
์ผ๋ถ ์ต์ ์ ์ ์ฉํ ์ ์์ ๋ ์คํ๋ฉ๋๋ค. ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ์์บฃ ์์ฑํ๋ค
์ค๋ฅ๊ฐ ๋ฐ์ํ์ฌ ๊ณ์ํ๋ ค๊ณ ํฉ๋๋ค. ์ด ์ต์ ์ ์ฌ์ฉํ๋๋ผ๋ socat๋ ๋ค์๊ณผ ๊ฐ์ด ์ข ๋ฃ๋ฉ๋๋ค.
์น๋ช ์ ์ด๋ฉฐ ๋ณด์ ๊ฒ์ฌ๊ฐ ์คํจํ๋ฉด ์ฐ๊ฒฐ ์๋๊ฐ ์ค๋จ๋ฉ๋๋ค.
-ํฐ
ํ ์ฑ๋์ด EOF์ ๋๋ฌํ๋ฉด ๋ค๋ฅธ ์ฑ๋์ ์ฐ๊ธฐ ๋ถ๋ถ์ด ์ข ๋ฃ๋ฉ๋๋ค.
๊ทธ๋ฐ ๋ค์, ์์บฃ ๊ธฐ๋ค๋ฆฝ๋๋ค [timeval]์ด ์ ์ ์ข ๋ฃ๋ฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 0.5์ ๋๋ค.
์ด. ์ด ์๊ฐ ์ด๊ณผ๋ ์ฐ๊ธฐ ๋ฐ ์ฝ๊ธฐ ๋ถ๋ถ์ด ๊ฐ๋ฅํ ์ฃผ์์๋ง ์ ์ฉ๋ฉ๋๋ค.
๋ ๋ฆฝ์ ์ผ๋ก ํ์๋จ. ์๊ฐ ์ด๊ณผ ๊ฐ๊ฒฉ ๋์ ์ฝ๊ธฐ ๋ถ๋ถ์ด EOF๋ฅผ ์ ๊ณตํ๋ ๊ฒฝ์ฐ,
socat์ ์๊ฐ ์ด๊ณผ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์ข ๋ฃ๋ฉ๋๋ค.
-ํฐ
์ด ๋นํ์ฑ ์๊ฐ ์ด๊ณผ: socat๊ฐ ์ด๋ฏธ ์ ์ก ๋ฃจํ์ ์๊ณ ์๋ฌด๊ฒ๋ ์๋ ๊ฒฝ์ฐ
์ ๋ํ ์ผ์ด ์ผ์ด๋ฌ์ต๋๋ค [timeval]์ด(๋ฐ์ดํฐ ๋์ฐฉ ์์, ์ธํฐ๋ฝํธ ์์)
๋ฐ์ํ์ต๋๋ค...) ๊ทธ๋ฐ ๋ค์ ์ข ๋ฃ๋ฉ๋๋ค. UDP์ ๊ฐ์ ํ๋กํ ์ฝ์ ์ ์ฉํฉ๋๋ค.
EOF๋ฅผ ์ ์กํฉ๋๋ค.
-u ๋จ๋ฐฉํฅ ๋ชจ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ฒซ ๋ฒ์งธ ์ฃผ์๋ ์ฝ๊ธฐ์๋ง ์ฌ์ฉ๋๋ฉฐ,
๋ ๋ฒ์งธ ์ฃผ์๋ ์ฐ๊ธฐ์๋ง ์ฌ์ฉ๋ฉ๋๋ค(์).
-U ์ญ๋ฐฉํฅ์์๋ ๋จ๋ฐฉํฅ ๋ชจ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ฒซ ๋ฒ์งธ ์ฃผ์๋ ๋ค์ ์ฉ๋๋ก๋ง ์ฌ์ฉ๋ฉ๋๋ค.
์ฐ๊ธฐ, ๋ ๋ฒ์งธ ์ฃผ์๋ ์ฝ๊ธฐ์๋ง ์ฌ์ฉ๋ฉ๋๋ค.
-g ์ฃผ์ ์ต์ ์ ๊ตฌ๋ฌธ ๋ถ์ํ๋ ๋์ ํด๋น ์ต์ ์ด ๋ค์์์ ์ ์ฉํ๋ค๊ณ ๊ฐ์ฃผ๋๋์ง ํ์ธํ์ง ๋ง์ธ์.
์ฃผ์ด์ง ์ฃผ์ ํ๊ฒฝ. ์๋ฅผ ๋ค์ด ์ฅ์น๋ฅผ ๊ฐ์ ๋ก ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ ์ฌ์ฉํ์ญ์์ค.
์ง๋ ฌ ์ฅ์น์ ๋ํ ์์ผ ์ต์ ์ ๋๋ค.
-์
์ ๊ธ ํ์ผ์ด ์์ผ๋ฉด ์ค๋ฅ์ ํจ๊ป ์ข ๋ฃ๋ฉ๋๋ค. lockfile์ด ์์ผ๋ฉด ์์ฑํ๊ณ
๊ณ์ํด์ ์ข ๋ฃ ์ ์ ๊ธ ํ์ผ์ ๋งํฌ๋ฅผ ํด์ ํฉ๋๋ค.
-W
์ ๊ธ ํ์ผ์ด ์์ผ๋ฉด ์ฌ๋ผ์ง ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค. ์ ๊ธํ์ผ์ด ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ,
๊ทธ๊ฒ์ ์์ฑํ๊ณ ๊ณ์ํด์ ์ข ๋ฃ ์ ์ ๊ธ ํ์ผ์ ๋งํฌ๋ฅผ ํด์ ํฉ๋๋ค.
-4 ์ฃผ์๊ฐ ์์์ ๋๋ ๋ช ์์ ์ผ๋ก ์ง์ ๋์ง ์๋ ๊ฒฝ์ฐ IP ๋ฒ์ 4๋ฅผ ์ฌ์ฉํ์ญ์์ค.
๋ฒ์ ; ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
-6 ์ฃผ์๊ฐ ์์์ ๋๋ ๋ช ์์ ์ผ๋ก ์ง์ ๋์ง ์๋ ๊ฒฝ์ฐ IP ๋ฒ์ 6๋ฅผ ์ฌ์ฉํ์ญ์์ค.
๋ฒ์ .
์ฃผ์ ์คํ
์ฃผ์ ๋ช ๋ น์ค ์ธ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๋ ๋ค์์ ์ ๊ณตํฉ๋๋ค. ์์บฃ ์ง์นจ๊ณผ
๋ฐ์ดํธ ์คํธ๋ฆผ์ ์ค์ ํ๋ ๋ฐ ํ์ํ ์ ๋ณด์ ๋๋ค.
์ฃผ์ ์ฌ์์ ์ผ๋ฐ์ ์ผ๋ก XNUMX๊ฐ ์ด์์ ์ฃผ์ ์ ํ ํค์๋๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
ํค์๋์ ์๋ก ':'๋ก ๊ตฌ๋ถ๋ ํ์ ์ฃผ์ ๋งค๊ฐ๋ณ์
XNUMX๊ฐ ์ด์์ ์ฃผ์ ์ต์ ์ ','๋ก ๊ตฌ๋ถ๋ฉ๋๋ค.
ํค์๋๋ ์ฃผ์ ์ ํ(์: TCP4, OPEN, EXEC)์ ์ง์ ํฉ๋๋ค. ์ผ๋ถ ํค์๋์ ๊ฒฝ์ฐ
๋์์ด๊ฐ ์กด์ฌํฉ๋๋ค(STDIO์ ๊ฒฝ์ฐ '-', TCP4์ ๊ฒฝ์ฐ TCP). ํค์๋๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์์ต๋๋ค. ๋ช ๊ฐ์ง์ ๋ํ
ํน์ ์ฃผ์ ์ ํ์ธ ๊ฒฝ์ฐ ํค์๋๋ ์๋ต๋ ์ ์์ต๋๋ค. a๋ก ์์ํ๋ ์ฃผ์ ์ง์
์ซ์๋ FD(์์ ํ์ผ ์ค๋ช ์) ์ฃผ์๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. ์์ '/'๊ฐ ์๋ ๊ฒฝ์ฐ
๋จผ์ ':' ๋๋ ',', GOPEN(์ผ๋ฐ ํ์ผ ์ด๊ธฐ)์ด ๊ฐ์ ๋ฉ๋๋ค.
ํ์ํ ์ฃผ์ ๋งค๊ฐ๋ณ์ ์์ ์ ํ์ ์ฃผ์ ์ ํ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ์: TCP4
์๋ฒ ์ฌ์(์ด๋ฆ ๋๋ ์ฃผ์)๊ณผ ํฌํธ ์ฌ์(๋ฒํธ ๋๋
์๋น์ค ์ด๋ฆ).
๊ฐ ์ฃผ์์๋ XNUMX๊ฐ ์ด์์ ์ฃผ์ ์ต์ ์ด ์ ๊ณต๋ ์ ์์ต๋๋ค. ๊ทธ๋ค์ ์ฃผ์์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค
๋ช๋ช ๋ฐฉ๋ฒ๋ค. ์ต์ ์ ์ต์ ํค์๋ ๋๋ ์ต์ ํค์๋์ ๊ฐ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
'='๋ก ๊ตฌ๋ถ๋ฉ๋๋ค. ์ต์ ํค์๋๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํฉ๋๋ค. ์ต์ ์ ํํฐ๋งํ๋ ค๋ฉด
์ฃผ์ ์ ํ์ ์ ์ฉํ๋ฉฐ ๊ฐ ์ต์ ์ ํ๋์ ์ต์ ๊ทธ๋ฃน์ ๊ตฌ์ฑ์์ ๋๋ค. ๊ฐ๊ฐ
์ฃผ์ ์ ํ์๋ ํ์ฉ๋๋ ์ต์ ๊ทธ๋ฃน ์ธํธ๊ฐ ์์ต๋๋ค. ๋ค์ ์ค ํ๋์ ์ํ๋ ์ต์ ๋ง
์ด๋ฌํ ์ฃผ์ ๊ทธ๋ฃน์ ์ฌ์ฉํ ์ ์์ต๋๋ค(-g ์ต์ ์ ์ธ).
์์ ์คํค๋ง๋ฅผ ๋ฐ๋ฅด๋ ์ฃผ์ ์ฌ์์ด๋ผ๊ณ ๋ ํฉ๋๋ค. ๋จ์ผ ์ฃผ์
๋ช ์ธ์. ๋ ๊ฐ์ ๋จ์ผ ์ฃผ์๋ฅผ "!!"๋ก ๊ฒฐํฉํ ์ ์์ต๋๋ค. ํ์ฑํ๋ค ๋์ผ ์ ํ
ํ ์ฑ๋์ ์ฃผ์์ ๋๋ค. ์ฌ๊ธฐ์๋ ์ฒซ ๋ฒ์งธ ์ฃผ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์์บฃ ๋ฐ์ดํฐ ์ฝ๊ธฐ์ฉ
๋ฐ์ดํฐ๋ฅผ ์ฐ๊ธฐ ์ํ ๋ ๋ฒ์งธ ์ฃผ์์ ๋๋ค. ์ต์ ์ ํ ๋ฒ๋ง ์ง์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์์ต๋๋ค.
๋ ๋จ์ผ ์ฃผ์ ๋ชจ๋์ ์ ์ฉ๋ฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ฃผ์๋ ์ฝ๊ธฐ/์ฐ๊ธฐ ๋ชจ๋๋ก ์ด๋ฆฝ๋๋ค. ์ฃผ์๊ฐ ์ด์ค ์ฃผ์์ ์ผ๋ถ์ธ ๊ฒฝ์ฐ
์ฃผ์ ์ง์ ๋๋ -u ๋๋ -U ์ต์ ์ด ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ ์ฃผ์๋ ๋ค์ ์ฉ๋๋ก๋ง ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
์ฝ๊ธฐ ์ํด์๋ , ์ฐ๊ธฐ ์ํด์๋ . ์ผ๋ถ ์ฃผ์ ์ ํ์์๋ ์ด๋ฅผ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
socat ๋ฒ์ 1.5.0 ์ด์์์๋ ์ดํ ๋ถ์์ด ๋ฐ์ดํ๋ฅผ ์ฒ๋ฆฌํ๋ ค๊ณ ์๋ํฉ๋๋ค.
์๋ฏธ ์๊ฒ ๊ดํธ๋ฅผ ์ฌ์ฉํ๊ณ ํน์ ๋ฌธ์๋ฅผ ์ด์ค์ผ์ดํํ ์ ์์ต๋๋ค. ๋ค์ ์ค ํ๋์ธ ๊ฒฝ์ฐ
๋ฌธ์ ( { [ ' ๊ฐ ๋ฐ๊ฒฌ๋๋ฉด ํด๋น ๋ซ๋ ๋ฌธ์ - ) } ] ' - ๊ฐ ๊ฒ์๋ฉ๋๋ค.
์ ์ํ; ์ค์ฒฉ๋ ์๋ ์์ต๋๋ค. ์ด๋ฌํ ๊ตฌ์ฑ ๋ด์์ ํน์ ๋ฌธ์ ๋ฐ
๋ฌธ์์ด : , !! ํน๋ณํ ์ทจ๊ธํ์ง ์์ต๋๋ค. ํด๋น ๋ฌธ์์ โโ๋ฌธ์์ด์ ๋ชจ๋ ์ด์ค์ผ์ดํํ ์ ์์ต๋๋ค.
\ ๋๋ "" ์์
์ฃผ์ ํ์
์ด ์น์ ์์๋ ํค์๋, ๋งค๊ฐ๋ณ์ ๋ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ์ฃผ์ ์ ํ์ ์ค๋ช ํฉ๋๋ค.
์๋ฏธ๋ก .
๋ง๋ค๋ค:
์ด๋ฆผ creat()๋ฅผ ์ฌ์ฉํ๊ณ ์ฐ๊ธฐ๋ฅผ ์ํด ํ์ผ ์ค๋ช ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๊ฒ
์ฃผ์ ์ ํ์๋ ์ฐ๊ธฐ ์ ์ฉ ์ปจํ ์คํธ๊ฐ ํ์ํฉ๋๋ค. ์๋ํ๋ฉด creat๋ก ์ด๋ฆฐ ํ์ผ์ ๊ทธ๋ด ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์์ ์ฝ์ ์ ์์ต๋๋ค.
O_LARGEFILE๊ณผ ๊ฐ์ ํ๋๊ทธ๋ ์ ์ฉํ ์ ์์ต๋๋ค. ํ์ํ ๊ฒฝ์ฐ ์ต์ ๊ณผ ํจ๊ป OPEN์ ์ฌ์ฉํ์ธ์.
์์ฑ, ์์ฑ.
์ ํจํ ๊ธฐ์กด ๊ฒฝ๋ก์ด๊ฑฐ๋ ๊ธฐ์กด ๊ฒฝ๋ก๊ฐ ์๋์ด์ผ ํฉ๋๋ค. ๋ง์ฝ์ ๋ช ๋ช ๋
ํ์ดํ, creat()๊ฐ ์ฐจ๋จ๋ ์ ์์ต๋๋ค. ๋ง์ฝ์ ์์ผ์ ์ฐธ์กฐํฉ๋๋ค. ์ด๋ ์ค๋ฅ์ ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,REG,NAMED
์ ์ฉํ ์ต์ : ๋ชจ๋, ์ฌ์ฉ์, ๊ทธ๋ฃน, ์ฐ๊ฒฐ ํด์ -์ด๊ธฐ, ์ฐ๊ฒฐ ํด์ -๋ฆ๊ฒ, ์ถ๊ฐ
์ฐธ์กฐ: OPEN, GOPEN
์คํ:
์์ ํ๋ก์ธ์ค์์ ํต์ ์ ์ค์ ํ๋ ํ์ ํ๋ก์ธ์ค๋ฅผ ํฌํฌํ๊ณ
execvp() ๋ฅผ ์ฌ์ฉํ์ฌ ์ง์ ๋ ํ๋ก๊ทธ๋จ์ ํธ์ถํฉ๋๋ค. ๊ฐ๋จํ ๋ช ๋ น์ด๋ค
๋จ์ผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋ ์ธ์๊ฐ ์์ต๋๋ค. ํ๋ก๊ทธ๋จ ์ด๋ฆ์ '/'๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ
๋ง์ง๋ง '/' ์ดํ ๋ถ๋ถ์ ARGV[0]์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. ํ๋ก๊ทธ๋จ ์ด๋ฆ์ด ์น์ฒ์ธ ๊ฒฝ์ฐ
$PATH๋ฅผ ํตํด ํ๋ก๊ทธ๋จ์ ์ฐพ๊ธฐ ์ํ execvp() ์๋ฏธ ์ฒด๊ณ๊ฐ ์ ์ฉ๋ฉ๋๋ค. ํ์
์ฑ๊ณต์ ์ธ ํ๋ก๊ทธ๋จ ์์, ์์บฃ ํ๋ก์ธ์ค์ stdin์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ณ ๋ค์์์ ์ฝ์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์์ผ์()์ ์ํด ์์ฑ๋ UNIX ๋๋ฉ์ธ ์์ผ์ ์ฌ์ฉํ๋ ํ์ค ์ถ๋ ฅ์ ๋๋ค.
(์)
์ต์ ๊ทธ๋ฃน: FD,SOCKET,EXEC,FORK,TERMIOS
์ ์ฉํ ์ต์ : path, fdin, fdout, chroot, su, su-d, nofork, pty, stderr, ctty,
setid, ํ์ดํ, ๋ก๊ทธ์ธ, sigint, sigquit
์ฐธ์กฐ: ์์คํ
FD:
ํ์ผ ์ค๋ช ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. . ์ด๋ฏธ ์ ํจํ UN*X ํ์ผ๋ก ์กด์ฌํด์ผ ํฉ๋๋ค.
๊ธฐ์ ์.
์ต์ ๊ทธ๋ฃน: FD(TERMIOS,REG,SOCKET)
์ฐธ์กฐ: STDIO, STDIN, STDOUT, STDERR
๊ณ ํ:
(์ผ๋ฐ ์ด๊ธฐ) ์ด ์ฃผ์ ์ ํ์ ๋ค์์ ์ ์ธํ ๋ชจ๋ ํ์ผ ์์คํ ํญ๋ชฉ์ ์ฒ๋ฆฌํ๋ ค๊ณ ์๋ํฉ๋๋ค.
์ ์ฉํ๊ฒ ๋๋ ํ ๋ฆฌ. ์๋ ๊ฒฝ๋ก์ผ ์๋ ์๊ณ ์ ๋ ๊ฒฝ๋ก์ผ ์๋ ์์ต๋๋ค. ๋ง์ฝ ์ด๋ฏธ
์กด์ฌํ๋ ๊ฒฝ์ฐ ํด๋น ์ ํ์ด ํ์ธ๋ฉ๋๋ค. UNIX ๋๋ฉ์ธ ์์ผ์ ๊ฒฝ์ฐ, ์์บฃ ์ฐ๊ฒฐํ๋ค; ๋ง์ฝ์
์ฐ๊ฒฐ ์คํจ, ์์บฃ ๋ฐ์ดํฐ๊ทธ๋จ ์์ผ์ ๊ฐ์ ํ๊ณ sendto() ํธ์ถ์ ์ฌ์ฉํฉ๋๋ค. ๋ง์ฝ
ํญ๋ชฉ์ ์์ผ์ด ์๋๋๋ค. ์์บฃ O_APPEND ํ๋๊ทธ๋ฅผ ์ ์ฉํ์ฌ ์ฝ๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ
์กด์ฌํ๋ ๊ฒฝ์ฐ ์ผ๋ฐ ํ์ผ๋ก O_CREAT ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฆฝ๋๋ค(์).
์ต์ ๊ทธ๋ฃน: FD,REG,SOCKET,NAMED,OPEN
์ฐธ์กฐ: OPEN, CREATE, UNIX-CONNECT
IP-๋ณด๋ด๊ธฐ: :
์์ IP ์์ผ์ ์ฝ๋๋ค. ํธ์คํธ ์ฌ์์ด๋ ์ต์ pf, IP ํ๋กํ ์ฝ์ ๋ฐ๋ผ ๋ค๋ฆ
๋ฒ์ 4 ๋๋ 6์ด ์ฌ์ฉ๋ฉ๋๋ค. ๊ทธ๊ฒ์ ์ฌ์ฉํ๋ค ํจํท์ ๋ณด๋ด๋ ค๋ฉด [IP ์ฃผ์]
ํธ์คํธ๋ก๋ถํฐ ํจํท์ ์์ ํ๊ณ , ๋ค๋ฅธ ํธ์คํธ๋ก๋ถํฐ์ ํจํท์ ๋ฌด์ํฉ๋๋ค. ํ๋กํ ์ฝ 255
IP ํค๋๊ฐ ๋ฐ์ดํฐ์ ์ผ๋ถ์ธ ์์ ์์ผ์ ์ฌ์ฉํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP4,IP6
์ ์ฉํ ์ต์ : pf, ttl
์ฐธ์กฐ: IP4-SENDTO, IP6-SENDTO, IP-RECVFROM, IP-RECV, UDP-SENDTO, UNIX-SENDTO
์ํธ ์์ฉ:
๋ค์์ ํฌํจํ ์์ ํจํท์ ์ฌ์ฉํ์ฌ ์ธํฐํ์ด์ค์ ์ฐ๊ฒฐ๋ ๋คํธ์ํฌ์ ํต์ ํฉ๋๋ค.
๋งํฌ ์์ค ๋ฐ์ดํฐ. ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ ์ด๋ฆ์ ๋๋ค. ํ์ฌ๋ง
๋ฆฌ๋ ์ค์์ ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค. ์ต์ ๊ทธ๋ฃน: FD,SOCKET
์ ์ฉํ ์ต์ : pf, type
์ฐธ์กฐ: ip-recv
IP4-SENDTO: :
IP-SENDTO์ ์ ์ฌํ์ง๋ง ํญ์ IPv4๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP4
IP6-SENDTO: :
IP-SENDTO์ ์ ์ฌํ์ง๋ง ํญ์ IPv6๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP6
IP-๋ฐ์ดํฐ๊ทธ๋จ: :
ํนํ ๋ธ๋ก๋์บ์คํธ์ผ ์ ์๋ ์ง์ ๋ ์ฃผ์๋ก ๋๊ฐ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ ๋๋ค.
๋๋ ๋ฉํฐ์บ์คํธ ์ฃผ์. ๋ก์ปฌ ์์ผ์ ๋์ฐฉํ๋ ํจํท์ ๋ค์๊ณผ ๊ฐ์์ง ํ์ธ๋ฉ๋๋ค.
์์ค ์ฃผ์๊ฐ RANGE ๋๋ TCPWRAP ์ต์ ๊ณผ ์ผ์นํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ด ์ฃผ์ ์ ํ์
๋์นญ ๋๋ ๋น๋์นญ ๋ธ๋ก๋์บ์คํธ ๋๋ ๋ฉํฐ์บ์คํธ ๊ตฌํ์ ์ฌ์ฉ๋ฉ๋๋ค.
์ฐ๋ฝ.
์ต์ ๊ทธ๋ฃน: FD, SOCKET, IP4, IP6, RANGE
์ ์ฉํ ์ต์ : ๋ฐ์ธ๋ฉ, ๋ฒ์, tcpwrap, ๋ธ๋ก๋์บ์คํธ, ip-multicast-loop,
ip-๋ฉํฐ์บ์คํธ-ttl, ip-๋ฉํฐ์บ์คํธ-if, ip-์ถ๊ฐ-๋ฉค๋ฒ์ญ, ttl, tos, pf
์ฐธ์กฐ: IP4-DATAGRAM, IP6-DATAGRAM, IP-SENDTO, IP-RECVFROM, IP-RECV, UDP-DATAGRAM
IP4-๋ฐ์ดํฐ๊ทธ๋จ: :
IP-DATAGRAM๊ณผ ๋น์ทํ์ง๋ง ํญ์ IPv4๋ฅผ ์ฌ์ฉํฉ๋๋ค. (์)
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP4,RANGE
IP6-๋ฐ์ดํฐ๊ทธ๋จ: :
IP-DATAGRAM๊ณผ ๋น์ทํ์ง๋ง ํญ์ IPv6๋ฅผ ์ฌ์ฉํฉ๋๋ค. IPv6์ ์ ์ ์์ต๋๋ค.
๋ฐฉ์ก.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP6,RANGE
IP-RECVFROM:
๋ค์์ ์์ IP ์์ผ์ ์ฝ๋๋ค. . ์ต์ pf์ ๋ฐ๋ผ IP ํ๋กํ ์ฝ ๋ฒ์ 4
๋๋ 6์ด ์ฌ์ฉ๋ฉ๋๋ค. ๋ถํน์ ํผ์ด๋ก๋ถํฐ ํ๋์ ํจํท์ ์์ ํ๊ณ ํ๋ ๋๋
ํด๋น ํผ์ด์ ๋ ๋ง์ ์๋ต ํจํท์ ๋ณด๋ ๋๋ค. ์ด ๋ชจ๋๋ ํนํ ํฌํฌ์ ์ ์ฉํฉ๋๋ค.
์์์ ํผ์ด๋ก๋ถํฐ ๋์ฐฉํ๋ ๊ฐ ํจํท์ด ์์ฒด์ ์ผ๋ก ์ฒ๋ฆฌ๋๋ ์ต์
ํ์ ํ๋ก์ธ์ค. ์ด๋ฅผ ํตํด ๋ค์๊ณผ ๊ฐ์ ์ผ๋ฐ์ ์ธ UDP ๊ธฐ๋ฐ ์๋ฒ์ ์ ์ฌํ ๋์์ด ๊ฐ๋ฅํฉ๋๋ค.
ntpd ๋๋ ๋ช ๋ช ๋.
๋ณด๋ธ ์ฌ๋์ด ์๋ต ํจํท์ ์์ ํธ๋ํฝ์ผ๋ก ๊ฐ์ ธ์ฌ ์ ์๋ค๋ ์ ์ ์ ์ํ์ธ์.
ํฌํธ ๋ฒํธ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์์ ์ IP ์ฃผ์๋ ๋์ผํฉ๋๋ค.
์์ผ์ ๊ตฌ๋ณํ์ญ์์ค.
์ด ์ฃผ์๋ IP-SENDTO ์ฃผ์ ํผ์ด์ ์ ์๋ํฉ๋๋ค(์ ์ฐธ์กฐ). ํ๋กํ ์ฝ 255
IP ํค๋๊ฐ ๋ฐ์ดํฐ์ ์ผ๋ถ์ธ ์์ ์์ผ์ ์ฌ์ฉํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP4,IP6,CHILD,RANGE
์ ์ฉํ ์ต์ : pf, ํฌํฌ, ๋ฒ์, ttl, ๋ธ๋ก๋์บ์คํธ
์ฐธ์กฐ: IP4-RECVFROM, IP6-RECVFROM, IP-SENDTO, IP-RECV, UDP-RECVFROM,
UNIX-RECVFROM
IP4-RECV์์:
IP-RECVFROM๊ณผ ์ ์ฌํ์ง๋ง ํญ์ IPv4๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP4,CHILD,RANGE
IP6-RECV์์:
IP-RECVFROM๊ณผ ์ ์ฌํ์ง๋ง ํญ์ IPv6๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP6,CHILD,RANGE
IP-RECV:
๋ค์์ ์์ IP ์์ผ์ ์ฝ๋๋ค. . ์ต์ pf์ ๋ฐ๋ผ IP ํ๋กํ ์ฝ ๋ฒ์ 4
๋๋ 6์ด ์ฌ์ฉ๋ฉ๋๋ค. ๋ถํน์ ๋ค์์ ํผ์ด๋ก๋ถํฐ ํจํท์ ์์ ํ๊ณ ์ด๋ฅผ ๋ณํฉํฉ๋๋ค.
๋ฐ์ดํฐ. ๋ต๋ณ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค. ์๋ฅผ ๋ค์ด socat IP-SENDTO๋ก ์ฃผ์๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
๋๋ฃ์๊ฒ ์ฐ์คํ์ญ์์ค. ํ๋กํ ์ฝ 255๋ IP ํค๋๊ฐ ํฌํจ๋ ์์ ์์ผ์ ์ฌ์ฉํฉ๋๋ค.
์๋ฃ.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP4,IP6,RANGE
์ ์ฉํ ์ต์ : pf, ๋ฒ์
์ฐธ์กฐ: IP4-RECV, IP6-RECV, IP-SENDTO, IP-RECVFROM, UDP-RECV, UNIX-RECV
IP4-RECV:
IP-RECV์ ๋น์ทํ์ง๋ง ํญ์ IPv4๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP4,RANGE
IP6-RECV:
IP-RECV์ ๋น์ทํ์ง๋ง ํญ์ IPv6๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP6,RANGE
์ด๋ ค ์๋:
์ด๋ฆผ open() ์์คํ ํธ์ถ ์ฌ์ฉ(์์ ) ์ด ์์ ์ ๋ค์์ ์คํจํฉ๋๋ค.
UNIX ๋๋ฉ์ธ ์์ผ.
์ฐธ๊ณ : ์ด ์ฃผ์ ์ ํ์ ์๋ฐฉํฅ ๋ชจ๋์์๋ ๊ฑฐ์ ์ ์ฉํ์ง ์์ต๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,REG,NAMED,OPEN
์ ์ฉํ ์ต์ : creat,excl,noatime,nofollow,append,rdonly,wronly,lock,
์ฝ๊ธฐ ๋ฐ์ดํธ, ๋ฌด์
์ฐธ์กฐ: CREATE, GOPEN, UNIX-CONNECT
OPENSSL: :
SSL ์ฐ๊ฒฐ ์ค์ ์ ์๋ํฉ๋๋ค. [TCP ์๋น์ค] ์ผ์ง [IP ์ฃผ์]
์ฃผ์ ์ฌ์, ์ด๋ฆ ํ์ธ์ ๋ฐ๋ผ TCP/IP ๋ฒ์ 4 ๋๋ 6์ ์ฌ์ฉํ๊ฑฐ๋
์ต์ pf.
์ฐธ๊ณ : ๋ฒ์ 1.7.2.4๊น์ง๋ ์๋ฒ ์ธ์ฆ์์ ์ ํจ์ฑ๋ง ํ์ธ๋์์ต๋๋ค.
์์คํ ์ธ์ฆ์ ์ ์ฅ์, cafile ๋๋ capath์ ์ผ์นํ์ง๋ง ์ผ์นํ์ง๋ ์์ต๋๋ค.
์๋ฒ์ ์ด๋ฆ์ด๋ IP ์ฃผ์. ๋ฒ์ 1.7.3.0๋ถํฐ socat๋ ํผ์ด๋ฅผ ํ์ธํฉ๋๋ค.
์ผ์น ์ฆ๋ช ์ ๋งค๊ฐ๋ณ์ ๋๋ ๊ฐ
openssl-commonname ์ต์ . Socat์ ์ด๋ฅผ ์ธ์ฆ์์ ์ผ์น์ํค๋ ค๊ณ ์๋ํฉ๋๋ค.
subject commonName ๋ฐ ์ธ์ฆ ํ์ฅ subjectAltName DNS ์ด๋ฆ์ ๋๋ค.
์ธ์ฆ์์ ์์ผ๋์นด๋๊ฐ ์ง์๋ฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP4,IP6,TCP,OPENSSL,RETRY
์ ์ฉํ ์ต์ : ์ํธ, ๋ฐฉ๋ฒ, ํ์ธ, ์ผ๋ฐ ์ด๋ฆ cafile, capath, ์ธ์ฆ์,
ํค, ์์ถ, ๋ฐ์ธ๋, pf, ์ฐ๊ฒฐ ์๊ฐ ์ ํ, ์์ค ํฌํธ, ์ฌ์๋
์ฐธ์กฐ: OPENSSL-LISTEN, TCP
์ด๊ธฐSL-๋ฃ๊ธฐ:
TCP์์ ์์ [TCP ์๋น์ค]. IP ๋ฒ์ ์ 4 ๋๋ ๋ค์์ผ๋ก ์ง์ ๋ ๋ฒ์ ์ ๋๋ค.
pf. ์ฐ๊ฒฐ์ด ์น์ธ๋๋ฉด ์ด ์ฃผ์๋ SSL ์๋ฒ๋ก ์๋ํฉ๋๋ค.
์ฐธ๊ณ : ์ด ์ฃผ์์ ์ธ์ฆ์ ์ต์ ์ ์ฌ์ฉํ๊ณ ์ถ์ ์๋ ์์ต๋๋ค.
์ฐธ๊ณ : ํด๋ผ์ด์ธํธ ์ธ์ฆ์๋ cafile ๋๋ capath์ ๋ํด์๋ง ์ ํจ์ฑ์ ํ์ธํฉ๋๋ค.
ํ์ง๋ง ํด๋ผ์ด์ธํธ ์ด๋ฆ์ด๋ IP ์ฃผ์์ ์ผ์นํ๋ ๊ฒ์ ์๋๋๋ค!
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP4,IP6,TCP,LISTEN,OPENSSL,CHILD,RANGE,RETRY
์ ์ฉํ ์ต์ : pf, cipher, method, verify, commonname cafile, capath, ์ธ์ฆ์,
ํค, ์์ถ, ํฌํฌ, ๋ฐ์ธ๋, ๋ฒ์, tcpwrap, su, ์ฌ์ฌ์ฉ ์ฃผ์, ์ฌ์๋
์ฐธ์กฐ: OPENSSL, TCP-LISTEN
ํ์ดํ:
๋ง์ฝ์ ์ด๋ฏธ ์กด์ฌํ๋ฏ๋ก ์ด๋ฆฝ๋๋ค. ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ ๋ช ๋ช ๋ ํ์ดํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์์ฑ ๋ฐ ์คํ๋์์ต๋๋ค. socat ๋ฒ์ 1.4.3๋ถํฐ ๋ช ๋ช ๋ ํ์ดํ๊ฐ ์ ๊ฑฐ๋ฉ๋๋ค.
์ฃผ์๊ฐ ๋ซํ ์์ ๋(๊ทธ๋ฌ๋ ์ฐ๊ฒฐ ํด์ -๋ซ๊ธฐ ์ต์ ์ฐธ์กฐ)
์ฐธ๊ณ : ํ์ดํ๊ฐ ์ฝ๊ธฐ์ ์ฐ๊ธฐ ๋ชจ๋์ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ ์์ฝ ์๋น์ค๋ก ์๋ํฉ๋๋ค.
์ฐธ๊ณ : ํ์ดํ๊ฐ ์ฝ๊ธฐ์ ์ฐ๊ธฐ ๋ชจ๋์ ์ฌ์ฉ๋๊ณ socat์ด ์ฐ๊ธฐ๋ฅผ ์๋ํ๋ ๊ฒฝ์ฐ
ํ์ดํ๊ฐ ๋ฒํผ๋งํ ์ ์๋ ๊ฒ๋ณด๋ค ๋ ๋ง์ ๋ฐ์ดํธ(Linux 2.4: 2048๋ฐ์ดํธ)๊ฐ ์์ผ๋ฉด socat๊ฐ ์ฐจ๋จ๋ ์ ์์ต๋๋ค.
socat ์ต์ (์: -b 2048) ์ฌ์ฉ์ ๊ณ ๋ คํ์ญ์์ค.
์ต์ ๊ทธ๋ฃน: FD,NAMED,OPEN
์ ์ฉํ ์ต์ : rdonly, nonblock, group, user, mode, unlink-early
์ฐธ์กฐ: ์ด๋ฆ ์๋ ํ์ดํ
ํ์ดํ ๋ช ๋ช ๋์ง ์์ ํ์ดํ๋ฅผ ์์ฑํ๊ณ ์ด๋ฅผ ์ฝ๊ณ ์ฐ๋ ๋ฐ ์ฌ์ฉํฉ๋๋ค. ์์ฝ๋ก ์๋ํฉ๋๋ค.
์ฌ๊ธฐ์ ๊ธฐ๋ก๋ ๋ชจ๋ ๋ด์ฉ์ ์ฆ์ ์ฝ์ ๋ฐ์ดํฐ๋ก ๋ํ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ฐธ๊ณ : socat๊ฐ ํ์ดํ๊ฐ ๋๊ธฐ์ด์ ๋ฃ์ ์ ์๋ ๊ฒ๋ณด๋ค ๋ ๋ง์ ๋ฐ์ดํธ๋ฅผ ์ฐ๋ ค๊ณ ์๋ํ๋ ๊ฒฝ์ฐ(Linux 2.4: 2048
๋ฐ์ดํธ), socat๊ฐ ์ฐจ๋จ๋ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด -b 2048 ์ต์ ์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค.
์ต์ ๊ทธ๋ฃน: FD
์ฐธ์กฐ: ๋ช ๋ช ๋ ํ์ดํ
๋๋ฆฌ: : :
TCP/IP ๋ฒ์ 8080 ๋๋ 4์ ์ฌ์ฉํ์ฌ ํฌํธ 6์์ HTTP ํ๋ก์ ์๋ฒ์ ์ฐ๊ฒฐํฉ๋๋ค.
์ฃผ์ ์ฌ์, ์ด๋ฆ ํ์ธ ๋๋ ์ต์ pf์ ๋ฐ๋ผ
ํธ์คํธ ์ด๋ฆ:ํฌํธ์ ๋ํ CONNECT ์์ฒญ. ํ๋ก์๊ฐ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ๊ณ ์ฑ๊ณตํ๋ ๊ฒฝ์ฐ
๋์์ ์ฐ๊ฒฐํ๋ฉด socat๊ณผ ๋์ ๊ฐ์ ๋ฐ์ดํฐ ์ ์ก์ด ์์๋ ์ ์์ต๋๋ค. ๋ฉ๋ชจ
ํธ๋ํฝ์ HTTP์ผ ํ์๋ ์์ง๋ง ์์์ ํ๋กํ ์ฝ์ผ ์ ์์ต๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP4,IP6,TCP,HTTP,RETRY
์ ์ฉํ ์ต์ :proxyport,ignorecr,proxyauth,resolve,crnl,bind,
์ฐ๊ฒฐ ์๊ฐ ์ด๊ณผ, mss, ์์ค ํฌํธ, ์ฌ์๋
์ฐธ์กฐ: SOCKS, TCP
PTY ์์ฌ ํฐ๋ฏธ๋(pty)์ ์์ฑํ๊ณ ํด๋น ๋ง์คํฐ ์ธก์ ์ฌ์ฉํฉ๋๋ค. ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ง๋ ฌ ํ์ ์ด๋ ํฐ๋ฏธ๋์ฒ๋ผ ์ฌ์ฉํ์ฌ pty์ ์ฌ๋ ์ด๋ธ ์ธก์ ์ฝ๋๋ค. (์). ๋ง์ฝ์
ptmx์ openpty ๋ฉ์ปค๋์ฆ์ ๋ชจ๋ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ptmx๊ฐ ์ฌ์ฉ๋ฉ๋๋ค(POSIX).
์ต์ ๊ทธ๋ฃน: FD,NAMED,PTY,TERMIOS
์ ์ฉํ ์ต์ : link, openpty, wait-slave, ๋ชจ๋, ์ฌ์ฉ์, ๊ทธ๋ฃน
์ฐธ์กฐ: UNIX-LISTEN, PIPE, EXEC, SYSTEM
์ฝ๊ธฐ ๋ผ์ธ
์ ๋ ฅ ๋ผ์ธ์ ํธ์งํ๊ณ ์ฌ์ฌ์ฉํ ์ ์๋๋ก stdio์์ GNU readline๊ณผ ํ์คํ ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
(์).
๋ผ์ด์ผ์ค ์ ํ์ผ๋ก ์ธํด ๋ฐ๋น์์์๋ readline ๊ธฐ๋ฅ์ด ๋นํ์ฑํ๋์์ต๋๋ค. ๋ณด๋ค
๋ฒ๊ทธ.
๋์ STDIO๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
SCTP-์ฐ๊ฒฐ: :
์ง์ ๋ SCTP ์คํธ๋ฆผ ์ฐ๊ฒฐ์ ์ค์ ํฉ๋๋ค. [IP ์ฃผ์] ๊ทธ๋ฆฌ๊ณ
[TCP ์๋น์ค] ์ฃผ์์ ๋ฐ๋ผ TCP/IP ๋ฒ์ 4 ๋๋ 6 ์ฌ์ฉ
์ฌ์, ์ด๋ฆ ํ์ธ ๋๋ ์ต์ pf.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP4,IP6,SCTP,CHILD,RETRY
์ ์ฉํ ์ต์ : ๋ฐ์ธ๋ฉ, pf, ์ฐ๊ฒฐ ์๊ฐ ์ด๊ณผ, tos, mtudiscover, sctp-maxseg,
sctp-nodelay, ๋น์ฐจ๋จ, ์์คํฌํธ, ์ฌ์๋, readbytes
์ฐธ์กฐ: SCTP4-CONNECT, SCTP6-CONNECT, SCTP-LISTEN, TCP-CONNECT
SCTP4-์ฐ๊ฒฐ: :
SCTP-CONNECT์ ์ ์ฌํ์ง๋ง IPv4 ํ๋กํ ์ฝ๋ง ์ง์ํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP4,SCTP,CHILD,RETRY
SCTP6-์ฐ๊ฒฐ: :
SCTP-CONNECT์ ์ ์ฌํ์ง๋ง IPv6 ํ๋กํ ์ฝ๋ง ์ง์ํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP6,SCTP,CHILD,RETRY
SCTP-๋ฃ๊ธฐ:
๋ฃ๋๋ค [TCP ์๋น์ค] TCP/IP ์ฐ๊ฒฐ์ ์๋ฝํฉ๋๋ค. IP ๋ฒ์ ์
4 ๋๋ ์ฃผ์ ์ต์ pf, socat ์ต์ (-4, -6)์ผ๋ก ์ง์ ๋ ๊ฒ ๋๋
ํ๊ฒฝ ๋ณ์ SOCAT_DEFAULT_LISTEN_IP. ์ด ์ฃผ์๋ฅผ ์ฌ๋ ๊ฒ์ ์ฐธ๊ณ ํ์ธ์
์ผ๋ฐ์ ์ผ๋ก ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐ๋ ๋๊น์ง ์ฐจ๋จ๋ฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,LISTEN,CHILD,RANGE,IP4,IP6,SCTP,RETRY
์ ์ฉํ ์ต์ : crnl, ๋ถ๊ธฐ, ๋ฐ์ธ๋, ๋ฒ์, tcpwrap, pf, max-children, backlog,
sctp-maxseg, sctp-nodelay, su, ์ฌ์ฌ์ฉ์ฃผ์, ์ฌ์๋, ์ฟจ-์ฐ๊ธฐ
์ฐธ์กฐ: SCTP4-LISTEN, SCTP6-LISTEN, TCP-LISTEN, SCTP-CONNECT
SCTP4-๋ฃ๊ธฐ:
SCTP-LISTEN๊ณผ ์ ์ฌํ์ง๋ง IPv4 ํ๋กํ ์ฝ๋ง ์ง์ํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,LISTEN,CHILD,RANGE,IP4,SCTP,RETRY
SCTP6-๋ฃ๊ธฐ:
SCTP-LISTEN๊ณผ ์ ์ฌํ์ง๋ง IPv6 ํ๋กํ ์ฝ๋ง ์ง์ํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,LISTEN,CHILD,RANGE,IP6,SCTP,RETRY
์์ผ ์ฐ๊ฒฐ: : :
์ฃผ์ด์ง ์ฒซ ๋ฒ์งธ์ ๋ ๋ฒ์งธ ์์ผ ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์คํธ๋ฆผ ์์ผ์ ์์ฑํ๊ณ
SOCK_STREAM(man ์์ผ\(2) ์ฐธ์กฐ) ๋ฐ ์๊ฒฉ ์ฃผ์์ ์ฐ๊ฒฐํฉ๋๋ค. ๋
์์ผ ๋งค๊ฐ๋ณ์๋ int ์ซ์๋ก ์ง์ ๋์ด์ผ ํฉ๋๋ค. OS์ ๋ฌธ์ํ์ธ์
์ ์ ํ ๊ฐ์ ์ฐพ๊ธฐ ์ํ ๋ฌธ์ ๋ฐ ํฌํจ ํ์ผ์ ๋๋ค. ์๊ฒฉ ์ฃผ์
sa_family ๋ฐ (BSD)๊ฐ ์๋ sockaddr ๊ตฌ์กฐ์ ๋ฐ์ดํฐ ํํ์ด์ด์ผ ํฉ๋๋ค.
sa_len ๊ตฌ์ฑ ์์.
์ง์ ๋ ๊ทธ๋ฃน์ ์ต์ ์ธ์๋ ๋ค์์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
socat ์ต์ -g๋ฅผ ์ ์ฉํ๋ฉด ๋ ๋์ ์์ค์ ํ๋กํ ์ฝ ์ต์ ์ด ์ ์ฉ๋ฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,CHILD,RETRY
์ ์ฉํ ์ต์ : ๋ฐ์ธ๋ฉ, setockopt-int, setockopt-bin, setockopt-string
์ฐธ์กฐ: TCP, UDP-CONNECT, UNIX-CONNECT, SOCKET-LISTEN, SOCKET-SENDTO
์์ผ-๋ฐ์ดํฐ๊ทธ๋จ: : : :
์ฃผ์ด์ง ์ฒ์ ์ธ ๊ฐ์ ์์ผ ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๊ทธ๋จ ์์ผ์ ์์ฑํฉ๋๋ค(man ์ฐธ์กฐ).
์์ผ\(2))์ ์คํํ๊ณ ๋๊ฐ๋ ๋ฐ์ดํฐ๋ฅผ ์๊ฒฉ ์ฃผ์๋ก ๋ณด๋ ๋๋ค. ์ธ ๊ฐ์ ์์ผ
๋งค๊ฐ๋ณ์๋ int ์ซ์๋ก ์ง์ ๋์ด์ผ ํฉ๋๋ค. OS ์ค๋ช ์๋ฅผ ์ฐธ์กฐํ๊ณ
์ ์ ํ ๊ฐ์ ์ฐพ์ผ๋ ค๋ฉด ํ์ผ์ ํฌํจํ์ธ์. ์๊ฒฉ ์ฃผ์๋ ๋ฐ์ดํฐ์ฌ์ผ ํฉ๋๋ค.
sa_family ๋ฐ (BSD) sa_len์ด ์๋ sockaddr ๊ตฌ์กฐ ํํ
๊ตฌ์ฑ ์์.
์ง์ ๋ ๊ทธ๋ฃน์ ์ต์ ์ธ์๋ ๋ค์์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
socat ์ต์ -g๋ฅผ ์ ์ฉํ๋ฉด ๋ ๋์ ์์ค์ ํ๋กํ ์ฝ ์ต์ ์ด ์ ์ฉ๋ฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,RANGE
์ ์ฉํ ์ต์ : ๋ฐ์ธ๋ฉ, ๋ฒ์, setockopt-int, setockopt-bin, setockopt-string
์ฐธ์กฐ: UDP-DATAGRAM, IP-DATAGRAM, SOCKET-SENDTO, SOCKET-RECV, SOCKET-RECVFROM
์์ผ ์์ : : :
์ฃผ์ด์ง ์ฒซ ๋ฒ์งธ์ ๋ ๋ฒ์งธ ์์ผ ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์คํธ๋ฆผ ์์ผ์ ์์ฑํ๊ณ
SOCK_STREAM(man ์์ผ\(2) ์ฐธ์กฐ)์์ ๋ค์ด์ค๋ ์ฐ๊ฒฐ์ ๊ธฐ๋ค๋ฆฝ๋๋ค.
์ง์ญ ์ฃผ์. ๋ ๊ฐ์ ์์ผ ๋งค๊ฐ๋ณ์๋ int ์ซ์๋ก ์ง์ ๋์ด์ผ ํฉ๋๋ค.
OS ์ค๋ช ์๋ฅผ ์ฐธ์กฐํ๊ณ ํ์ผ์ ํฌํจํ์ฌ ์ ์ ํ ๊ฐ์ ์ฐพ์ผ์ธ์. ๊ทธ๋งํผ
local-address๋ ๋ค์์ด ์๋ sockaddr ๊ตฌ์กฐ์ ๋ฐ์ดํฐ ํํ์ด์ด์ผ ํฉ๋๋ค.
sa_family ๋ฐ (BSD) sa_len ๊ตฌ์ฑ ์์.
์ง์ ๋ ๊ทธ๋ฃน์ ์ต์ ์ธ์๋ ๋ค์์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
socat ์ต์ -g๋ฅผ ์ ์ฉํ๋ฉด ๋ ๋์ ์์ค์ ํ๋กํ ์ฝ ์ต์ ์ด ์ ์ฉ๋ฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,LISTEN,RANGE,CHILD,RETRY
์ ์ฉํ ์ต์ : setockopt-int, setockopt-bin, setockopt-string
์ฐธ์กฐ: TCP, UDP-CONNECT, UNIX-CONNECT, SOCKET-LISTEN, SOCKET-SENDTO,
์์ผ-SENDTO
์์ผ-RECV: : : :
์ฃผ์ด์ง ์ธ ๊ฐ์ ์์ผ ๋งค๊ฐ๋ณ์(man ์์ผ\(2) ์ฐธ์กฐ)๋ฅผ ์ฌ์ฉํ์ฌ ์์ผ์ ์์ฑํ๊ณ
๊ทธ๊ฒ์ ๋ฌถ๋๋ค . ๋์ฐฉ ๋ฐ์ดํฐ๋ฅผ ์์ ํฉ๋๋ค. ์ธ ๊ฐ์ง ๋งค๊ฐ๋ณ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
int ์ซ์๋ก ์ง์ ํด์ผ ํฉ๋๋ค. OS ์ค๋ช ์๋ฅผ ์ฐธ์กฐํ๊ณ ํ์ผ์ ํฌํจํ์ฌ
์ ์ ํ ๊ฐ์ ์ฐพ์ผ์ญ์์ค. ๋ก์ปฌ ์ฃผ์๋ ๋ค์์ ๋ฐ์ดํฐ ํํ์ด์ด์ผ ํฉ๋๋ค.
sa_family ๋ฐ (BSD) sa_len ๊ตฌ์ฑ ์์๊ฐ ์๋ sockaddr ๊ตฌ์กฐ์ ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,RANGE
์ ์ฉํ ์ต์ : ๋ฒ์, setockopt-int, setockopt-bin, setockopt-string
์ฐธ์กฐ: UDP-RECV, IP-RECV, UNIX-RECV, SOCKET-DATAGRAM, SOCKET-SENDTO,
์์ผ-RECVFROM
์์ผ-RECVFROM: : : :
์ฃผ์ด์ง ์ธ ๊ฐ์ ์์ผ ๋งค๊ฐ๋ณ์(man ์์ผ\(2) ์ฐธ์กฐ)๋ฅผ ์ฌ์ฉํ์ฌ ์์ผ์ ์์ฑํ๊ณ
๊ทธ๊ฒ์ ๋ฌถ๋๋ค . ๋์ฐฉํ๋ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ณ ์๋ต์ ๋ค์ ๋ณด๋ ๋๋ค.
๋ณด๋ด๋ ์ฌ๋. ์ฒ์ ์ธ ๊ฐ์ ๋งค๊ฐ๋ณ์๋ int ์ซ์๋ก ์ง์ ๋์ด์ผ ํฉ๋๋ค. ์ฐพ๋ค
OS ๋ฌธ์ ๋ฐ ํฌํจ ํ์ผ์ ์ฌ์ฉํ์ฌ ์ ์ ํ ๊ฐ์ ์ฐพ์ผ์ธ์. ๊ทธ๋งํผ
local-address๋ ๋ค์์ด ์๋ sockaddr ๊ตฌ์กฐ์ ๋ฐ์ดํฐ ํํ์ด์ด์ผ ํฉ๋๋ค.
sa_family ๋ฐ (BSD) sa_len ๊ตฌ์ฑ ์์.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,CHILD,RANGE
์ ์ฉํ ์ต์ : ํฌํฌ, ๋ฒ์, setockopt-int, setockopt-bin, setockopt-string
์ฐธ์กฐ: UDP-RECVFROM, IP-RECVFROM, UNIX-RECVFROM, SOCKET-DATAGRAM, SOCKET-SENDTO,
์์ผ-RECV
์์ผ-SENDTO: : : :
์ฃผ์ด์ง ์ธ ๊ฐ์ ์์ผ ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์์ผ์ ์์ฑํฉ๋๋ค(man ์์ผ\(2) ์ฐธ์กฐ).
์ง์ ๋ ์ฃผ์๋ก ๋๊ฐ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ณ ์๋ต์ ๋ฐ์ต๋๋ค. ์ธ ๊ฐ์ง
๋งค๊ฐ๋ณ์๋ int ์ซ์๋ก ์ง์ ๋์ด์ผ ํฉ๋๋ค. OS ์ค๋ช ์๋ฅผ ์ฐธ์กฐํ๊ณ
์ ์ ํ ๊ฐ์ ์ฐพ์ผ๋ ค๋ฉด ํ์ผ์ ํฌํจํ์ธ์. ์๊ฒฉ ์ฃผ์๋ ๋ฐ์ดํฐ์ฌ์ผ ํฉ๋๋ค.
sa_family ๋ฐ (BSD) sa_len์ด ์๋ sockaddr ๊ตฌ์กฐ ํํ
๊ตฌ์ฑ ์์.
์ต์ ๊ทธ๋ฃน: FD,SOCKET
์ ์ฉํ ์ต์ : ๋ฐ์ธ๋ฉ, setockopt-int, setockopt-bin, setockopt-string
์ฐธ์กฐ: UDP-SENDTO, IP-SENDTO, UNIX-SENDTO, SOCKET-DATAGRAM, SOCKET-RECV
์์ผ-RECVFROM
์๋ง4: : :
๋ค์์ ํตํด ์ฐ๊ฒฐ [IP ์ฃผ์]์ [IPv4 ์ฃผ์] ์ผ์ง [TCP
์๋น์ค], IP ๋ฒ์ 4 ๋๋ 4์ ํตํด ์๋ง ๋ฒ์ 6 ํ๋กํ ์ฝ์ ์ฌ์ฉํฉ๋๋ค.
์ฃผ์ ์ง์ , ์ด๋ฆ ํ์ธ ๋๋ ์ต์ pf(์).
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP4,IP6,TCP,SOCKS4,RETRY
์ ์ฉํ ์ต์ : ์๋ง์ฌ์ฉ์, ์๋งํฌํธ, ์์คํฌํธ, pf, ์ฌ์๋
์ฐธ์กฐ: SOCKS4A, PROXY, TCP
SOCKS4A: : :
SOCKS4์ ์ ์ฌํ์ง๋ง ์๋ง ํ๋กํ ์ฝ ๋ฒ์ 4a๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ํธ์คํธ ์ด๋ฆ ํ์ธ์ ๊ทธ๋๋ก ์ ์ง๋ฉ๋๋ค.
์๋ง ์๋ฒ๋ก.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP4,IP6,TCP,SOCKS4,RETRY
STDERR ํ์ผ ์ค๋ช ์ 2๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD(TERMIOS,REG,SOCKET)
์ฐธ์กฐ: FD
STDIN ํ์ผ ์ค๋ช ์ 0๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD(TERMIOS,REG,SOCKET)
์ ์ฉํ ์ต์ : readbytes
์ฐธ์กฐ: FD
STDIUM ์ฝ๊ธฐ์๋ ํ์ผ ์ค๋ช ์ 0์ ์ฌ์ฉํ๊ณ ์ฐ๊ธฐ์๋ 1์ ์ฌ์ฉํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD(TERMIOS,REG,SOCKET)
์ ์ฉํ ์ต์ : readbytes
์ฐธ์กฐ: FD
ํ์ค ์ถ๋ ฅ ํ์ผ ์ค๋ช ์ 1๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD(TERMIOS,REG,SOCKET)
์ฐธ์กฐ: FD
์ฒด๊ณ:
์์ ํ๋ก์ธ์ค์์ ํต์ ์ ์ค์ ํ๋ ํ์ ํ๋ก์ธ์ค๋ฅผ ํฌํฌํ๊ณ
system() ์ ์ฌ์ฉํ์ฌ ์ง์ ๋ ํ๋ก๊ทธ๋จ์ ํธ์ถํฉ๋๋ค. ์ ์ ์ ์ํ์๊ธฐ ๋ฐ๋๋๋ค
[๋ฌธ์์ด]์๋ ',' ๋๋ "!!"๊ฐ ํฌํจ๋์ด์๋ ์ ๋๋ฉฐ ํด๋น ์ ๋ฉํ ๋ฌธ์๋ ๋ค์๊ณผ ๊ฐ์์ผ ํ ์๋ ์์ต๋๋ค.
๋ณดํธ๋ฐ์ผ์ธ์. ์ฑ๊ณต์ ์ธ ํ๋ก๊ทธ๋จ ์์ ํ, ์์บฃ stdin์ ๋ฐ์ดํฐ๋ฅผ ์๋๋ค.
์ฒ๋ฆฌํ๊ณ stdout์์ ์ฝ์ต๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,EXEC,FORK,TERMIOS
์ ์ฉํ ์ต์ : path, fdin, fdout, chroot, su, su-d, nofork, pty, stderr, ctty,
setid, ํ์ดํ, sigint, sigquit
์ฐธ์กฐ: EXEC
TCP: :
์ฐ๊ฒฐ ๋์ [TCP ์๋น์ค] ์ผ์ง [IP ์ฃผ์] TCP/IP ๋ฒ์ 4 ๋๋ 6 ์ฌ์ฉ
์ฃผ์ ์ฌ์, ์ด๋ฆ ํ์ธ ๋๋ ์ต์ pf์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP4,IP6,TCP,RETRY
์ ์ฉํ ์ต์ : crnl, ๋ฐ์ธ๋ฉ, pf, ์ฐ๊ฒฐ ์๊ฐ ์ด๊ณผ, tos, mtudiscover, mss, nodelay,
๋น์ฐจ๋จ, ์์คํฌํธ, ์ฌ์๋, readbytes
์ฐธ์กฐ: TCP4, TCP6, TCP-LISTEN, UDP, SCTP-CONNECT, UNIX-CONNECT
TCP4: :
TCP์ ์ ์ฌํ์ง๋ง IPv4 ํ๋กํ ์ฝ๋ง ์ง์ํฉ๋๋ค(์).
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP4,TCP,RETRY
TCP6: :
TCP์ ์ ์ฌํ์ง๋ง IPv6 ํ๋กํ ์ฝ๋ง ์ง์ํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP6,TCP,RETRY
TCP-์์ :
๋ฃ๋๋ค [TCP ์๋น์ค] TCP/IP ์ฐ๊ฒฐ์ ์๋ฝํฉ๋๋ค. IP ๋ฒ์ ์
4 ๋๋ ์ฃผ์ ์ต์ pf, socat ์ต์ (-4, -6)์ผ๋ก ์ง์ ๋ ๊ฒ ๋๋
ํ๊ฒฝ ๋ณ์ SOCAT_DEFAULT_LISTEN_IP. ์ด ์ฃผ์๋ฅผ ์ฌ๋ ๊ฒ์ ์ฐธ๊ณ ํ์ธ์
์ผ๋ฐ์ ์ผ๋ก ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐ๋ ๋๊น์ง ์ฐจ๋จ๋ฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,LISTEN,CHILD,RANGE,IP4,IP6,TCP,RETRY
์ ์ฉํ ์ต์ : crnl, ๋ถ๊ธฐ, ๋ฐ์ธ๋ฉ, ๋ฒ์, tcpwrap, pf, max-children, backlog, mss,
su, ์ฌ์ฌ์ฉ์ฃผ์, ์ฌ์๋, ์ฟจ-์ฐ๊ธฐ
์ฐธ์กฐ: TCP4-LISTEN, TCP6-LISTEN, UDP-LISTEN, SCTP-LISTEN, UNIX-LISTEN,
OPENSSL-LISTEN, TCP-CONNECT
TCP4-๋ฃ๊ธฐ:
TCP-LISTEN๊ณผ ์ ์ฌํ์ง๋ง IPv4 ํ๋กํ ์ฝ๋ง ์ง์ํฉ๋๋ค(์).
์ต์ ๊ทธ๋ฃน: FD,SOCKET,LISTEN,CHILD,RANGE,IP4,TCP,RETRY
TCP6-๋ฃ๊ธฐ:
TCP-LISTEN๊ณผ ์ ์ฌํ์ง๋ง IPv6 ํ๋กํ ์ฝ๋ง ์ง์ํฉ๋๋ค.
์ถ๊ฐ ์ ์ฉํ ์ต์ : ipv6only
์ต์ ๊ทธ๋ฃน: FD,SOCKET,LISTEN,CHILD,RANGE,IP6,TCP,RETRY
ํฐ ์ ํต[: / ]
Linux TUN/TAP ์ฅ์น๋ฅผ ์์ฑํ๊ณ ์ ํ์ ์ผ๋ก ์ฃผ์์ ๋ท๋ง์คํฌ๋ฅผ ํ ๋นํฉ๋๋ค.
๋งค๊ฐ๋ณ์์ ์ํด ์ ๊ณต๋ฉ๋๋ค. ๊ฒฐ๊ณผ ๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ ๊ฑฐ์ ์ฌ์ฉํ ์ค๋น๊ฐ ๋์์ต๋๋ค.
๊ธฐํ ํ๋ก์ธ์ค; socat์ "์์ด์ด ์ธก"์ ์ ๊ณตํฉ๋๋ค. ์ด ์ฃผ์์๋ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ๊ฐ ํ์ํฉ๋๋ค.
ํฐ๋ ๋ณต์ ์ฅ์น(๋ณดํต /dev/net/tun )์ ๋ํ ์ก์ธ์ค ๋ฐ ๊ถํ
์ผ๋ถ ioctl()์ ์ค์ ํฉ๋๋ค. ์ ํ๊ถ ๋ถํ์คํจ is ํ์ ์ ๋ฐ๋ก ํ์ฑํ ์ ์,
์ํธ ์์ฉ!
์ต์ ๊ทธ๋ฃน: FD,NAMED,OPEN,TUN
์ ์ฉํ ์ต์ : iff-up, tun-device, tun-name, tun-type, iff-no-pi
์ฐธ์กฐ: ip-recv
UDP: :
์ฐ๊ฒฐ ๋์ [UDP ์๋น์ค] ์ผ์ง [IP ์ฃผ์] UDP/IP ๋ฒ์ 4 ๋๋ 6 ์ฌ์ฉ
์ฃผ์ ์ฌ์, ์ด๋ฆ ํ์ธ ๋๋ ์ต์ pf์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
UDP ํ๋กํ ์ฝ ์์ฑ์ผ๋ก ์ธํด ์ค์ ์ฐ๊ฒฐ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
ํ๋ฆฝ๋; ์๋ฒ์ '์ฐ๊ฒฐ'ํ๋ ค๋ฉด ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด์ผ ํ๋ฉฐ ํ์ผ ๋์ ์์ต๋๋ค.
์ํ๋ก ์ด์ก์ด ๊ฐ๋ฅํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP4,IP6
์ ์ฉํ ์ต์ : ttl, tos, ๋ฐ์ธ๋ฉ, ์์คํฌํธ, pf
์ฐธ์กฐ: UDP4, UDP6, UDP-LISTEN, TCP, IP
UDP4: :
UDP์ ์ ์ฌํ์ง๋ง IPv4 ํ๋กํ ์ฝ๋ง ์ง์ํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP4
UDP6: :
UDP์ ์ ์ฌํ์ง๋ง IPv6 ํ๋กํ ์ฝ๋ง ์ง์ํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP6
UDP-๋ฐ์ดํฐ๊ทธ๋จ: :
ํนํ ๋ธ๋ก๋์บ์คํธ์ผ ์ ์๋ ์ง์ ๋ ์ฃผ์๋ก ๋๊ฐ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ ๋๋ค.
๋๋ ๋ฉํฐ์บ์คํธ ์ฃผ์. ๋ก์ปฌ ์์ผ์ ๋์ฐฉํ๋ ํจํท์ ๋ค์์ ํ์ธํฉ๋๋ค.
์ฌ๋ฐ๋ฅธ ์๊ฒฉ ํฌํธ์ ํด๋น ์์ค ์ฃผ์๊ฐ RANGE ๋๋ TCPWRAP ์ต์ ๊ณผ ์ผ์นํ๋์ง ํ์ธํ์ญ์์ค.
์๋ฅผ ๋ค์ด ์ด ์ฃผ์ ์ ํ์ ๋์นญ ๋๋ ๋น๋์นญ ๊ตฌํ์ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
๋ธ๋ก๋์บ์คํธ ๋๋ ๋ฉํฐ์บ์คํธ ํต์ .
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP4,IP6,RANGE
์ ์ฉํ ์ต์ : ๋ฐ์ธ๋ฉ, ๋ฒ์, tcpwrap, ๋ธ๋ก๋์บ์คํธ, ip-multicast-loop,
ip-๋ฉํฐ์บ์คํธ-ttl, ip-๋ฉํฐ์บ์คํธ-if, ip-์ถ๊ฐ-๋ฉค๋ฒ์ญ, ttl, tos, ์์ค ํฌํธ, pf
์ฐธ์กฐ: UDP4-DATAGRAM, UDP6-DATAGRAM, UDP-SENDTO, UDP-RECVFROM, UDP-RECV,
UDP-์ฐ๊ฒฐ, UDP-์์ , IP-๋ฐ์ดํฐ๊ทธ๋จ
UDP4-๋ฐ์ดํฐ๊ทธ๋จ: :
UDP-DATAGRAM๊ณผ ์ ์ฌํ์ง๋ง IPv4 ํ๋กํ ์ฝ(example1, example2)๋ง ์ง์ํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP4, RANGE
UDP6-๋ฐ์ดํฐ๊ทธ๋จ: :
UDP-DATAGRAM๊ณผ ์ ์ฌํ์ง๋ง IPv6 ํ๋กํ ์ฝ๋ง ์ง์ํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP6,RANGE
UDP-์์ :
UDP/IP ํจํท์ด ๋์ฐฉํ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค. [UDP ์๋น์ค] ๋ฐ ๋ค์ '์ฐ๊ฒฐ'
๋ณด๋ด๋ ์ฌ๋. ํ์ฉ๋๋ IP ๋ฒ์ ์ 4์ด๊ฑฐ๋ pf ์ต์ ์ผ๋ก ์ง์ ๋ ๋ฒ์ ์ ๋๋ค. ์ ๋ฐ
UDP ํ๋กํ ์ฝ ์์ฑ์ผ๋ก ์ธํด ์ค์ ์ฐ๊ฒฐ์ด ์ค์ ๋์ง ์์ต๋๋ค. ๋ฐ์ดํฐ
ํผ์ด์์ ๋จผ์ ๋์ฐฉํด์ผ ํ๋ฉฐ ํ์ผ ๋ ์กฐ๊ฑด์ ์ ์ก๋ ์ ์์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ด ์ฃผ์๋ฅผ ์ด๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐ๋ ๋๊น์ง ์ฐจ๋จ๋ฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,LISTEN,CHILD,RANGE,IP4,IP6
์ ์ฉํ ์ต์ : ํฌํฌ, ๋ฐ์ธ๋, ๋ฒ์, pf
์ฐธ์กฐ: UDP, UDP4-LISTEN, UDP6-LISTEN, TCP-LISTEN
UDP4-๋ฃ๊ธฐ:
UDP-LISTEN๊ณผ ์ ์ฌํ์ง๋ง IPv4 ํ๋กํ ์ฝ๋ง ์ง์ํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,LISTEN,CHILD,RANGE,IP4
UDP6-๋ฃ๊ธฐ:
UDP-LISTEN๊ณผ ์ ์ฌํ์ง๋ง IPv6 ํ๋กํ ์ฝ๋ง ์ง์ํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,LISTEN,CHILD,RANGE,IP6
UDP-SENDTO: :
๋ค์์ ์ํด ์ ์๋ ์ง์ ๋ ํผ์ด ์์ผ๊ณผ ํต์ ํฉ๋๋ค. [UDP ์๋น์ค] ์ผ์ง
[IP ์ฃผ์], ์ฃผ์์ ๋ฐ๋ผ UDP/IP ๋ฒ์ 4 ๋๋ 6 ์ฌ์ฉ
์ฌ์, ์ด๋ฆ ํ์ธ ๋๋ ์ต์ pf. ํจํท์ ๋ณด๋ด๊ณ ๋ฐ์ต๋๋ค.
ํด๋น ํผ์ด ์์ผ์ ํจํท๋ง. ์ด ์ฃผ์๋ ๋ฐ์ดํฐ๊ทธ๋จ์ ํจ๊ณผ์ ์ผ๋ก ๊ตฌํํฉ๋๋ค.
๊ณ ๊ฐ. socat UDP-RECVFROM ๋ฐ UDP-RECV ์ฃผ์ ํผ์ด์ ์ ์๋ํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP4,IP6
์ ์ฉํ ์ต์ : ttl, tos, ๋ฐ์ธ๋ฉ, ์์คํฌํธ, pf
์ฐธ์กฐ: UDP4-SENDTO, UDP6-SENDTO, UDP-RECVFROM, UDP-RECV, UDP-CONNECT,
UDP-์์ , IP-SENDTO
UDP4-SENDTO: :
UDP-SENDTO์ ์ ์ฌํ์ง๋ง IPv4 ํ๋กํ ์ฝ๋ง ์ง์ํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP4
UDP6-SENDTO: :
UDP-SENDTO์ ์ ์ฌํ์ง๋ง IPv6 ํ๋กํ ์ฝ๋ง ์ง์ํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP6
UDP-RECVFROM:
UDP ์์ผ์ ์์ฑํฉ๋๋ค. [UDP ์๋น์ค] UDP/IP ๋ฒ์ 4 ๋๋ 6 ์ฌ์ฉ
์ต์ pf์์. ๋ถํน์ ํผ์ด๋ก๋ถํฐ ํ๋์ ํจํท์ ์์ ํ๊ณ ํ๋ ๋๋
ํด๋น ํผ์ด์ ๋ ๋ง์ ์๋ต ํจํท์ ๋ณด๋ ๋๋ค. ์ด ๋ชจ๋๋ ํนํ ํฌํฌ ์ต์ ๊ณผ ํจ๊ป ์ ์ฉํฉ๋๋ค.
์์์ ํผ์ด๋ก๋ถํฐ ๋์ฐฉํ๋ ๊ฐ ํจํท์ ์์ฒด ํ์์ ์ํด ์ฒ๋ฆฌ๋ฉ๋๋ค.
ํ๋ก์ธ์ค. ์ด๋ฅผ ํตํด ntpd ๋๋ ๊ฐ์ ์ผ๋ฐ์ ์ธ UDP ๊ธฐ๋ฐ ์๋ฒ์ ์ ์ฌํ ๋์์ด ๊ฐ๋ฅํฉ๋๋ค.
๋ช ๋ช ๋. ์ด ์ฃผ์๋ socat UDP-SENDTO ์ฃผ์ ํผ์ด์ ์ ์๋ํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP4,IP6,CHILD,RANGE
์ ์ฉํ ์ต์ : ํฌํฌ, ttl, tos, ๋ฐ์ธ๋ฉ, ์์คํฌํธ, pf
์ฐธ์กฐ: UDP4-RECVFROM, UDP6-RECVFROM, UDP-SENDTO, UDP-RECV, UDP-CONNECT,
UDP-๋ฃ๊ธฐ, IP-RECVFROM, UNIX-RECVFROM
UDP4-RECVFROM:
UDP-RECVFROM๊ณผ ์ ์ฌํ์ง๋ง IPv4 ํ๋กํ ์ฝ๋ง ์ง์ํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP4,CHILD,RANGE
UDP6-RECVFROM:
UDP-RECVFROM๊ณผ ์ ์ฌํ์ง๋ง IPv6 ํ๋กํ ์ฝ๋ง ์ง์ํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP6,CHILD,RANGE
UDP-RECV:
UDP ์์ผ์ ์์ฑํฉ๋๋ค. [UDP ์๋น์ค] UDP/IP ๋ฒ์ 4 ๋๋ 6 ์ฌ์ฉ
์ต์ pf์์. ๋ถํน์ ๋ค์์ ํผ์ด๋ก๋ถํฐ ํจํท์ ์์ ํ๊ณ ์ด๋ฅผ ๋ณํฉํฉ๋๋ค.
๋ฐ์ดํฐ. ๋ต๋ณ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค. ์๋ฅผ ๋ค์ด socat UDP-SENDTO ์ฃผ์์ ์ ์๋ํฉ๋๋ค.
๋๋ฃ; ์ด๋ syslog ์๋ฒ์ ์ ์ฌํ๊ฒ ๋์ํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP4,IP6,RANGE
์ ์ฉํ ์ต์ : ํฌํฌ, pf, ๋ฐ์ธ๋ฉ, ์์คํฌํธ, ttl, tos
์ฐธ์กฐ: UDP4-RECV, UDP6-RECV, UDP-SENDTO, UDP-RECVFROM, UDP-CONNECT, UDP-LISTEN,
IP-RECV, ์ ๋์ค-RECV
UDP4-RECV:
UDP-RECV์ ์ ์ฌํ์ง๋ง IPv4 ํ๋กํ ์ฝ๋ง ์ง์ํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP4,RANGE
UDP6-RECV:
UDP-RECV์ ์ ์ฌํ์ง๋ง IPv6 ํ๋กํ ์ฝ๋ง ์ง์ํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,IP6,RANGE
UNIX ์ฐ๊ฒฐ:
์ฐ๊ฒฐ ๋์ UNIX ๋๋ฉ์ธ ์์ผ์ด๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค. ๋ง์ฝ์ ํ์ง ์์ต๋๋ค
์กด์ฌํฉ๋๋ค. ์ด๋ ์ค๋ฅ์ ๋๋ค. ๋ง์ฝ์ UNIX ๋๋ฉ์ธ ์์ผ์ด ์๋๋๋ค.
์ค๋ฅ; ๋ง์ฝ์ UNIX ๋๋ฉ์ธ ์์ผ์ด์ง๋ง ์์ ๋๊ธฐ ์ค์ธ ํ๋ก์ธ์ค๊ฐ ์์ต๋๋ค.
์ค๋ฅ.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,NAMED,RETRY,UNIX
) ์ ์ฉํ ์ต์ : ๋ฐ์ธ๋ฉ
์ฐธ์กฐ: UNIX-LISTEN, UNIX-SENDTO, TCP
UNIX-์์ :
๋ฃ๋๋ค UNIX ๋๋ฉ์ธ ์คํธ๋ฆผ ์์ผ์ ์ฌ์ฉํ๊ณ ์ฐ๊ฒฐ์ ์๋ฝํฉ๋๋ค.
๋ง์ฝ์ ์กด์ฌํ์ง๋ง ์์ผ์ด ์๋ ๊ฒฝ์ฐ ์ค๋ฅ์ ๋๋ค. ๋ง์ฝ์ ์กด์ฌํ๋ค
UNIX ๋๋ฉ์ธ ์์ผ์ด๋ฏ๋ก ์ฃผ์ ๋ฐ์ธ๋ฉ์ด ์คํจํฉ๋๋ค(์ต์ ์ฌ์ฉ).
์ฐ๊ฒฐ์ ์ผ์ฐ ํด์ ํ์ธ์!). ์ด ์ฃผ์๋ฅผ ์ด๋ฉด ์ผ๋ฐ์ ์ผ๋ก ํด๋ผ์ด์ธํธ๊ฐ ์ฐจ๋จ๋ ๋๊น์ง ์ฐจ๋จ๋ฉ๋๋ค.
์ฐ๊ฒฐํฉ๋๋ค. socat ๋ฒ์ 1.4.3๋ถํฐ ํ์ผ ์์คํ ํญ๋ชฉ์ด ์ ๊ฑฐ๋ฉ๋๋ค.
์ด ์ฃผ์๊ฐ ํ์๋ ๊ฒฝ์ฐ(๋จ, ๋งํฌ ํด์ -๋ซ๊ธฐ ์ต์ ์ฐธ์กฐ)(์)
์ต์ ๊ทธ๋ฃน: FD,SOCKET,NAMED,LISTEN,CHILD,RETRY,UNIX
์ ์ฉํ ์ต์ : ํฌํฌ, umask, ๋ชจ๋, ์ฌ์ฉ์, ๊ทธ๋ฃน, ์ฐ๊ฒฐ ํด์ -์ด๊ธฐ
์ฐธ์กฐ: UNIX-CONNECT, UNIX-RECVFROM, UNIX-RECV, TCP-LISTEN
UNIX-SENDTO:
[๋ก ์ ์๋ ์ง์ ๋ ํผ์ด ์์ผ๊ณผ ํต์ ํฉ๋๋ค. ] ๊ฐ์ ํ๋ฉด
UNIX ๋๋ฉ์ธ ๋ฐ์ดํฐ๊ทธ๋จ ์์ผ. ๊ทธ ๊ณณ์ผ๋ก ํจํท์ ๋ณด๋ด๊ณ , ๊ทธ ๊ณณ์ผ๋ก๋ถํฐ ํจํท์ ๋ฐ์ต๋๋ค.
ํผ์ด ์์ผ๋ง ํด๋น. ๋ก์ปฌ ์์ผ์ ๋ฐ์ธ๋ฉํด์ผ ํ ์๋ ์์ต๋๋ค.
์ฃผ์๋ก(์: ์ด์ ์ ์กด์ฌํ์ง ์์์ผ ํ๋ /tmp/sock1) ์ด ์ฃผ์ ์ ํ
socat UNIX-RECVFROM ๋ฐ UNIX-RECV ์ฃผ์ ํผ์ด์ ์ ์๋ํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,NAMED,UNIX
์ ์ฉํ ์ต์ : ๋ฐ์ธ๋ฉ
์ฐธ์กฐ: UNIX-RECVFROM, UNIX-RECV, UNIX-CONNECT, UDP-SENDTO, IP-SENDTO
UNIX-RECVFROM:
UNIX ๋๋ฉ์ธ ๋ฐ์ดํฐ๊ทธ๋จ ์์ผ์ ์์ฑํฉ๋๋ค. ]. ํ๋์ ํจํท์ ์์ ํ๊ณ
ํด๋น ํผ์ด์ ํ๋ ์ด์์ ์๋ต ํจํท์ ๋ณด๋ ๋๋ค. ์ด ๋ชจ๋๋ ํนํ ์ ์ฉํฉ๋๋ค
์์์ ํผ์ด๋ก๋ถํฐ ๋์ฐฉํ๋ ๊ฐ ํจํท์ด ๋ค์์์ ์ฒ๋ฆฌ๋๋ ํฌํฌ ์ต์ ์ด ์์ต๋๋ค.
์์ฒด ํ์ ํ๋ก์ธ์ค. ์ด ์ฃผ์๋ socat UNIX-SENDTO ์ฃผ์ ํผ์ด์ ์ ์๋ํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,NAMED,CHILD,UNIX
์ ์ฉํ ์ต์ : ํฌํฌ
์ฐธ์กฐ: UNIX-SENDTO, UNIX-RECV, UNIX-LISTEN, UDP-RECVFROM, IP-RECVFROM
UNIX-RECV:
UNIX ๋๋ฉ์ธ ๋ฐ์ดํฐ๊ทธ๋จ ์์ผ์ ์์ฑํฉ๋๋ค. ]. ์ฌ๋ฌ ๊ณณ์์ ํจํท์ ์์ ํฉ๋๋ค.
์ง์ ๋์ง ์์ ํผ์ด๋ฅผ ์ ํํ๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ณํฉํฉ๋๋ค. ๋ต๋ณ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค. ์๋ฅผ ๋ค์ด,
socat UNIX-SENDTO ์ฃผ์ ํผ์ด์ ์ํด ์ฃผ์๊ฐ ์ง์ ๋ฉ๋๋ค. syslog์ ์ ์ฌํ๊ฒ ๋์ํฉ๋๋ค.
์ฌ๊ธฐ๋ ์ฌ๋. ์ต์ ๊ทธ๋ฃน: FD,SOCKET,NAMED,UNIX
์ฐธ์กฐ: UNIX-SENDTO, UNIX-RECVFROM, UNIX-LISTEN, UDP-RECV, IP-RECV
UNIX-ํด๋ผ์ด์ธํธ:
[๋ก ์ ์๋ ์ง์ ๋ ํผ์ด ์์ผ๊ณผ ํต์ ํฉ๋๋ค. ] ๊ฐ์ ํ๋ฉด
UNIX ๋๋ฉ์ธ ์์ผ. ๋จผ์ ์ฐ๊ฒฐ์ ์๋ํ๊ณ ์คํจํ๋ฉด ์ฐ๊ฒฐ๋์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
๋ฐ์ดํฐ๊ทธ๋จ ์์ผ์ด๋ฏ๋ก ๋ ๊ฐ์ง ์ ํ์ ๋ชจ๋ ์ง์ํฉ๋๋ค.
์ต์ ๊ทธ๋ฃน: FD,SOCKET,NAMED,UNIX
์ ์ฉํ ์ต์ : ๋ฐ์ธ๋ฉ
์ฐธ์กฐ: UNIX-CONNECT, UNIX-SENDTO, GOPEN
์ถ์-์ฐ๊ฒฐ:
์์ฝ ๋ฃ๊ธฐ:
์์ฝ-๋ณด๋ด๊ธฐ:
์ถ์-RECVFROM:
์ถ์-RECV:
์ถ์ ํด๋ผ์ด์ธํธ:
ABSTRACT ์ฃผ์๋ ๊ด๋ จ UNIX ์ฃผ์์ ๊ฑฐ์ ๋์ผํฉ๋๋ค.
ํ์ผ ์์คํ ๊ธฐ๋ฐ ์์ผ์ด ์๋๋ผ ๋์ฒด UNIX ๋๋ฉ์ธ์ ์ฃผ์ ์ง์ ํฉ๋๋ค.
์ฃผ์ ๊ณต๊ฐ. ์ด๋ฅผ ๋ณด๊ดํ๊ธฐ ์ํด ์์ผ ์ฃผ์ ๋ฌธ์์ด ์์ "\0"์ด ๋ถ์ต๋๋ค.
๋ด๋ถ์ ์ผ๋ก. ์ด ๊ธฐ๋ฅ์ Linux์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ต์ ๊ทธ๋ฃน์ ๋์ผํฉ๋๋ค.
ABSTRACT ์ฃผ์๊ฐ ์๋ ์ ์ ์ ์ธํ๊ณ ๊ด๋ จ UNIX ์ฃผ์์ ๊ฐ์ต๋๋ค.
NAMED ๊ทธ๋ฃน์ ๋ฉค๋ฒ์ ๋๋ค.
์ฃผ์ ์ต์
์ฃผ์ ์ต์ ์ ์ฃผ์ ์ฌ์์ ์ ์ฉ๋์ด ํ๋ก์ธ์ค์ ์ํฅ์ ์ค ์ ์์ต๋๋ค.
๊ฒฐ๊ณผ ๋ฐ์ดํฐ ์ฑ๋์ ์ฃผ์์ ์์ฑ์ ์ฝ๋๋ค.
๊ธฐ์ ์ ์ธ ์ด์ ๋ก ๋ชจ๋ ์ต์ ์ ๋ชจ๋ ์ฃผ์ ์ ํ์ ์ ์ฉํ ์๋ ์์ต๋๋ค. ์:
์ผ๋ฐ ํ์ผ์ ์์ผ ์ต์ ์ ์ ์ฉํ๋ฉด ์คํจํฉ๋๋ค. ๊ฐ์ฅ ์ธ๋ชจ์๋ ์กฐํฉ์ ์ก์ผ๋ ค๋ฉด
์คํ ๋จ๊ณ ์ด๊ธฐ๋ถํฐ ์ ํ๊ถ ๊ทธ๋ฃน ์๊ฐ๋์์ต๋๋ค. ๊ฐ ์ต์
ํ๋ ์ด์์ ์ต์ ๊ทธ๋ฃน์ ์ํฉ๋๋ค. ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ ์ฃผ์ ์ ํ์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ต์ ๊ทธ๋ฃน ์ค ์ ์ด๋ ํ๋๋ฅผ ์ง์ํฉ๋๋ค(๋จ, -g ์ต์ ์ฐธ์กฐ).
์ฃผ์ ์ต์ ์๋ ํด๋น ๊ฐ์ด ์ค์ํด์ผ ํ๋ ๋ฐ์ดํฐ ์ ํ์ด ์์ต๋๋ค. ๋ชจ๋ ์ฃผ์ ์ต์
ํค์๋๋ง์ผ๋ก ๊ตฌ์ฑ๋๊ฑฐ๋ ํค์๋ ๋ค์ "=value"๊ฐ ์ต๋๋ค. ์ฌ๊ธฐ์ value๋ ๋ค์์ ์ค์ํด์ผ ํฉ๋๋ค.
์ต์ ์ ํ. ์ผ๋ถ ์ฃผ์ ์ต์ ์ ์์คํ ํธ์ถ์ ๋งค๊ฐ๋ณ์๋ฅผ ์กฐ์ํฉ๋๋ค. ์:
sync ์ต์ ์ open() ํธ์ถ๋ก O_SYNC ํ๋๊ทธ๋ฅผ ์ค์ ํฉ๋๋ค. ๋ค๋ฅธ ์ต์ ์ผ๋ก ์ธํด ์์คํ ๋๋
๋์๊ด ์ ํ; ์๋ฅผ ๋ค์ด `ttl=value' ์ต์ ์ ์ฌ์ฉํ๋ฉด setockopt(fd, SOL_IP, IP_TTL, value,
sizeof(int)) ํธ์ถ์ด ์ ์ฉ๋ฉ๋๋ค. ๊ธฐํ ์ต์ ์ ๋ด๋ถ๋ก ์ค์ ๋จ ์์บฃ ์ฌ์ฉ๋๋ ๋ณ์
๋ฐ์ดํฐ ์ ์ก ์ค; ์๋ฅผ ๋ค์ด `crnl'์ ๋ช ์์ ์ธ ๋ฌธ์ ๋ณํ์ ๋ฐ์์ํต๋๋ค. ๋ช ๊ฐ์ง ์ต์
๋ ๋ณต์กํ ๊ตฌํ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด su-d(substuser-delayed)๋ ์ผ๋ถ ์ฌ์ฉ์์๊ฒ ๋ฌธ์ํ๊ณ
์ ๋ณด๋ฅผ ๊ทธ๋ฃนํํ์ฌ ์ ์ฅํ๊ณ ๋์ค์ ๊ฐ๋ฅํ chroot() ํธ์ถ ํ์ ์ ์ฉํฉ๋๋ค.
์ฃผ์์ ์ฌ๋ฌ ์ต์ ์ด ์ ๊ณต๋๋ ๊ฒฝ์ฐ ์ฃผ์ ์ฌ์์ ์์
์คํ/์ ์ฉ ์์์ (๊ฑฐ์) ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค. ๋์ ์, ์์บฃ ์ด
์ ๋ด์ฅ ์ ํ๊ถ ์ ์ต์ ์ ์ ์ฉํ ์์๋ก ๊ฐ์ ธ์ค๋ ค๋ ๋ชจ๋ธ์ ๋๋ค. ์ผ๋ถ
์ต์ ์ ๋ค์ํ ํํ(์: ์ฐ๊ฒฐ ํด์ , ์ด๊ธฐ ์ฐ๊ฒฐ ํด์ , ๋ฆ๊ฒ ์ฐ๊ฒฐ ํด์ )๋ก ์กด์ฌํฉ๋๋ค.
์ฒํ ์๊ฐ.
ํ๋์ ์ฃผ์ ์ง์ ๋ด์์ ๋์ผํ ์ต์ ์ด ๋ ๋ฒ ์ด์ ์ง์ ๋ ๊ฒฝ์ฐ
๊ฐ์ด ๊ฐ๊ฑฐ๋ ๋ค๋ฅด๋ฉด ์ต์ ์ ์ข ๋ฅ์ ๋ฐ๋ผ ํจ๊ณผ๊ฐ ๋ฌ๋ผ์ง๋๋ค. ๋ค์๊ณผ ๊ฐ์ ์ต์ ์ด ๋ฐ์ํฉ๋๋ค.
setockopt()์ ๊ฐ์ ํจ์ ํธ์ถ์ ๋ค์ค ํธ์ถ์ ์ ๋ฐํฉ๋๋ค. ์ค์ ํ ์ต์ ์ผ๋ก
open()๊ณผ ๊ฐ์ ํ์ ํธ์ถ์ ๋ํ ๋งค๊ฐ๋ณ์ ๋๋ ๋ด๋ถ ํ๋๊ทธ ์ค์ , ๋ง์ง๋ง ๊ฐ
์ต์ ๋ฐ์์ด ํจ๊ณผ์ ์ ๋๋ค.
๋ง์ ์ต์ ์ ์กด์ฌ ๋๋ ์๋ฏธ๋ ์์คํ ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ์์บฃ ์ผ๋ฐ์ ์ผ๋ก ๊ทธ๋ ์ง ์์ต๋๋ค
๋๋ฝ๋ libc ๋๋ ์ปค๋ ๊ธฐ๋ฅ์ ์๋ฎฌ๋ ์ดํธํ๋ ค๊ณ ํ๋ฉด ๋จ์ง
๊ธฐ๋ณธ ์์คํ . ๋ฐ๋ผ์ ์ด์ ์ฒด์ ์ ๊ธฐ๋ฅ์ด ๋ถ์กฑํ ๊ฒฝ์ฐ ๊ด๋ จ ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด ํ๋ซํผ์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ค์ ๋จ๋ฝ์์๋ ๋ณด๋ค ์ผ๋ฐ์ ์ธ ์ฃผ์ ์ต์ ์ ์๊ฐํฉ๋๋ค. ๋ ๋ง์ ๊ฒ์ ์ํด
ํฌ๊ด์ ์ธ ์ฐธ์กฐ ๋ฐ ํ์ค ์ต์ ์ด๋ฆ, ๋ณ์นญ ์ด๋ฆ,
์ต์ ๋จ๊ณ ๋ฐ ํ๋ซํผ์ ํ์ผ์ ์ฐธ์กฐํ์ธ์. xio.help.
FD ์ ํ๊ถ ๊ทธ๋ฃน
์ด ์ต์ ๊ทธ๋ฃน์๋ UN*X ์คํ์ผ ํ์ผ ์ค๋ช ์์ ์ ์ฉ๋๋ ์ต์ ์ด ํฌํจ๋์ด ์์ต๋๋ค.
๊ทธ๊ฒ์ด ์ด๋ป๊ฒ ์์ฑ๋์๋์ง๋ ์ค์ํ์ง ์์ต๋๋ค. ์๋ํ๋ฉด ๋ชจ๋ ํ์ฌ ์์บฃ ์ฃผ์ ์ ํ์ ํ์ผ ์ค๋ช ์์ ๋๋ค.
๊ธฐ๋ฐ์ผ๋ก ์ด๋ฌํ ์ต์ ์ ๋ชจ๋ ์ฃผ์์ ์ ์ฉ๋ ์ ์์ต๋๋ค.
์ฐธ๊ณ : ์ด๋ฌํ ์ต์ ์ค ์ผ๋ถ๋ ๋ค์์ ์ ๊ณตํ๋ ๋ค๋ฅธ ์ต์ ๊ทธ๋ฃน์ ๊ตฌ์ฑ์์ด๊ธฐ๋ โโํฉ๋๋ค.
fd ๊ธฐ๋ฐ์ด ์๋ ๋ ๋ค๋ฅธ ๋ฉ์ปค๋์ฆ์ ๋๋ค. ์ด๋ฌํ ์ต์ ์ ๊ฒฝ์ฐ ์ค์ ์ฃผ์ ์ ํ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฉ์ปค๋์ฆ์ด ์ฌ์ฉ๋๋ ์ต์ ๊ทธ๋ฃน์ ๋๋ค. ๋ ๋ฒ์งธ ๋นfd ๊ธฐ๋ฐ ๋ฉ์ปค๋์ฆ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ฐ์ ์์.
ํด๋ก์ =
fcntl() ์์คํ ํธ์ถ์ ์ฌ์ฉํ์ฌ FD_CLOEXEC ํ๋๊ทธ๋ฅผ ๊ฐ์ผ๋ก ์ค์ ํฉ๋๋ค. . ์ค์ ๋ ๊ฒฝ์ฐ,
exec() ๊ณ์ด ํจ์ ํธ์ถ ์ ํ์ผ ์ค๋ช ์๊ฐ ๋ซํ๋๋ค. ์์บฃ ๋ด๋ถ์ ์ผ๋ก ์ฒ๋ฆฌ
์ด ํ๋๊ทธ๋ ์์ ์ด ์ ์ดํ๋ โโfds์ ๋ํ ๊ฒ์ด๋ฏ๋ก ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์ ์ฉํ ํ์๊ฐ ์์ต๋๋ค.
์ด ์ต์ .
์ค์ ํ๋ค fcntl(fd,
F_SETLK, ...) ์์คํ ํธ์ถ. ํ์ผ์ด ์ด๋ฏธ ์ ๊ฒจ ์๋ ๊ฒฝ์ฐ ์ด ํธ์ถ๋ก ์ธํด
์ค๋ฅ. Linux์์ ๊ทธ๋ฃน์ ํ์ผ ๊ถํ์ด "S"(gx,g+s)์ด๊ณ
ํ์ผ ์์คํ ์ด "mand" ์ต์ ์ ์ฌ์ฉํ์ฌ ๋ก์ปฌ๋ก ๋ง์ดํธ๋๋ฉด ์ ๊ธ์ด ํ์์ ๋๋ค. ์ฆ,
๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ํ์ผ์ ์ด์ง ๋ชปํ๊ฒ ํฉ๋๋ค.
์ค์ ๋ค์์ ์ฌ์ฉํ์ฌ ์ ์ฒด ํ์ผ์ ์์ ๋๊ธฐ ์ฐ๊ธฐ ์ ๊ธ์ ์ค์ ํ๋ ค๊ณ ์๋ํฉ๋๋ค.
fcntl(fd, F_SETLKW, ...) ์์คํ ํธ์ถ. ํ์ผ์ด ์ด๋ฏธ ์ ๊ฒจ ์๋ ๊ฒฝ์ฐ ์ด ํธ์ถ์
๋ธ๋ก. ์ด ์ ๊ธ์ ํ์๋ก ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ setlk ์ต์ ์ ์ฐธ์กฐํ์ธ์.
setlk-rd
fcntl(fd,
F_SETLK, ...) ์์คํ ํธ์ถ. ํ์ผ์ด ์ด๋ฏธ ์ฐ๊ธฐ ์ ๊ฒจ ์์ผ๋ฉด ์ด ํธ์ถ์ด ๋ฐ์ํฉ๋๋ค.
์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์ด ์ ๊ธ์ ํ์๋ก ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ setlk ์ต์ ์ ์ฐธ์กฐํ์ธ์.
setlkw-rd
๋ค์์ ์ฌ์ฉํ์ฌ ์ ์ฒด ํ์ผ์ ๋ํด ์์ ๋๊ธฐ ์ฝ๊ธฐ ์ ๊ธ์ ์ค์ ํ๋ ค๊ณ ์๋ํฉ๋๋ค.
fcntl(fd, F_SETLKW, ...) ์์คํ ํธ์ถ. ํ์ผ์ด ์ด๋ฏธ ์ฐ๊ธฐ ์ ๊ฒจ ์๋ ๊ฒฝ์ฐ
ํธ์ถ ๋ธ๋ก. ์ด ์ ๊ธ์ ํ์๋ก ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ setlk ์ต์ ์ ์ฐธ์กฐํ์ธ์.
๋ฌด๋ฆฌ ์
Flock(fd,
LOCK_EX) ์์คํ ํธ์ถ. ์์บฃ ํ์ผ์ด ๋ค๋ฅธ ์ฌ๋์ ์ํด ์ ๊ธด ๊ฒฝ์ฐ ์ด ํธ์ถ์ด ์ค๋จ๋ฉ๋๋ค.
ํ๋ก์ธ์ค.
๋ฌด๋ฆฌ-์ -nb
Flock(fd,
LOCK_EX|LOCK_NB) ์์คํ ํธ์ถ. ํ์ผ์ด ์ด๋ฏธ ์ ๊ฒจ ์๋ ๊ฒฝ์ฐ ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ค๋ฅ.
๋ฌด๋ฆฌ-sh
Flock(fd,
LOCK_SH) ์์คํ ํธ์ถ. ์์บฃ ํ์ผ์ด ๋ค๋ฅธ ์ฌ๋์ ์ํด ์ ๊ธด ๊ฒฝ์ฐ ์ด ํธ์ถ์ด ์ค๋จ๋ฉ๋๋ค.
ํ๋ก์ธ์ค.
๋ฌด๋ฆฌ-sh-nb
Flock(fd,
LOCK_SH|LOCK_NB) ์์คํ ํธ์ถ. ํ์ผ์ด ์ด๋ฏธ ์ ๊ฒจ ์๋ ๊ฒฝ์ฐ ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ค๋ฅ.
์๋ฌผ์ ํ์ผ์ ์ฐจ๋จ ์ ๊ธ์ ์ค์ ํฉ๋๋ค. ๋ค์์ ๋ฐ๋ผ setlk ๋๋ ๋ฌด๋ฆฌ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํฉ๋๋ค.
ํน์ ํ๋ซํผ์์์ ๊ฐ์ฉ์ฑ. ๋ ๋ค ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒฝ์ฐ POSIX ๋ณํ
(setlkw)๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์ฌ์ฉ์=
์ค์ (์์ ์) ์คํธ๋ฆผ์. ์ฃผ์๊ฐ NAMED์ ๊ตฌ์ฑ์์ธ ๊ฒฝ์ฐ
์ต์ ๊ทธ๋ฃน, ์์บฃ ํ์ผ์ ์ด๊ฑฐ๋ ๋ฐ์ธ๋ฉํ ํ chown() ์์คํ ํธ์ถ์ ์ฌ์ฉํฉ๋๋ค.
UNIX ๋๋ฉ์ธ ์์ผ์ ์ฐ๊ฒฐํฉ๋๋ค(๊ฒฝ์ ์กฐ๊ฑด!). ํ์ผ ์์คํ ํญ๋ชฉ์ด ์์ผ๋ฉด ์์บฃ ์ธํธ
fchown() ์์คํ ํธ์ถ์ ์ฌ์ฉํ๋ ์คํธ๋ฆผ ์ฌ์ฉ์. ์ด๋ฌํ ํธ์ถ์๋ ๋ค์์ด ํ์ํ ์ ์์ต๋๋ค.
๋ฃจํธ ๊ถํ.
์ฌ์ฉ์ ์ง์ฐ=
fd์ ์์ ์๋ฅผ ๋ค์์ผ๋ก ์ค์ ํฉ๋๋ค. ํ์ผ์ ์ฐ ํ fchown() ์์คํ ํธ์ถ์ ์ฌ์ฉํ๊ฑฐ๋
์ฑ๋์ ์ฐ๊ฒฐํฉ๋๋ค. ์ด๋ ํ์ผ ์์คํ ํญ๋ชฉ์๋ง ์ ์ฉํฉ๋๋ค.
๊ทธ๋ฃน=
์ค์ ์คํธ๋ฆผ์. ์ฃผ์๊ฐ NAMED ์ต์ ์ ๊ตฌ์ฑ์์ธ ๊ฒฝ์ฐ
๊ทธ๋ฃน, ์์บฃ ํ์ผ์ ์ด๊ฑฐ๋ ๋ฐ์ธ๋ฉํ ํ chown() ์์คํ ํธ์ถ์ ์ฌ์ฉํฉ๋๋ค.
UNIX ๋๋ฉ์ธ ์์ผ(๊ฒฝ์ ์กฐ๊ฑด!). ํ์ผ ์์คํ ํญ๋ชฉ์ด ์์ผ๋ฉด ์์บฃ ์ค์
fchown() ์์คํ ํธ์ถ์ ์ฌ์ฉํ์ฌ ์คํธ๋ฆผ ๊ทธ๋ฃน. ์ด๋ฌํ ํตํ์๋ ๊ทธ๋ฃน์ด ํ์ํ ์ ์์ต๋๋ค.
๋ฉค๋ฒ์ญ ๋๋ ๋ฃจํธ ๊ถํ.
๋จ์ฒด ์ง๊ฐ=
fd์ ๊ทธ๋ฃน์ ๋ค์์ผ๋ก ์ค์ ํฉ๋๋ค. ํ์ผ์ ์ฐ ํ fchown() ์์คํ ํธ์ถ์ ์ฌ์ฉํ๊ฑฐ๋
์ฑ๋์ ์ฐ๊ฒฐํฉ๋๋ค. ์ด๋ ํ์ผ ์์คํ ํญ๋ชฉ์๋ง ์ ์ฉํฉ๋๋ค.
๋ชจ๋=
์ค์ ์คํธ๋ฆผ์ [mode_t] (๊ถํ). ์ฃผ์๊ฐ ํ์์ธ ๊ฒฝ์ฐ
NAMED ์ต์ ๊ทธ๋ฃน์ ์ฌ์ฉํ๊ณ open() ๋๋ creat() ํธ์ถ์ ์ฌ์ฉํ๋ฉด ๋ชจ๋๊ฐ ์ ์ฉ๋ฉ๋๋ค.
์ด๊ฒ์ผ๋ก. ์ฃผ์๊ฐ ์ด๋ฅผ ์ฌ์ฉํ์ง ์๊ณ NAMED ์ต์ ๊ทธ๋ฃน์ ๊ตฌ์ฑ์์ธ ๊ฒฝ์ฐ
์์คํ ํธ์ถ, ์์บฃ ํ์ผ ์์คํ ํญ๋ชฉ์ ์ฐ ํ chmod() ์์คํ ํธ์ถ์ ์ฌ์ฉํฉ๋๋ค.
๋๋ UNIX ๋๋ฉ์ธ ์์ผ์ ๋ฐ์ธ๋ฉ(๊ฒฝ์ ์กฐ๊ฑด!). ๊ทธ๋ ์ง ์์ผ๋ฉด, ์์บฃ ์ค์
fchmod() ๋ฅผ ์ฌ์ฉํ์ฌ ์คํธ๋ฆผ ๋ชจ๋. ์ด๋ฌํ ํธ์ถ์๋ ์์ ๊ถ์ด๋ ๋ฃจํธ๊ฐ ํ์ํ ์ ์์ต๋๋ค.
ํน๊ถ.
ํ๋ง-๋ฆ์=
fd์ ๊ถํ์ value๋ก ์ค์ ํฉ๋๋ค. [mode_t] fchmod() ์์คํ ์ฌ์ฉ
์ฑ๋์ ๊ฐ์คํ๊ฑฐ๋ ์ฐ๊ฒฐํ ํ ํตํํ์ธ์. ์ด๋ ํ์ผ ์์คํ ์์๋ง ์ ์ฉํฉ๋๋ค.
ํญ๋ชฉ.
์ถ๊ฐ=
ํญ์ ํ์ผ์ ์ค์ ๋์ ๋ฐ์ดํฐ๋ฅผ ์๋๋ค. ์ฃผ์๊ฐ OPEN ํ์์ธ ๊ฒฝ์ฐ
์ต์ ๊ทธ๋ฃน, ์์บฃ open() ์์คํ ํธ์ถ๊ณผ ํจ๊ป O_APPEND ํ๋๊ทธ๋ฅผ ์ฌ์ฉํฉ๋๋ค(์).
๊ทธ๋ ์ง ์์ผ๋ฉด, ์์บฃ fcntl(fd, F_SETFL, O_APPEND) ํธ์ถ์ ์ ์ฉํฉ๋๋ค.
๋น์ฐจ๋จ=
๋น์ฐจ๋จ ๋ชจ๋์์ ํ์ผ์ ์ด๊ฑฐ๋ ์ฌ์ฉํ๋ ค๊ณ ํฉ๋๋ค. ์ ์ผํ ํจ๊ณผ๋
TCP ์ฃผ์์ connect() ํธ์ถ์ ์ฐจ๋จ๋์ง ์์ผ๋ฉฐ ๋ช ๋ช ๋ ํ์ดํ๋ฅผ ์ฌ๋ ๊ฒ์
๋ ์๊ฐ ์ฐจ๋จ๋์ง ์์ต๋๋ค. ์ฃผ์๊ฐ OPEN ์ต์ ๊ทธ๋ฃน์ ๊ตฌ์ฑ์์ธ ๊ฒฝ์ฐ, ์์บฃ
open() ์์คํ ํธ์ถ๊ณผ ํจ๊ป O_NONBLOCK ํ๋๊ทธ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด, ์์บฃ ์ ์ฉ
fcntl(fd, F_SETFL, O_NONBLOCK) ํธ์ถ.
์ง ์์์ ์ค ์ข ๊ฒฐ์ ๋ณํ์ ํผํ๊ธฐ ์ํด ๋ฐ์ด๋๋ฆฌ ๋ชจ๋์์ ํ์ผ์ ์ฝ๋๋ค.
(์๊ทธ์).
๋ณธ๋ฌธ ์์์ ์ค ์ข ๊ฒฐ์ ๋ณํ์ ๊ฐ์ ํ๊ธฐ ์ํด ํ ์คํธ ๋ชจ๋์์ ํ์ผ์ ์ฝ๋๋ค(Cygwin).
์์๋ฐ์ง ์๋๋ค
์์ฑ๋ ํ๋ก์ธ์ค(Cygwin)์์ ์ด ํ์ผ์ ์ด์ด๋์ง ์์ต๋๋ค.
๋ฉ์ง ์ฐ๊ธฐ
EPIPE ๋๋ ECONNRESET์ ์ฌ์ฉํ์ฌ ์ฐ๊ธฐ๊ฐ ์คํจํ ๊ฒฝ์ฐ ์ฝ๊ฒ ์ฒ๋ฆฌํ๊ณ ๋ค์์ ์ฌ์ฉํ์ฌ ๋ฉ์์ง๋ฅผ ๊ธฐ๋กํฉ๋๋ค.
์ฃผ์ ๋์ ์์ค ์ค๋ฅ. ์ด๋ ๊ฒ ํ๋ฉด ๋ก๊ทธ ํ์ผ์ด ์ฑ์์ง๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
socat๊ฐ ๋์ฉ๋ ์๋ฒ ๋๋ ํ๋ก์๋ก ์ฌ์ฉ๋ ๋ ์ธ๋ชจ์๋ ์ค๋ฅ ๋ฉ์์ง
ํด๋ผ์ด์ธํธ๋ ์ข ์ข ์ฐ๊ฒฐ์ ์ค๋จํฉ๋๋ค.
์ด ์ต์ ์ ์คํ์ ์ ๋๋ค.
๋-๋ซ๊ธฐ
์ฐ๊ฒฐ์ ์ข ๋ฃํ๋ (์ฃผ์์ ๋ฐ๋ฅธ) ๋ฐฉ๋ฒ์ ๋ณ๊ฒฝํ์ฌ ์ฐ๊ฒฐ์ ๋ซ์ต๋๋ค.
ํ์ผ ์ค๋ช ์. ์ด๋ ์ฐ๊ฒฐ์ ์ฌ์ฌ์ฉํ๊ฑฐ๋ ๊ณต์ ํ ๋ ์ ์ฉํฉ๋๋ค.
๋ค๋ฅธ ํ๋ก์ธ์ค์ ํจ๊ป(์)
์ผ๋ฐ์ ์ผ๋ก ์์ผ ์ฐ๊ฒฐ์ ๋ค์๊ณผ ๊ฐ์ด ์ข ๋ฃ๋ฉ๋๋ค. ์ข ๋ฃ(2) ์ข ๋ฃ
์ฌ๋ฌ ํ๋ก์ธ์ค์์ ๊ณต์ ํ๋๋ผ๋ ์์ผ์ ๋๋ค. ๊ฐ๊น์ด(2) ์์ผ์ "์ฐ๊ฒฐ ํด์ "ํฉ๋๋ค.
ํ์ง๋ง ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๋งํฌ๊ฐ ๋จ์ ์๋ ํ ํ์ฑ ์ํ๋ฅผ ์ ์งํฉ๋๋ค.
ํ๋ก์ธ์ค.
๋ง์ฐฌ๊ฐ์ง๋ก EXEC ๋๋ SYSTEM ์ ํ์ ์ฃผ์๊ฐ ์ข ๋ฃ๋๋ฉด socat๋ ์ผ๋ฐ์ ์ผ๋ก
ํ์ ํ๋ก์ธ์ค๋ฅผ ๋ช ์์ ์ผ๋ก ์ข ๋ฃํฉ๋๋ค. ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ํ์ผ์ด ๋ซํ๋๋ค.
์ค๋ช ์.
ํ์ ์์
์ฐ๊ธฐ ๋ถ๋ถ์ ์ข ๋ฃํ๋ (์ฃผ์์ ๋ฐ๋ฅธ) ๋ฐฉ๋ฒ์ ๋ณ๊ฒฝํฉ๋๋ค.
์๋ฌด ๊ฒ๋ ํ์ง ์๋ ์ฐ๊ฒฐ์ ๋๋ค.
์ ง๋ค์ด
์ฐ๊ธฐ ๋ถ๋ถ์ ์ข ๋ฃํ๋ (์ฃผ์์ ๋ฐ๋ฅธ) ๋ฐฉ๋ฒ์ ๋ณ๊ฒฝํฉ๋๋ค.
shutdown\(fd, SHUT_WR)์ ์ฐ๊ฒฐํฉ๋๋ค. ์์ผ์์๋ง ์ ์ฉํฉ๋๋ค.
๋ซํ๋ค
์ฐ๊ธฐ ๋ถ๋ถ์ ์ข ๋ฃํ๋ (์ฃผ์์ ๋ฐ๋ฅธ) ๋ฐฉ๋ฒ์ ๋ณ๊ฒฝํฉ๋๋ค.
๋ซ๊ธฐ\(fd)์ ๋ํ ์ฐ๊ฒฐ์ ๋๋ค.
์ข ๋ฃ-null
ํ๋์ ์ฃผ์๊ฐ EOF๋ฅผ ๋ํ๋ผ ๋, ์์บฃ ์ฐ๊ธฐ ์์ ์ ํฌ๊ธฐ๊ฐ XNUMX์ธ ํจํท์ ๋ณด๋ ๋๋ค.
EOF ์กฐ๊ฑด์ ์ ์กํ๊ธฐ ์ํด ๋ค๋ฅธ ์ฃผ์์ ์ฑ๋์ ์ฌ์ฉํฉ๋๋ค. ์ด๋ UDP์ ์ ์ฉํฉ๋๋ค.
๋ฐ ๊ธฐํ ๋ฐ์ดํฐ๊ทธ๋จ ํ๋กํ ์ฝ. ์ต์ ์ ์ฌ์ฉํ์ฌ netcat ๋ฐ socat์ ๋ํด ํ ์คํธ๋์์ต๋๋ค.
null-eof.
null-eof
์ผ๋ฐ์ ์ผ๋ก ์์บฃ ๋ฐ์ดํฐ๊ทธ๋จ์ ๋์ฐฉํ๋ ๋น(XNUMX ํฌ๊ธฐ ํ์ด๋ก๋) ํจํท์ ๋ฌด์ํฉ๋๋ค.
์์ผ์ด๋ฏ๋ก ํฌํธ ์ค์บ ํ์๋ ์ ์ง๋ฉ๋๋ค. ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ์์บฃ ๋น์ด ์๋ค๊ณ ํด์ํ๋ค
EOF ํ์๊ธฐ๋ก์์ ๋ฐ์ดํฐ๊ทธ๋จ ํจํท(shut-null ์ฐธ์กฐ)
ioctl-void=
์์ฒญ ๊ฐ์ ๋ ๋ฒ์งธ ์ธ์๋ก, NULL์ ์ธ ๋ฒ์งธ ์ธ์๋ก ์ฌ์ฉํ์ฌ ioctl()์ ํธ์ถํฉ๋๋ค.
์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด socat์์ ๋ช ์์ ์ผ๋ก ๊ตฌํ๋์ง ์์ ioctl์ ํ์ฉํ ์ ์์ต๋๋ค.
ioctl-int= :
์์ฒญ ๊ฐ์ ๋ ๋ฒ์งธ ์ธ์๋ก, ์ ์ ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ์ฌ ioctl()์ ํธ์ถํฉ๋๋ค.
์ธ ๋ฒ์งธ ์ฃผ์ฅ.
ioctl-intp= :
๋ ๋ฒ์งธ ์ธ์๋ก ์์ฒญ ๊ฐ๊ณผ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ์ฌ ioctl()์ ํธ์ถํฉ๋๋ค.
์ธ ๋ฒ์งธ ์ธ์๋ก ์ ์ ๊ฐ์ ์ฌ์ฉํฉ๋๋ค.
ioctl-bin= :
์์ฒญ ๊ฐ์ ๋ ๋ฒ์งธ ์ธ์๋ก ์ฌ์ฉํ๊ณ ์ฃผ์ด์ง ๊ฐ์ ๋ํ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ์ฌ ioctl()์ ํธ์ถํฉ๋๋ค.
๋ฐ์ดํฐ ๊ฐ์ ์ธ ๋ฒ์งธ ์ธ์๋ก ์ฌ์ฉํฉ๋๋ค. ์ด ๋ฐ์ดํฐ๋ ๋ค์์ ์ง์ ๋์ด์ผ ํฉ๋๋ค. ํํ.
ioctl-๋ฌธ์์ด= :
์์ฒญ ๊ฐ์ ๋ ๋ฒ์งธ ์ธ์๋ก ์ฌ์ฉํ๊ณ ์ฃผ์ด์ง ๊ฐ์ ๋ํ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ์ฌ ioctl()์ ํธ์ถํฉ๋๋ค.
๋ฌธ์์ด์ ์ธ ๋ฒ์งธ ์ธ์๋ก ์ฌ์ฉํฉ๋๋ค. ํํ.
NAMED ์ ํ๊ถ ๊ทธ๋ฃน
์ด๋ฌํ ์ต์ ์ ํ์ผ ์์คํ ํญ๋ชฉ์์ ์๋ํฉ๋๋ค.
์ฌ์ฉ์, ๊ทธ๋ฃน ๋ฐ ๋ชจ๋ ์ต์ ๋ ์ฐธ์กฐํ์ธ์.
์ฌ์ฉ์-์ด๊ธฐ=
๋ณ๊ฒฝ (์์ ์) ํ์ผ ์์คํ ํญ๋ชฉ์ ์ก์ธ์คํ๊ธฐ ์ ์
chown() ์์คํ ํธ์ถ. ์ด ํธ์ถ์๋ ๋ฃจํธ ๊ถํ์ด ํ์ํ ์ ์์ต๋๋ค.
๊ทธ๋ฃน-์ด๊ธฐ=
๋ณ๊ฒฝ chown()์ ์ฌ์ฉํ์ฌ ํ์ผ ์์คํ ํญ๋ชฉ์ ์ก์ธ์คํ๊ธฐ ์ ์
์์คํ ํธ์ถ. ์ด ํธ์ถ์๋ ๊ทธ๋ฃน ๋ฉค๋ฒ์ญ ๋๋ ๋ฃจํธ ๊ถํ์ด ํ์ํ ์ ์์ต๋๋ค.
ํ๋ง-์ด๊ธฐ=
๋ณ๊ฒฝ [mode_t] ํ์ผ ์์คํ ํญ๋ชฉ์ ์ก์ธ์คํ๊ธฐ ์ ์ ๋ค์์ ์ฌ์ฉํ์ฌ
chmod() ์์คํ ํธ์ถ. ์ด ํธ์ถ์๋ ์์ ๊ถ์ด๋ ๋ฃจํธ ๊ถํ์ด ํ์ํ ์ ์์ต๋๋ค.
์ฐ๋ง์คํฌ=
ํ๋ก์ธ์ค์ umask๋ฅผ ๋ค์์ผ๋ก ์ค์ ํฉ๋๋ค. [mode_t] ํ์ผ ์์คํ ์ ์ก์ธ์คํ๊ธฐ ์
ํญ๋ชฉ(UNIX ๋๋ฉ์ธ ์์ผ์ ์ ์ฉํฉ๋๋ค!) ์ด ์ ํ๋ ์์ผ๋ก ๋ชจ๋ ๊ฒ์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค
์ ์ด์ ์์บฃ ๋ฐฉ๋ฒ!
์ฐ๊ฒฐ ํด์ - ์กฐ๊ธฐ
ํ์ผ์ ์ด๊ธฐ ์ , ์ฌ์ง์ด ์ฌ์ฉ์๊ฐ ์กฐ๊ธฐ์ ์ ์ฉํ๊ธฐ ์ ์๋ ํ์ผ ๋งํฌ๋ฅผ ํด์ (์ ๊ฑฐ)ํฉ๋๋ค.
๋ฑ
ํ๋ฆฌ๋ค ํ์ผ์ ์ก์ธ์คํ๊ธฐ ์ , ์ฌ์ฉ์ ์ด๊ธฐ ๋ฑ ์ดํ์ ํ์ผ ๋งํฌ๋ฅผ ํด์ (์ ๊ฑฐ)ํฉ๋๋ค.
์ฐ๊ฒฐ ํด์ ์ง์ฐ
๋ค๋ฅธ ์ฌ๋์ด ์ก์ธ์คํ ์ ์๋๋ก ํ์ผ์ ์ฐ ํ ๋งํฌ๋ฅผ โโํด์ (์ ๊ฑฐ)ํฉ๋๋ค.
์งง์ ๊ฒฝ์ ์กฐ๊ฑด ํ์ ํ๋ก์ธ์ค๋ฅผ ์ํํฉ๋๋ค.
์ฐ๊ฒฐ ํด์ -๋ซ๊ธฐ
์ฃผ์๋ฅผ ๋ซ์ ๋ ์ฃผ์ ํ์ผ ์์คํ ํญ๋ชฉ์ ์ ๊ฑฐํฉ๋๋ค. ๋ช ๋ช ๋ ํ์ดํ์ ๊ฒฝ์ฐ
์ ๋์ค ๋๋ฉ์ธ ์์ผ๊ณผ pty ์ฃผ์์ ์ฌ๋ณผ๋ฆญ ๋งํฌ ์์ , ๊ธฐ๋ณธ๊ฐ
1์ด๋ค; ์์ฑ๋ ํ์ผ, ์ด๋ฆฐ ํ์ผ, ์ผ๋ฐ ์ด๋ฆฐ ํ์ผ ๋ฐ ํด๋ผ์ด์ธํธ Unix ๋๋ฉ์ธ์ ๊ฒฝ์ฐ
์์ผ์ ๊ธฐ๋ณธ๊ฐ์ 0์ ๋๋ค.
๊ณต์ ์ ํ๊ถ ๊ทธ๋ฃน
OPEN ๊ทธ๋ฃน ์ต์ ์ ์ฌ์ฉํ๋ฉด open() ์์คํ ํธ์ถ๋ก ํ๋๊ทธ๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค. ์: ์ต์
`creat'๋ O_CREAT ํ๋๊ทธ๋ฅผ ์ค์ ํฉ๋๋ค.
์ต์ ์ถ๊ฐ ๋ฐ ๋น์ฐจ๋จ๋ ์ฐธ์กฐํ์ธ์.
์ฐฝ์กฐ=
ํ์ผ์ด ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ ํ์ผ์ ์์ฑํฉ๋๋ค(์).
dsync=
๋ฉํ์ ๋ณด๊ฐ ๋ฏธ๋์ด์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๊ธฐ๋ก๋ ๋๊น์ง write() ํธ์ถ์ ์ฐจ๋จํฉ๋๋ค.
์ ์ธ=
creat ์ต์ ์ ์ฌ์ฉํ๋ฉด ํ์ผ์ด ์กด์ฌํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋์ฉ๋ ํ์ผ=
32๋นํธ ์์คํ ์์๋ 2^31๋ฐ์ดํธ๋ณด๋ค ํฐ ํ์ผ์ ํ์ฉํฉ๋๋ค.
์๋
์ฝ๊ธฐ ์ ์ก์ธ์ค ํ์์คํฌํ๊ฐ ๋ณ๊ฒฝ๋์ง ์๋๋ก O_NOATIME ์ต์ ์ ์ค์ ํฉ๋๋ค.
๋ นํฐ=
์ด ํ์ผ์ ์ ์ด ํฐ๋ฏธ๋๋ก ๋ง๋ค์ง ์์ต๋๋ค.
๋ฐ๋ฅด์ง ์์=
์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋ฐ๋ฅด์ง ์์ต๋๋ค.
nshare=
์ด ํ์ผ์ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๊ณต์ ํ๋ ๊ฒ์ ํ์ฉํ์ง ์์ต๋๋ค.
rshare=
๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์ฐ๊ธฐ ์ํด ์ด ํ์ผ์ ์ฌ๋ ๊ฒ์ ํ์ฉํ์ง ์์ต๋๋ค.
rsync=
๋ฉํ์ ๋ณด๊ฐ ๋ฏธ๋์ด์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๊ธฐ๋ก๋ ๋๊น์ง write()๋ฅผ ์ฐจ๋จํฉ๋๋ค.
๋๊ธฐํ=
๋ฐ์ดํฐ๊ฐ ๋ฏธ๋์ด์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๊ธฐ๋ก๋ ๋๊น์ง write()๋ฅผ ์ฐจ๋จํฉ๋๋ค.
rdonly=
์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ํ์ผ์ ์ฝ๋๋ค.
์๋ชป=
์ฐ๊ธฐ ์ ์ฉ์ผ๋ก ํ์ผ์ ์ฝ๋๋ค.
์๋ฅด๊ธฐ ํ์ผ์ ์ฌ๋ ๋์ ํ์ผ์ ํฌ๊ธฐ 0์ผ๋ก ์๋ฆ ๋๋ค.
REG ๊ณผ BLK ์ ํ๊ถ ๊ทธ๋ฃน
์ด๋ฌํ ์ต์ ์ ์ผ๋ฐ์ ์ผ๋ก UN*X ํ์ผ ์ค๋ช ์์ ์ ์ฉ๋์ง๋ง ํด๋น ์๋ฏธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋๋ค ์ก์ธ์ค๋ฅผ ์ง์ํ๋ ํ์ผ์์๋ง ๊ฐ์ง๋ฉ๋๋ค.
์ถ๊ตฌ=
lseek(fd, , SEEK_SET) (๋๋ lseek64 ) ์์คํ ํธ์ถ, ๋ฐ๋ผ์
ํ์ผ ํฌ์ธํฐ๋ฅผ ์ ๋์ ์ผ๋ก ์์น ์ง์ [off_t ๋๋ off64_t]. ์ฐธ๊ณ ํ์ธ์
๋๋ฝ๋ ๊ฐ์ ๊ธฐ๋ณธ๊ฐ์ 1์ด ์๋ 0์ ๋๋ค.
ํ์-ํ์ฌ=
lseek(fd, , SEEK_CUR) (๋๋ lseek64 ) ์์คํ ํธ์ถ, ๋ฐ๋ผ์
ํ์ผ ํฌ์ธํฐ ์์น ์ง์ [off_t ๋๋ off64_t] ๋ฐ์ดํธ๋ฅผ ์๋์ ์ผ๋ก
ํ์ฌ ์์น(๋ณดํต 0)์ ๋๋ค. ๋๋ฝ๋ ๊ฐ์ ๊ธฐ๋ณธ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1์ด ์๋๋ผ 0์ ๋๋ค.
ํ์ ๋=
lseek(fd, , SEEK_END) (๋๋ lseek64 ) ์์คํ ํธ์ถ, ๋ฐ๋ผ์
ํ์ผ ํฌ์ธํฐ ์์น ์ง์ [off_t ๋๋ off64_t] ๋ฐ์ดํธ๋ฅผ ๊ธฐ์ค์ผ๋ก
ํ์ผ์ด ํ์ฌ ๋๋ฉ๋๋ค. ๋๋ฝ๋ ๊ฐ์ ๊ธฐ๋ณธ๊ฐ์ 1์ด ์๋ 0์ ๋๋ค.
ftruncate=
ftruncate(fd, ) (๋๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒฝ์ฐ ftruncate64) ์์คํ ํธ์ถ, ๋ฐ๋ผ์
ํด๋น ์์น์์ ํ์ผ ์๋ฅด๊ธฐ [off_t ๋๋ off64_t]. ์ฐธ๊ณ ํ์๊ธฐ ๋ฐ๋๋๋ค
๋๋ฝ๋ ๊ฐ์ ๊ธฐ๋ณธ๊ฐ์ 1์ด ์๋ 0์ ๋๋ค.
๋น๋ฐ=
ํด์ =
๋น๊ต=
ext2-๋๊ธฐํ=
๋ถ๋ณ=
ext2-์ถ๊ฐ=
๋ ธ๋ค=
ext2-noatime=
์ ๋ ๋ฐ์ดํฐ=
์๋ฆผ=
๋๋ ํฐ๋ฆฌ ๋๊ธฐํ=
์ด๋ฌํ ์ต์ ์ ์ด์ ์ฒด์ ๋ฐ ํ์ผ์ ๋นํ์ค ํ์ผ ์์ฑ์ ๋ณ๊ฒฝํฉ๋๋ค.
ext2fs, ext3fs ๋๋ reiserfs๋ฅผ ์ฌ์ฉํ๋ Linux์ ๊ฐ์ด ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ง์ํ๋ ์์คํ .
์ด๋ฌํ ์ต์ ์ ๋ํ ์์ธํ ๋ด์ฉ์ man 1 chattr์ ์ฐธ์กฐํ์ธ์. ์์ ์ ์์ผ๋ ์ฐธ๊ณ ํ์ธ์
ํ์ผ ์์ฑ๊ณผ ์ด๋ฌํ ์ต์ ์ ์ฉ ์ฌ์ด์ ๊ฒฝ์ ์กฐ๊ฑด.
๋ฐฉ๋ฒ ์ ํ๊ถ ๊ทธ๋ฃน
์ด ๊ทธ๋ฃน์ ์ต์ ์ ํ๋์ ๋ฐ์ดํฐ์๋ง ์ํฅ์ ๋ฏธ์น๋ ๋์ ํ๋ก์ธ์ค ์์ฑ์ ๋ณ๊ฒฝํฉ๋๋ค.
์ฑ๋. EXEC ๋ฐ SYSTEM ์ฃผ์์ LISTEN ๋ฐ CONNECT ์ ํ ์ฃผ์์ ๊ฒฝ์ฐ
FORK ์ต์ ์ ๊ฒฝ์ฐ ์ด๋ฌํ ์ต์ ์ ๊ธฐ๋ณธ socat ํ๋ก์ธ์ค ๋์ ํ์ ํ๋ก์ธ์ค์ ์ ์ฉ๋ฉ๋๋ค.
chroot=
chroot() ์์ ์ ์ํํ์ฌ ์ฃผ์๋ฅผ ์ฒ๋ฆฌํ ํ
(์). ์ด ํธ์ถ์๋ ๋ฃจํธ ๊ถํ์ด ํ์ํ ์ ์์ต๋๋ค.
chroot-์ด๊ธฐ=
chroot() ์์ ์ ์ํํ์ฌ ์ฃผ์๋ฅผ ์ด๊ธฐ ์ ์ ์ด ํตํ
๋ฃจํธ ๊ถํ์ด ํ์ํ ์ ์์ต๋๋ค.
์ค์ ID=
๊ธฐ๋ณธ ๋ณ๊ฒฝ ์ฃผ์๋ฅผ ์ฒ๋ฆฌํ ํ์ ํ๋ก์ธ์ค์ ๋๋ค. ์ด ํตํ
๋ฃจํธ ๊ถํ์ด ํ์ํ ์ ์์ต๋๋ค. ์ด ์ต์ ์ ๋ค๋ฅธ ์ต์ ์ ์ญ์ ํ์ง ์์ต๋๋ค.
๊ทธ๋ฃน ๊ด๋ จ ๊ถํ.
setgid-์ด๊ธฐ=
setgit๊ณผ ๋น์ทํ์ง๋ง ์ฃผ์๋ฅผ ์ด๊ธฐ ์ ์ ์ํ๋ฉ๋๋ค.
setuid=
๋ณ๊ฒฝ (์์ ์) ์ฃผ์ ์ฒ๋ฆฌ ํ ํ๋ก์ธ์ค์. ์ด ํตํ
๋ฃจํธ ๊ถํ์ด ํ์ํ ์ ์์ต๋๋ค. ์ด ์ต์ ์ ๊ทธ๋ฃน์ ์ญ์ ํ์ง ์์ต๋๋ค.
๊ด๋ จ ํน๊ถ. ์ต์ su๊ฐ ๊ทํ์ ์๊ตฌ ์ฌํญ์ ๋ ์ ๋ง๋์ง ํ์ธํ์ญ์์ค.
setuid-์ด๊ธฐ=
setuid์ ๋น์ทํ์ง๋ง ์ฃผ์๋ฅผ ์ด๊ธฐ ์ ์ ์ํ๋ฉ๋๋ค.
์=
๋ณ๊ฒฝ (์์ ์) ๋ฐ ์ฃผ์ ์ฒ๋ฆฌ ํ ํ๋ก์ธ์ค์ ๊ทธ๋ฃน
(์). ์ด ํธ์ถ์๋ ๋ฃจํธ ๊ถํ์ด ํ์ํ ์ ์์ต๋๋ค.
su-d=
substuser-delayed์ ์งง์ ์ด๋ฆ์ ๋๋ค. ๋ณ๊ฒฝ (์์ ์) ๋ฐ ๊ทธ๋ฃน
์ฃผ์ ์ฒ๋ฆฌ ํ ์ฒ๋ฆฌํฉ๋๋ค(์). ์ฌ์ฉ์์ ๊ทธ์ ๊ทธ๋ฃน์
๊ฒ์๋ ์ ์ ๊ฐ๋ฅํ chroot() . ์ด ํธ์ถ์๋ ๋ฃจํธ ๊ถํ์ด ํ์ํ ์ ์์ต๋๋ค.
setpgid=
ํ๋ก์ธ์ค๋ฅผ ์ง์ ๋ ํ๋ก์ธ์ค ๊ทธ๋ฃน์ ๊ตฌ์ฑ์์ผ๋ก ๋ง๋ญ๋๋ค. . ๊ฐ์ด ์์ผ๋ฉด
์ฃผ์ด์ง๊ฑฐ๋, ๊ฐ์ด 0 ๋๋ 1์ด๋ฉด ํด๋น ํ๋ก์ธ์ค๋ ์ ํ๋ก์ธ์ค์ ๋ฆฌ๋๊ฐ ๋ฉ๋๋ค.
๊ทธ๋ฃน์ ๋๋ค.
์ธํธ์๋ ํ๋ก์ธ์ค๋ฅผ ์ ์ธ์ ์ ๋ฆฌ๋๋ก ๋ง๋ญ๋๋ค(์).
์ฝ๊ธฐ ๋ผ์ธ ์ ํ๊ถ ๊ทธ๋ฃน
๋ผ์ด์ผ์ค ์ ํ์ผ๋ก ์ธํด ๋ฐ๋น์์์๋ readline ๊ธฐ๋ฅ์ด ๋นํ์ฑํ๋์ด ์์ต๋๋ค(BUGS ์ฐธ์กฐ).
์ด ์ต์ ์ readline ์ฃผ์ ์ ํ์ ์ ์ฉ๋ฉ๋๋ค.
์ญ์ฌ=
๊ธฐ๋ก์ ์ฝ๊ณ ์๋๋ค. (์).
๊ฐ์๊ธฐ
๋ฒ์ 1.4.0๋ถํฐ ๊ธฐ๋ณธ์ ์ผ๋ก socat๋ ํ๋กฌํํธ๋ฅผ ๊ฒฐ์ ํ๋ ค๊ณ ์๋ํฉ๋๋ค.
readline ํธ์ถ๋ก ์ ๋ฌ - ๋ง์ง๋ง ๋ถ์์ ํ ์ค์ ๊ธฐ์ตํ์ฌ
์ฐ์ถ. ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด socat์ readline์ ํ๋กฌํํธ๋ฅผ ์ ๋ฌํ์ง ์์ผ๋ฏ๋ก ์์๋ฉ๋๋ค.
ํฐ๋ฏธ๋์ ์ฒซ ๋ฒ์งธ ์ด์์ ์ค ํธ์ง.
๋ ธ์์ฝ=
๋ค์ ์ ๋ ฅ ๋ผ์ธ์ ๋ฐฉ์งํ๋ ํ๋กฌํํธ์ ์ผ๋ฐ ํจํด์ ์ง์ ํฉ๋๋ค.
ํ๋ฉด์ ํ์๋์ง ์๊ณ ๊ธฐ๋ก์ ์ถ๊ฐ๋์ง ์์ต๋๋ค. ํ๋กฌํํธ
๊ฐ์ฅ ์ต๊ทผ์ readline ์ฃผ์ ์ดํ์ ์ถ๋ ฅ๋ ํ ์คํธ๋ก ์ ์๋ฉ๋๋ค.
๊ฐํ ๋ฌธ์ ๋ฐ ์ ๋ ฅ ๋ฌธ์๊ฐ ์ ๋ ฅ๋๊ธฐ ์ . ํจํด์ ๊ท์น์ ์ด๋ค
ํํ์(์: "^[Pp]assword:.*$" ๋๋ "([Uu]ser:|[Pp]assword:)"). ์ ๊ท์ ๋ณด๊ธฐ\(7)
์์ธํ ๋ด์ฉ์. (์)
ํ๋กฌํํธ=
๋ฌธ์์ด์ readline ํจ์์ ํ๋กฌํํธ๋ก ์ ๋ฌํฉ๋๋ค. readline์ ์ด ํ๋กฌํํธ๋ฅผ ์ธ์ํฉ๋๋ค
์ญ์ฌ๋ฅผ ๋ฐ์ ๋. ์ด ๋ฌธ์์ด์ด ๋ฐํ๋ ์ง์์ ์ธ ํ๋กฌํํธ์ ์ผ์นํ๋ ๊ฒฝ์ฐ
๋ค๋ฅธ socat ์ฃผ์์ ๋ํํ ํ๋ก๊ทธ๋จ์ ํตํด ์ผ๊ด๋ ๋ชจ์๊ณผ ๋๋์ ์ป์ ์ ์์ต๋๋ค.
๋ณด๊ด๋ฉ๋๋ค.
์ ์ฒญ ์ ํ๊ถ ๊ทธ๋ฃน
์ด ๊ทธ๋ฃน์๋ ๋ฐ์ดํฐ ์์ค์์ ์๋ํ๋ ์ต์ ์ด ํฌํจ๋์ด ์์ต๋๋ค. ์ด ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ง ์ ์ฉ๋ฉ๋๋ค.
socat์ ์ํด ์ ์ก๋ "์์" ๋ฐ์ดํฐ์๋ ์์ง๋ง ๋ค์๊ณผ ๊ฐ์ ์ฃผ์์์ ์ฌ์ฉ๋๋ ํ๋กํ ์ฝ ๋ฐ์ดํฐ์๋ ์ ์ก๋์ง ์์ต๋๋ค.
๋๋ฆฌ.
cr ๊ธฐ๋ณธ ์ค ์ข ๋ฃ ๋ฌธ์ NL('\n', 0x0a)์ CR('\r',
0x0d) ์ด ์ฑ๋์ ์ฐ๊ธฐ/์ฝ๊ธฐ ์.
crnl ๊ธฐ๋ณธ ์ค ์ข ๋ฃ ๋ฌธ์ NL('\n', 0x0a)์ CRNL๋ก/์์ ๋ณํํฉ๋๋ค.
("\r\n", 0x0d0a) ์ด ์ฑ๋์์ ์ฐ๊ธฐ/์ฝ๊ธฐ ์(์). ์ฐธ๊ณ : ์์บฃ
๋จ์ํ ๋ชจ๋ CR ๋ฌธ์๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
๋ฌด์ํ๋ค
์ด ์ฑ๋์์ EOF๊ฐ ๋ฐ์ํ๋ฉด ์์บฃ ์ด๋ฅผ ๋ฌด์ํ๊ณ ๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ผ๋ ค๊ณ ์๋ํฉ๋๋ค(์:
"tail -f")(์).
์ฝ๊ธฐ๋ฐ์ดํธ=
์์บฃ ์ด ์ฃผ์์์ ๋๋ฌด ๋ง์ ๋ฐ์ดํธ๋ง ์ฝ์ต๋๋ค(์ฃผ์๋ ๋๋ฌด ๋ง์ ๋ฐ์ดํธ๋ง ์ ๊ณตํฉ๋๋ค).
๋ฐ์ดํธ๋ฅผ ์ ์กํ๊ณ ๋์ค์ EOF์ ์๋ ๊ฒ์ฒ๋ผ ๊ฐ์ฅํฉ๋๋ค). 0๋ณด๋ค ์ปค์ผ ํฉ๋๋ค.
์ ๊ธ ํ์ผ=
์ ๊ธ ํ์ผ์ด ์์ผ๋ฉด ์ค๋ฅ์ ํจ๊ป ์ข ๋ฃ๋ฉ๋๋ค. lockfile์ด ์์ผ๋ฉด ์์ฑํ๊ณ
๊ณ์ํด์ ์ข ๋ฃ ์ ์ ๊ธ ํ์ผ์ ๋งํฌ๋ฅผ ํด์ ํฉ๋๋ค.
๋๊ธฐ์ ๊ธ=
์ ๊ธ ํ์ผ์ด ์์ผ๋ฉด ์ฌ๋ผ์ง ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค. ์ ๊ธํ์ผ์ด ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ,
๊ทธ๊ฒ์ ์์ฑํ๊ณ ๊ณ์ํด์ ์ข ๋ฃ ์ ์ ๊ธ ํ์ผ์ ๋งํฌ๋ฅผ ํด์ ํฉ๋๋ค.
ํ์ถ=
์ ๋ ฅ ์คํธ๋ฆผ์์ EOF๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ ๋ฌธ์์ ์ซ์ ์ฝ๋๋ฅผ ์ง์ ํฉ๋๋ค. ๊ทธ๊ฒ
์์ ๋ชจ๋์ ํฐ๋ฏธ๋์ ์ ์ฉํฉ๋๋ค(์).
์์ผ ์ ํ๊ถ ๊ทธ๋ฃน
์ด๋ฌํ ์ต์ ์ IP ๋๋ UNIX ๋๋ฉ์ธ๊ณผ ๊ฐ์ ๋ชจ๋ ์ข ๋ฅ์ ์์ผ์ ์ํ ๊ฒ์ ๋๋ค. ๋๋ถ๋ถ์
setockopt() ํธ์ถ์ ์ฌ์ฉํ์ฌ ์ ์ฉ๋ฉ๋๋ค.
๋ฐ์ธ๋ฉ=
๋ฐ์ธ๋ฉ() ์์คํ ํธ์ถ์ ์ฌ์ฉํ์ฌ ์์ผ์ ์ง์ ๋ ์์ผ ์ฃผ์์ ๋ฐ์ธ๋ฉํฉ๋๋ค. ํํ
~์ ์์ผ ๋๋ฉ์ธ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. IP4 ๋ฐ IP6์ ๋ค์ ํ์์ ํ์ฉํฉ๋๋ค.
[ํธ์คํธ ์ด๋ฆ|ํธ์คํธ ์ฃผ์][:(์๋น์ค|ํฌํธ)] (์), UNIX ๋๋ฉ์ธ ์์ผ์๋ ๋ค์์ด ํ์ํฉ๋๋ค.
.
์ฐ๊ฒฐ ์๊ฐ ์ด๊ณผ=
๋ค์ ์ดํ์ ์ฐ๊ฒฐ ์๋๋ฅผ ์ค๋จํ์ธ์. [timeval] ์ค๋ฅ ์ํ์ ๋๋ค.
so-bindtodevice=
์์ผ์ ์ฃผ์ด์ง ๊ฒ์ ๋ฐ์ธ๋ํฉ๋๋ค. . ์ด ์ต์ ์๋ ๋ฃจํธ๊ฐ ํ์ํ ์ ์์ต๋๋ค.
ํน๊ถ.
๋ฐฉ์ก
๋ฐ์ดํฐ๊ทธ๋จ ์์ผ์ ๊ฒฝ์ฐ ๋ธ๋ก๋์บ์คํธ ์ฃผ์๋ก ์ ์ก ๋ฐ ํจํท ์์ ์ ํ์ฉํฉ๋๋ค.
๋ธ๋ก๋์บ์คํธ ์ฃผ์๋ก ์ง์ ๋ฉ๋๋ค.
๋๋ฒ๊ทธ ์์ผ ๋๋ฒ๊น ์ ํ์ฑํํฉ๋๋ค.
๋ฃจํธ๋ฅผ ํ์ง ์๋๋ค
์ง์ ์ฐ๊ฒฐ๋ ํผ์ด์๋ง ํต์ ํ๊ณ ๋ผ์ฐํฐ๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค.
์ด์ ์ ์ง
์์ผ์์ Keepalive ์ ์ก์ ํ์ฑํํฉ๋๋ค.
๋จธ๋ญ๊ฑฐ๋ฆฌ๋ค=
๋ฐ์ดํฐ ์ ์ก์ด ์๋ฃ๋๊ฑฐ๋ ์ง์ ๋ ์๊ฐ์ด ๋ ๋๊น์ง shutdown() ๋๋ close()๋ฅผ ์ฐจ๋จํฉ๋๋ค.
์๊ฐ ์ด๊ณผ [int]๊ฐ ๋ง๋ฃ๋์์ต๋๋ค.
์ฐ๋น๋ฆฐ
์ ๋ ฅ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ๋์ญ ์ธ ๋ฐ์ดํฐ๋ฅผ ๋ฐฐ์นํฉ๋๋ค.
์ฐ์ ์์=
์ ์๋ ํ๋กํ ์ฝ์ ์ค์ ํฉ๋๋ค. [ ] ๋๊ฐ๋ ํจํท์ ๊ฒฝ์ฐ.
rcvbuf=
์์ผ() ํธ์ถ ํ ์์ ๋ฒํผ์ ํฌ๊ธฐ๋ฅผ ๋ค์์ผ๋ก ์ค์ ํฉ๋๋ค. [์ ์]. ์ ํจ๊ป
TCP ์์ผ์์ ์ด ๊ฐ์ ์์ผ์ ์ต๋ ์ฐฝ ํฌ๊ธฐ์ ํด๋นํฉ๋๋ค.
rcvbuf-๋ฆ๊ฒ=
์์ผ์ด ์ด๋ฏธ ์ฐ๊ฒฐ๋์ด ์์ ๋ ์์ ๋ฒํผ์ ํฌ๊ธฐ๋ฅผ ์ค์ ํฉ๋๋ค.
[์ ์]. TCP ์์ผ์ ๊ฒฝ์ฐ ์ด ๊ฐ์ ์์ผ์ ์ต๋ ์ฐฝ์ ํด๋นํฉ๋๋ค.
ํฌ๊ธฐ.
rcvlowat=
์์ผ ๊ณ์ธต์ด ์๋ฃ๋ ๋๊น์ง ์์ ๋ ๋ฐ์ดํธ์ ์ต์ ์[int]๋ฅผ ์ง์ ํฉ๋๋ค.
๋ฒํผ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ์์บฃ.
rcvtimeo=
์์ ์๊ฐ ์ ํ [timeval]์ ์ค์ ํฉ๋๋ค.
์ฌ์ฌ์ฉ ์ฃผ์
๋ค๋ฅธ ์์ผ์ด ์ฃผ์์ ์ผ๋ถ์ผ์ง๋ผ๋ ์ฃผ์์ ๋ฐ์ธ๋ฉํ ์ ์๋๋ก ํ์ฉํฉ๋๋ค(์: ๋ก์ปฌ
ํฌํธ)๋ ์ด๋ฏธ ์ฌ์ฉ ์ค์ ๋๋ค. ์์บฃ (์).
sndbuf=
์์ผ() ํธ์ถ ํ ์ ์ก ๋ฒํผ์ ํฌ๊ธฐ๋ฅผ ๋ค์์ผ๋ก ์ค์ ํฉ๋๋ค. [์ ์].
sndbuf-late=
์์ผ์ด ์ฐ๊ฒฐ๋ ๋ ์ ์ก ๋ฒํผ์ ํฌ๊ธฐ๋ฅผ ์ค์ ํฉ๋๋ค. [์ ์].
sndlowat=
์์ผ ๊ณ์ธต์ด ์๋ฃ๋ ๋๊น์ง ์ ์ก ๋ฒํผ์ ์ต์ ๋ฐ์ดํธ ์๋ฅผ ์ง์ ํฉ๋๋ค.
๋ฐ์ดํฐ๋ฅผ ๋ค์์ผ๋ก ๋ณด๋ผ ๊ฒ์ ๋๋ค. [์ ์].
sndtimeo=
์ ์ก ์๊ฐ ์ ํ์ ์ด[timeval]๋ก ์ค์ ํฉ๋๋ค.
pf=
์ง์ ๋ IP ๋ฒ์ ๋๋ ํ๋กํ ์ฝ์ ๊ฐ์ ๋ก ์ฌ์ฉํฉ๋๋ค. ๋ญ๊ฐ ๋ ์ ์๋ค
"ip4"๋ "ip6" ๊ฐ์ ๊ฑฐ์ฃ . ๊ฒฐ๊ณผ ๊ฐ์ ์์ผ()์ ์ฒซ ๋ฒ์งธ ์ธ์๋ก ์ฌ์ฉ๋ฉ๋๋ค.
๋๋ ์์ผ์() ํธ์ถ. ์ด ์ต์ ์ ์ฃผ์ ํ์ธ ๋ฐ ํ์ ์ฌํญ์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
๋ฐ์ธ๋ ๋ฐ ๋ฒ์ ์ต์ ์ ๊ตฌ๋ฌธ.
์ ํ=
์์ผ()์ ๋ ๋ฒ์งธ ์ธ์๋ก ์ง์ ๋ ์์ผ ์ ํ์ ์ค์ ํฉ๋๋ค.
์์ผ์() ํธ์ถ, [์ ์]. ์ฃผ์ ํ์ธ์ ์ด์ ์ํฅ์ ๋ฐ์ง ์์ต๋๋ค.
์ต์ . Linux์์ 1์ ์คํธ๋ฆผ ์งํฅ ์์ผ์ ์๋ฏธํ๊ณ , 2๋ ๋ฐ์ดํฐ๊ทธ๋จ ์์ผ์ ์๋ฏธํ๋ฉฐ,
3์ ์์ ์์ผ์ ์๋ฏธํฉ๋๋ค.
ํ๋กํ ํ์
์์ผ()์ ์ธ ๋ฒ์งธ ์ธ์๋ก ์ง์ ๋ ์์ผ์ ํ๋กํ ์ฝ์ ์ค์ ํฉ๋๋ค.
์์ผ์() ํธ์ถ, [์ ์]. ์ฃผ์ ํ์ธ์ ๋ค์์ ์ํฅ์ ๋ฐ์ง ์์ต๋๋ค.
์ด ์ต์ . 6์ TCP, 17์ UDP๋ฅผ ์๋ฏธํฉ๋๋ค.
๊ทธ๋์ ํ์์คํฌํ
SO_TIMESTAMP ์์ผ ์ต์ ์ ์ค์ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ค์์ ์์ ํ๊ณ ๋ก๊น ํ ์ ์์ต๋๋ค.
ํ์์คํฌํ ๋ณด์กฐ ๋ฉ์์ง.
setockopt-int= : :
์ง์ ๋ ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์์ผ์ ๋ํด setockopt()๋ฅผ ํธ์ถํฉ๋๋ค. ๋ ๋ฒจ [int]๊ฐ ์ฌ์ฉ๋ฉ๋๋ค
setockopt()์ ๋ ๋ฒ์งธ ์ธ์๋ก ๋ ์ด์ด๋ฅผ ์ง์ ํฉ๋๋ค(์: TCP์ ๊ฒฝ์ฐ SOL_TCP(6)
Linux์ ๊ฒฝ์ฐ) ๋๋ ์์ผ ๊ณ์ธต์ ๊ฒฝ์ฐ SOL_SOCKET(Linux์ ๊ฒฝ์ฐ 1). optname [int]๋
setockopt()์ ์ธ ๋ฒ์งธ ์ธ์์ด๋ฉฐ ์ด๋ค ์์ผ ์ต์ ์ ์ค์ ํ ์ง ์๋ ค์ค๋๋ค. ์ ๋ํ
์ค์ ์ซ์๋ ๊ทํ์ ์ ์ ํ ํฌํจ ํ์ผ์ ์ฐพ์์ผ ํ ์๋ ์์ต๋๋ค.
์ฒด๊ณ. ๋ค ๋ฒ์งธ setockopt() ๋งค๊ฐ๋ณ์์ธ ๊ฐ [int]๊ฐ ํจ์์ ์ ๋ฌ๋ฉ๋๋ค.
ํฌ์ธํฐ์ด๋ฉฐ, ๊ธธ์ด ๋งค๊ฐ๋ณ์์ ๊ฒฝ์ฐ sizeof\(int)๊ฐ ์์์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
setockopt-bin= : :
setockopt-int์ ๋น์ทํ์ง๋ง dalan ํ์์ผ๋ก ์ ๊ณต๋์ด์ผ ํ๋ฉฐ ๋ค์์ ์ง์ ํด์ผ ํฉ๋๋ค.
์์์ ๋ฐ์ดํธ ์ํ์ค; ๊ธธ์ด ๋งค๊ฐ๋ณ์๋ ๋ค์์์ ์๋์ผ๋ก ํ์๋ฉ๋๋ค.
๋ฐ์ดํฐ์ ๋๋ค.
setockopt-๋ฌธ์์ด= : :
setockopt-int์ ๋น์ทํ์ง๋ง ๋ฌธ์์ด์ด์ด์ผ ํฉ๋๋ค. ์ด ๋ฌธ์์ด์
ํํ null ๋ฌธ์๊ฐ ์๋ ํจ์์ด๋ฉฐ ๊ธธ์ด ๋งค๊ฐ๋ณ์๋ ์๋์ผ๋ก
๋ฐ์ดํฐ์์ ํ์๋์์ต๋๋ค.
UNIX ์ ํ๊ถ ๊ทธ๋ฃน
์ด๋ฌํ ์ต์ ์ UNIX ๋๋ฉ์ธ ๊ธฐ๋ฐ ์ฃผ์์ ์ ์ฉ๋ฉ๋๋ค.
์ ๋์ค-tightsocklen=[0|1]
์์ผ ์์ ์ ์ ์ฒด๋ฅผ ํฌํจํ์ง ์๋ ์์ผ ์ฃผ์ ๊ธธ์ด๋ฅผ ์ ๋ฌํฉ๋๋ค.
struct sockaddr_un ๋ ์ฝ๋์ด์ง๋ง (๋ค๋ฅธ ๊ตฌ์ฑ ์์ ์ธ์) ๊ด๋ จ ๋ถ๋ถ๋ง
ํ์ผ ์ด๋ฆ ๋๋ ์ถ์ ๋ฌธ์์ด. ๊ธฐ๋ณธ๊ฐ์ 1์ ๋๋ค.
IP4 ๊ณผ IP6 ์ ํ๊ถ ๊ทธ๋ฃน
์ด๋ฌํ ์ต์ ์ IPv4 ๋ฐ IPv6 ๊ธฐ๋ฐ ์์ผ๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ ์ค=
๋๊ฐ๋ ํจํท์ TOS(์๋น์ค ์ ํ) ํ๋๋ฅผ ๋ค์์ผ๋ก ์ค์ ํฉ๋๋ค. [๋ฐ์ดํธ](RFC ์ฐธ์กฐ
791).
ttl=
๋๊ฐ๋ ํจํท์ TTL(Time To Live) ํ๋๋ฅผ ๋ค์์ผ๋ก ์ค์ ํฉ๋๋ค. [๋ฐ์ดํธ].
IP ์ต์ =
์์ค ๋ผ์ฐํ ๊ณผ ๊ฐ์ IP ์ต์ ์ ์ค์ ํฉ๋๋ค. ๋ฐ์ด๋๋ฆฌ ํ์์ผ๋ก ์ ๊ณต๋์ด์ผ ํ๋ฉฐ ๊ถ์ฅ๋จ
ํ์์ "x"๋ก ์์ํ๊ณ ๊ทธ ๋ค์ ์ง์ ๊ฐ์ XNUMX์ง์๊ฐ ์ต๋๋ค. ์ด ์ต์ ์
์ฌ๋ฌ ๋ฒ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์์ ํตํด ํธ์คํธ 10.0.0.1์ ์ฐ๊ฒฐํ๋ ค๋ฉด
๋์จํ ์์ค ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๋ ์ผ๋ถ ๊ฒ์ดํธ์จ์ด์ ๊ฒฝ์ฐ ๊ฒ์ดํธ์จ์ด๋ฅผ ์ฃผ์ ๋งค๊ฐ๋ณ์๋ก ์ฌ์ฉํ๊ณ
ip-options=x8307040a000001 ์ต์ ์ ์ฌ์ฉํ์ฌ ๋์จํ ์์ค ๊ฒฝ๋ก๋ฅผ ์ค์ ํ์ญ์์ค.
IP ์ต์ ์ RFC 791์ ์ ์๋์ด ์์ต๋๋ค.
mtudiscover=<0|1|2>
์ด ์์ผ์์ ๊ฒฝ๋ก MTU ๊ฒ์์ ์ฌ์ฉํ์ง ์๊ฑฐ๋ ์ฌ์ฉํ์ง ์๊ฑฐ๋ ํญ์ ์ฌ์ฉํ๋ ค๋ฉด 0, 1, 2๋ฅผ ์ฌ์ฉํฉ๋๋ค.
IP-PKT์ ๋ณด
IP_PKTINFO ์์ผ ์ต์ ์ ์ค์ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ณด์กฐ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ณ ๋ก๊น ํ ์ ์์ต๋๋ค.
๋์ ์ฃผ์์ ์ธํฐํ์ด์ค(Linux)๊ฐ ํฌํจ๋ ๋ฉ์์ง(์)
IP ๋ณต๊ตฌ
IP_RECVERR ์์ผ ์ต์ ์ ์ค์ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ณด์กฐ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ณ ๋ก๊น ํ ์ ์์ต๋๋ค.
์์ธํ ์ค๋ฅ ์ ๋ณด๊ฐ ํฌํจ๋ ๋ฉ์์ง์ ๋๋ค.
IP-Recvopts
IP_RECVOPTS ์์ผ ์ต์ ์ ์ค์ ํฉ๋๋ค. ์ด๋ฅผ ํตํด IP ์์ ๋ฐ ๋ก๊น ์ด ๊ฐ๋ฅํด์ง๋๋ค.
์ต์ ๋ณด์กฐ ๋ฉ์์ง(Linux, *BSD).
IP-Recvtos
IP_RECVTOS ์์ผ ์ต์ ์ ์ค์ ํฉ๋๋ค. ์ด๋ฅผ ํตํด TOS(์ ํ
์๋น์ค) ๋ณด์กฐ ๋ฉ์์ง(Linux).
IP-recvttl
IP_RECVTTL ์์ผ ์ต์ ์ ์ค์ ํฉ๋๋ค. ์ด๋ฅผ ํตํด TTL(์๊ฐ)์ ์์ ํ๊ณ ๋ก๊น ํ ์ ์์ต๋๋ค.
to live) ๋ณด์กฐ ๋ฉ์์ง(Linux, *BSD).
IP-recvdstaddr
IP_RECVDSTADDR ์์ผ ์ต์ ์ ์ค์ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ค์์ ์์ ํ๊ณ ๋ก๊น ํ ์ ์์ต๋๋ค.
๋์ ์ฃผ์(*BSD)๊ฐ ํฌํจ๋ ๋ณด์กฐ ๋ฉ์์ง(์)
IP-Recvif
IP_RECVIF ์์ผ ์ต์ ์ ์ค์ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ธํฐํ์ด์ค ์์ ๋ฐ ๋ก๊น ์ด ๊ฐ๋ฅํด์ง๋๋ค.
๋ณด์กฐ ๋ฉ์์ง(*BSD)(์)
IP-์ถ๊ฐ-๋ฉค๋ฒ์ญ=
IP-์ถ๊ฐ-๋ฉค๋ฒ์ญ=
IP-์ถ๊ฐ-๋ฉค๋ฒ์ญ=
IP-์ถ๊ฐ-๋ฉค๋ฒ์ญ=
IP-์ถ๊ฐ-๋ฉค๋ฒ์ญ=
์ง์ ๋ ๋ฉํฐ์บ์คํธ ๊ทธ๋ฃน์ ์์ผ ๊ตฌ์ฑ์์ ๋ง๋ญ๋๋ค. ํ์ฌ๋ ์ด๊ฒ๋ฟ์ด๋ค
IPv4์ฉ์ผ๋ก ๊ตฌํ๋์์ต๋๋ค. ์ด ์ต์ ์ ๋ฉํฐ์บ์คํธ ๊ทธ๋ฃน์ IP ์ฃผ์๋ฅผ ๊ฐ์ ธ์ค๊ณ
์ํ๋ ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ ๋ํ ์ ๋ณด. ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๊ตฌ๋ฌธ์ ์ฒซ ๋ฒ์งธ ๊ตฌ๋ฌธ์ ๋๋ค.
๋๋จธ์ง๋ struct mreqn(Linux)์ ์ ๊ณตํ๋ ์์คํ ์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฑ ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ ์์ธ์ ํ์ํ ์ ์์ต๋๋ค. ํ๋ก์นธ.
IP-๋ฉํฐ์บ์คํธ-if=
๋ฉํฐ์บ์คํธ์ ์ฌ์ฉํ ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ ํธ์คํธ ์ด๋ฆ ๋๋ ์ฃผ์๋ฅผ ์ง์ ํฉ๋๋ค.
๊ตํต.
IP-๋ฉํฐ์บ์คํธ-๋ฃจํ=
๋๊ฐ๋ ๋ฉํฐ์บ์คํธ ํธ๋ํฝ์ด ์ธํฐํ์ด์ค๋ก ๋ฃจํ๋ฐฑ๋์ด์ผ ํ๋์ง ์ฌ๋ถ๋ฅผ ์ง์ ํฉ๋๋ค.
IP-๋ฉํฐ์บ์คํธ-ttl=
๋๊ฐ๋ ๋ฉํฐ์บ์คํธ ํธ๋ํฝ์ ์ฌ์ฉ๋๋ TTL์ ์ค์ ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 1์ ๋๋ค.
๋ค์ ๋๋ฒ๊ทธ
res-aa๋ง
res-usevc
res-primary
์ฌ์ ํ
์ฌ๊ท
res-defnames
res-stayopen
res-dnsrch
์ด๋ฌํ ์ต์ ์ ํด๋น ํ์ธ์(์ด๋ฆ ํ์ธ) ์ต์ ํ๋๊ทธ๋ฅผ ์ค์ ํฉ๋๋ค.
๊ธฐ๋ณธ ์ต์ ์ ์ง์ฐ๋ ค๋ฉด "=0"์ ์ถ๊ฐํ์ธ์. ์์ธํ ๋ด์ฉ์ man ํด์๊ธฐ\(5)๋ฅผ ์ฐธ์กฐํ์ธ์.
์ด๋ฌํ ์ต์ . ์ฐธ๊ณ : ์ด ์ต์ ์ ์ ์ฉ๋ ์ฃผ์์๋ง ์ ํจํฉ๋๋ค.
์.
IP6 ์ ํ๊ถ ๊ทธ๋ฃน
์ด๋ฌํ ์ต์ ์ IPv6 ๊ธฐ๋ฐ ์์ผ์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ค์์ ์ํํ ์ ์๋ ์ต์ ์ IP ์ต์ ์ ์ฐธ์กฐํ์ธ์.
IPv4 ๋ฐ IPv6 ์์ผ ๋ชจ๋์ ์ ์ฉ๋ฉ๋๋ค.
ipv6๋ง=
IPV6_V6ONLY ์์ผ ์ต์ ์ ์ค์ ํฉ๋๋ค. 0์ด๋ฉด TCP ์คํ๋ ํ์ฉํฉ๋๋ค.
๋์ผํ ํฌํธ์์ IPv4 ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ ์์คํ ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
ipv6-recvdstopts
IPV6_RECVDSTOPTS ์์ผ ์ต์ ์ ์ค์ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ค์์ ์์ ํ๊ณ ๋ก๊น ํ ์ ์์ต๋๋ค.
๋์ ์ต์ ์ด ํฌํจ๋ ๋ณด์กฐ ๋ฉ์์ง์ ๋๋ค.
ipv6-recvhoplimit
IPV6_RECVHOPLIMIT ์์ผ ์ต์ ์ ์ค์ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ค์์ ์์ ํ๊ณ ๋ก๊น ํ ์ ์์ต๋๋ค.
hoplimit๋ฅผ ํฌํจํ๋ ๋ณด์กฐ ๋ฉ์์ง.
ipv6-recvhoopts
IPV6_RECVHOPOPTS ์์ผ ์ต์ ์ ์ค์ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ค์์ ์์ ํ๊ณ ๋ก๊น ํ ์ ์์ต๋๋ค.
ํ ์ต์ ์ด ํฌํจ๋ ๋ณด์กฐ ๋ฉ์์ง์ ๋๋ค.
ipv6-recvpktinfo
IPV6_RECVPKTINFO ์์ผ ์ต์ ์ ์ค์ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ค์์ ์์ ํ๊ณ ๋ก๊น ํ ์ ์์ต๋๋ค.
๋์ ์ฃผ์์ ์ธํฐํ์ด์ค๋ฅผ ํฌํจํ๋ ๋ณด์กฐ ๋ฉ์์ง.
ipv6-์ ๋์บ์คํธ-ํ=๋งํฌ(TYPE_INT)( )
IPV6_UNICAST_HOPS ์์ผ ์ต์ ์ ์ค์ ํฉ๋๋ค. ์ด๋ ํ ์ ์ ํ(TTL)์ ์ค์ ํฉ๋๋ค.
๋๊ฐ๋ ์ ๋์บ์คํธ ํจํท.
ipv6-recvrthdr
IPV6_RECVRTHDR ์์ผ ์ต์ ์ ์ค์ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ค์์ ์์ ํ๊ณ ๋ก๊น ํ ์ ์์ต๋๋ค.
๋ผ์ฐํ ์ ๋ณด๋ฅผ ํฌํจํ๋ ๋ณด์กฐ ๋ฉ์์ง.
IPv6-tํด๋์ค
IPV6_TCLASS ์์ผ ์ต์ ์ ์ค์ ํฉ๋๋ค. ์ด๋ ๋๊ฐ๋ ์ ์ก ํด๋์ค๋ฅผ ์ค์ ํฉ๋๋ค.
ํจํท.
ipv6-recvtํด๋์ค
IPV6_RECVTCLASS ์์ผ ์ต์ ์ ์ค์ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ค์์ ์์ ํ๊ณ ๋ก๊น ํ ์ ์์ต๋๋ค.
์ ์ก ํด๋์ค๋ฅผ ํฌํจํ๋ ๋ณด์กฐ ๋ฉ์์ง.
TCP ์ ํ๊ถ ๊ทธ๋ฃน
์ด๋ฌํ ์ต์ ์ TCP ์์ผ์ ์ ์ฉ๋ ์ ์์ต๋๋ค. ๊ทธ๋ค์ setockopt()๋ฅผ ํธ์ถํ์ฌ ์๋ํฉ๋๋ค.
์ ์ ํ ๋งค๊ฐ๋ณ์.
์ฝ๋ฅดํฌ MSS(์ต๋ ์ธ๊ทธ๋จผํธ ํฌ๊ธฐ)๋ณด๋ค ์์ ํจํท์ ๋ณด๋ด์ง ์์ต๋๋ค.
์ฐ๊ธฐ ์๋ฝ
์์ ํ๋ ๋์ ํผ์ด๋ก๋ถํฐ ๋ฐ์ดํฐ๊ฐ ๋์ฐฉํ ๋๋ง ์ฐ๊ฒฐ์ ์๋ฝํฉ๋๋ค.
์ ์งCNT=
์์ผ์ ์ข ๋ฃํ๊ธฐ ์ ์ ์ฐ๊ฒฐ ์ ์ง ์๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํฉ๋๋ค. [์ ์].
ํคํผ=
์ฒซ ๋ฒ์งธ Keepalive๋ฅผ ๋ณด๋ด๊ธฐ ์ ์ ์ ํด ์๊ฐ์ ์ค์ ํฉ๋๋ค. [์ ์].
keepintvl=
๋ Keepalive ์ฌ์ด์ ๊ฐ๊ฒฉ์ ๋ค์์ผ๋ก ์ค์ ํฉ๋๋ค. [์ ์].
๋จธ๋ฌด๋ฅด๋ค2=
์์ผ์ FIN-WAIT-2 ์ํ๋ก ์ ์งํ๋ ์๊ฐ์ ์ค์ ํฉ๋๋ค. [์ ์].
mss=
์์ผ() ํธ์ถ ํ MSS(์ต๋ ์ธ๊ทธ๋จผํธ ํฌ๊ธฐ)๋ฅผ ๋ค์์ผ๋ก ์ค์ ํฉ๋๋ค. [์ ์]. ์ด๊ฒ
๊ทธ๋ฐ ๋ค์ SYN ๋๋ SYN/ACK ํจํท(์)์ ํตํด ๊ฐ์ด ํผ์ด์ ์ ์๋ฉ๋๋ค.
mss-๋ฆ์=
์ฐ๊ฒฐ์ด ์ค์ ๋ ํ ์์ผ์ MSS๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํฉ๋๋ค. [์ ์].
์ง์ฒด์์ด
RTT(์๋ณต ์๊ฐ) ์ธก์ ์ ์ํ Nagle ์๊ณ ๋ฆฌ์ฆ์ ๋๋๋ค.
RFC1323
RFC1323 TCP ์ต์ ํ์ฑํ: TCP ์ฐฝ ํฌ๊ธฐ ์กฐ์ , ์๋ณต ์๊ฐ ์ธก์ (RTTM),
๋ํ๋ ์ํ์ค ๋ฒํธ(PAWS)(AIX)๋ก๋ถํฐ ๋ณดํธํฉ๋๋ค.
ํ์ค RFC1122 ํธํ ๊ธด๊ธ ํฌ์ธํฐ ์ฒ๋ฆฌ(AIX)๋ฅผ ํ์ฑํํฉ๋๋ค.
๋๊ธฐํ =
์ฐ๊ฒฐ ์ค ์ต๋ SYN ์ฌ์ ์ก ํ์๋ฅผ ์ค์ ํฉ๋๋ค. [์ ์].
md5sig ํจํท์์ MD5 ๋ค์ด์ ์คํธ ์์ฑ์ ํ์ฑํํฉ๋๋ค(FreeBSD).
๋ฉ์ฒญํ๋ค TCP ์ต์ (FreeBSD, MacOSX) ์ฌ์ฉ์ ๋นํ์ฑํํฉ๋๋ค.
๋ ธํธ์ฌ TCP_NOPUSH ์์ผ ์ต์ ์ ์ค์ ํฉ๋๋ค(FreeBSD, MacOSX).
์๋ฃจ ๋นํ์ฑํ
์ ํ์ ์น์ธ ๊ธฐ๋ฅ(OpenBSD) ์ฌ์ฉ์ ๋นํ์ฑํํฉ๋๋ค.
์๋ช ํ์ฑํ
ํจํท์์ MD5 ๋ค์ด์ ์คํธ ์์ฑ์ ํ์ฑํํฉ๋๋ค(OpenBSD).
์ค๋จ ์๊ณ๊ฐ=
์ค์ ๋ ์ฐ๊ฒฐ์์ ์๋๋ฐฉ์ ์๋ต์ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ ์ค์ ํฉ๋๋ค.
(HP-UX).
conn-์ค๋จ-์๊ณ๊ฐ=
์ต์ด ์ ์ ์ ์๋ฒ์ ์๋ต์ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ ์ค์ ํฉ๋๋ค.
(HP-UX).
์ ์ง
์ฐ๊ฒฐ\() ๋์ค ์๋ฒ์ ์๋ต์ ๊ธฐ๋ค๋ฆฐ ํ ์๋ต์ ๋ณด๋ด๋ ์๊ฐ์ ์ค์ ํฉ๋๋ค.
์๋ก. ๊ฐ์ 150์ด ๋จ์์ด๋ฉฐ ๊ธฐ๋ณธ๊ฐ์ 75(64์ด)(TruXNUMX)์ ๋๋ค.
๋ฐ "๋ํ๋ ์ํ์ค ๋ฒํธ๋ก๋ถํฐ ๋ณดํธ" ๊ธฐ๋ฅ(Tru64)์ ํ์ฑํํฉ๋๋ค.
์ฌ์ผ๋
์ ํ์ ์น์ธ์ ํ์ฑํํฉ๋๋ค(Tru64).
์ดํํ ๋
๊ธฐ์กด ์ฐ๊ฒฐ์์ RTT ์ฌ๊ณ์ฐ์ ํ์ฉํ๋ ํ์์คํฌํ ์ต์ ์ ํ์ฑํํฉ๋๋ค.
(ํธ๋ฃจ64).
SCTP ์ ํ๊ถ ๊ทธ๋ฃน
์ด๋ฌํ ์ต์ ์ SCTP ์คํธ๋ฆผ ์์ผ์ ์ ์ฉ๋ ์ ์์ต๋๋ค.
sctp-nodelay
Nagle ์๊ณ ๋ฆฌ์ฆ์ ๋นํ์ฑํํ๋ SCTP_NODELAY ์์ผ ์ต์ ์ ์ค์ ํฉ๋๋ค.
sctp-maxseg=
SCTP_MAXSEG ์์ผ ์ต์ ์ ๋ค์์ผ๋ก ์ค์ ํฉ๋๋ค. [์ ์]. ๊ทธ๋ฐ ๋ค์ ์ด ๊ฐ์ด ์ ์๋ฉ๋๋ค.
SYN ๋๋ SYN/ACK ํจํท์ ์ฌ์ฉํ์ฌ ํผ์ด์ ๋ณด๋ ๋๋ค.
UDP, TCP, ๊ณผ SCTP ์ ํ๊ถ ๊ทธ๋ฃน
์ฌ๊ธฐ์๋ ๋คํธ์ํฌ ํฌํธ ๋ฉ์ปค๋์ฆ๊ณผ ๊ด๋ จ๋ ์ต์ ์ ์ฐพ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
UDP, TCP, SCTP ํด๋ผ์ด์ธํธ ๋ฐ ์๋ฒ ์ฃผ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์์คํฌํธ=
๋๊ฐ๋(ํด๋ผ์ด์ธํธ) TCP ๋ฐ UDP ์ฐ๊ฒฐ์ ๊ฒฝ์ฐ ์์ค๋ฅผ ์ค์ ํฉ๋๋ค. ์ฌ์ฉํ์ฌ
์ถ๊ฐ ๋ฐ์ธ๋() ํธ์ถ. TCP ๋๋ UDP ์์ ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ฉด socat๊ฐ ์ฆ์ ์ข ๋ฃ๋ฉ๋๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ์ด ์์คํฌํธ๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ์ ์ฐ๊ฒฐ์ ๋๋ค(์).
๋ก์ฐํฌํธ
์ด ์ต์ ์ ์ฌ์ฉํ๋ ๋ฐ์ (ํด๋ผ์ด์ธํธ) TCP ๋ฐ UDP ์ฐ๊ฒฐ์ ์ฌ์ฉ๋์ง ์์ ์์ ํ ๋น์ ์ฌ์ฉํฉ๋๋ค.
640๊ณผ 1023 ์ฌ์ด์ ์์ค ํฌํธ ํฌํจ UNIX ํด๋์ค ์ด์ ์ฒด์ ์์๋ ์ด
๋ฃจํธ ๊ถํ์ด ํ์ํ๋ฏ๋ก ํด๋ผ์ด์ธํธ ํ๋ก์ธ์ค๊ฐ ์น์ธ๋์์์ ๋ํ๋ ๋๋ค.
๋ก์ปฌ ๋ฃจํธ๋ก. ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด TCP ๋ฐ UDP ์์ ์ฃผ์๊ฐ ์ฆ์ ์ข ๋ฃ๋ฉ๋๋ค.
ํด๋ผ์ด์ธํธ๊ฐ sourceport <= 1023์ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ ์ฐ๊ฒฐ. ์ด ๋ฉ์ปค๋์ฆ์
์ด๋ค ์ํฉ์์๋ ์ ํ๋ ๊ถํ์ ์ ๊ณตํฉ๋๋ค.
SOCKS ์ ํ๊ถ ๊ทธ๋ฃน
SOCKS ์ ํ ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ผ๋ถ ์๋ง ๊ด๋ จ ์ต์ ์ ์ค์ ํ ์ ์์ต๋๋ค.
์๋งํฌํธ= ์๋น์ค>
์๋ง ์๋ฒ ํฌํธ์ ๋ํ ๊ธฐ๋ณธ "์๋ง" ์๋น์ค ๋๋ ํฌํธ 1080์ ๋ค์์ผ๋ก ์ฌ์ ์ํฉ๋๋ค.
.
์๋ง์ฌ์ฉ์=
๋ณด๋ธ๋ค ์๋ง ์๋ฒ์ ๋ํ ์ฌ์ฉ์ ์ด๋ฆ ํ๋์ [๋ฌธ์์ด]. ๊ธฐ๋ณธ๊ฐ์
์ค์ ์ฌ์ฉ์ ์ด๋ฆ($LOGNAME ๋๋ $USER)(์)
HTTP ์ ํ๊ถ ๊ทธ๋ฃน
HTTP ์ ํ ์ฃผ์์ ํจ๊ป ์ ๊ณตํ ์ ์๋ ์ต์ ์ ๋๋ค. ํ์ฌ ์ ์ผํ HTTP ์ฃผ์
๊ตฌํ๋ ๊ฒ์ ํ๋ก์ ์ฐ๊ฒฐ์ ๋๋ค.
ํ๋ก์ํฌํธ= ์๋น์ค>
๊ธฐ๋ณธ HTTP ํ๋ก์ ํฌํธ 8080์ ๋ค์์ผ๋ก ์ฌ์ ์ํฉ๋๋ค. .
๋ฌด์
HTTP ํ๋กํ ์ฝ์์๋ ์ค ์ข ๊ฒฐ์๋ก CR+NL์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ํ๋ก์ ์๋ฒ์ธ ๊ฒฝ์ฐ
์ด ํ์ค์ ์๋ฐํ๋ฉด socat์ด ๋ต๋ณ์ ์ดํดํ์ง ๋ชปํ ์๋ ์์ต๋๋ค. ์ด ์ต์ ์ ๋ค์์ ์ง์ํฉ๋๋ค.
socat์ NL์ ์ค ์ข ๊ฒฐ์๋ก ํด์ํ๊ณ ๋๋ต์์ CR์ ๋ฌด์ํฉ๋๋ค.
๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ socat์ CR+NL์ ํ๋ก์์ ๋ณด๋ ๋๋ค.
ํ๋ก์ ์ธ์ฆ= :
ํ๋ก์ ์๋ฒ์ "๊ธฐ๋ณธ" ์ธ์ฆ์ ์ ๊ณตํฉ๋๋ค. ์ต์ ์ ๋ํ ์ธ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
base64๋ก ์ธ์ฝ๋ฉ๋ ํ์์ "Proxy-Authorization: Base" ํค๋์ ํจ๊ป ์ฌ์ฉ๋ฉ๋๋ค.
์ฐธ๊ณ : ์ฌ์ฉ์ ์ด๋ฆ๊ณผ ๋น๋ฐ๋ฒํธ๋ ๋ก์ปฌ ์ปดํจํฐ์ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ํ์๋ฉ๋๋ค.
ํ๋ก์ธ์ค ๋ชฉ๋ก; ์ฌ์ฉ์ ์ด๋ฆ๊ณผ ๋น๋ฐ๋ฒํธ๋ ์ํธํ๋์ง ์์ ์ํ๋ก ํ๋ก์ ์๋ฒ๋ก ์ ์ก๋ฉ๋๋ค.
(base64๋ก ์ธ์ฝ๋ฉ๋จ) ์ค๋ํ๋ ์ ์์ต๋๋ค.
ํด๊ฒฐ
๊ธฐ๋ณธ์ ์ผ๋ก socat๋ ๋์์ด ํฌํจ๋ CONNECT ์์ฒญ์ ํ๋ก์์ ๋ณด๋ ๋๋ค.
ํธ์คํธ ์ด๋ฆ. ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด socat๋ ํธ์คํธ ์ด๋ฆ์ ๋ก์ปฌ๋ก ํ์ธํ๊ณ IP๋ฅผ ๋ณด๋ ๋๋ค.
์ฃผ์. RFC 2396์ ๋ฐ๋ฅด๋ฉด ์ด๋ฆ ํ์ธ์ IPv4๋ก๋ง ์ด๋ฃจ์ด์ง๋๋ค.
์ฃผ์๊ฐ ๊ตฌํ๋์์ต๋๋ค.
RANGE ์ ํ๊ถ ๊ทธ๋ฃน
์ด ์ต์ ์ ์ฐ๊ฒฐ ํด๋ผ์ด์ธํธ์ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํด์ผ ํ๋์ง ํ์ธํฉ๋๋ค. ๊ทธ๋ค์ ์ ์ฉ๋ ์ ์์ต๋๋ค
๋คํธ์ํฌ ์์ผ์ ์์ ํ๊ณ ์์ ํฉ๋๋ค. tcp-wrappers ์ต์ ์ด ์ด ๊ทธ๋ฃน์ ์ํฉ๋๋ค.
๋ฒ์=
์ฐ๊ฒฐ์ ์๋ฝํ ํ ํผ์ด๊ฐ ๋ด๋ถ์ ์๋์ง ํ ์คํธํฉ๋๋ค. ๋ฒ์. IPv4์ ๊ฒฝ์ฐ
์ฃผ์, ์ฃผ์ ๋ฒ์๋ ์ฃผ์/๋นํธ ํ์์ ์ทจํฉ๋๋ค(์: 10.0.0.0/8).
์ฃผ์:๋ง์คํฌ, ์: 10.0.0.0:255.0.0.0(์); IPv6์ ๊ฒฝ์ฐ
[ip6-์ฃผ์/๋นํธ], ์: [::1/128]. ํด๋ผ์ด์ธํธ ์ฃผ์๊ฐ ์ผ์นํ์ง ์๋ ๊ฒฝ์ฐ, ์์บฃ
๊ฒฝ๊ณ ๋ฅผ ๋ฐํํ๊ณ ๊ณ์ ์ฒญ์ทจ/์์ ํฉ๋๋ค.
TCP๋ฉ[= ]
Wietse Venema์ libwrap(tcpd) ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ๊ฐ ํ์ฉ๋๋์ง ํ์ธํฉ๋๋ค.
์ฐ๊ฒฐ. ๊ตฌ์ฑ ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. /etc/hosts.allow ๊ณผ /etc/hosts.deny ์ฉ
๊ธฐ๋ณธ๊ฐ, ์์ธํ ๋ด์ฉ์ "man 5 ํธ์คํธ_์ก์ธ์ค"๋ฅผ ์ฐธ์กฐํ์ธ์. ์ ํ ์ฌํญ (์ ํ
๋ฌธ์์ด)์ ๋ฐ๋ชฌ ํ๋ก์ธ์ค ์ด๋ฆ(์)์ผ๋ก ๋ํผ ํจ์์ ์ ๋ฌ๋ฉ๋๋ค. ๋ง์ฝ์
์๋ตํ๋ฉด socats ํธ์ถ์ ๊ธฐ๋ณธ ์ด๋ฆ(argv[0])์ด ์ ๋ฌ๋ฉ๋๋ค. ๋ ๋ค tcpwrap์ธ ๊ฒฝ์ฐ
๋ฒ์ ์ต์ ์ด ์ฃผ์์ ์ ์ฉ๋๋ ๊ฒฝ์ฐ ๋ ์กฐ๊ฑด์ ๋ชจ๋ ์ถฉ์กฑํด์ผ ํฉ๋๋ค.
์ฐ๊ฒฐ์ ํ์ฉํฉ๋๋ค.
ํ์ฉ ํ ์ด๋ธ=
/etc/hosts.allow ๋์ ์ง์ ๋ ํ์ผ์ ์ฌ์ฉํฉ๋๋ค.
๊ฑฐ๋ถ ํ ์ด๋ธ=
/etc/hosts.deny ๋์ ์ง์ ๋ ํ์ผ์ ์ฌ์ฉํฉ๋๋ค.
tcpwrap-๋ฑ=
์ง์ ๋ ๋๋ ํฐ๋ฆฌ์์ ํธ์คํธ.ํ์ฉ ๋ฐ ํธ์คํธ ๊ฑฐ๋ถ๋ฅผ ์ฐพ์ต๋๋ค. ๋ค์์ ์ํด ์ฌ์ ์๋จ
์ต์ ํธ์คํธ ํ์ฉ ๋ฐ ํธ์คํธ ๊ฑฐ๋ถ.
๋ค์ด๋ด ์ ํ๊ถ ๊ทธ๋ฃน
์ฒญ์ทจ ์์ผ๊ณผ ๊ด๋ จ๋ ์ต์ ์ ๋๋ค.
๋ฐฑ๋ก๊ทธ=
Listen() ์์คํ ํธ์ถ๊ณผ ํจ๊ป ์ ๋ฌ๋ ๋ฐฑ๋ก๊ทธ ๊ฐ์ ๋ค์์ผ๋ก ์ค์ ํฉ๋๋ค. [์ ์].
๊ธฐ๋ณธ๊ฐ์ 5์ ๋๋ค.
์ต๋ ์ด๋ฆฐ์ด=
๋์ ํ์ ํ๋ก์ธ์ค ์ [int]๋ฅผ ์ ํํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ ์ ํ์ด ์์ต๋๋ค.
์์ด ์ ํ๊ถ ๊ทธ๋ฃน
ํ์ ํ๋ก์ธ์ค๋ฅผ ํตํด ์ฌ๋ฌ ์ฐ๊ฒฐ์ด ์๋ ์ฃผ์์ ๋ํ ์ต์ ์ ๋๋ค.
ํฌํฌ ์ฐ๊ฒฐ์ ์ค์ ํ ํ ํ์ ํ๋ก์ธ์ค์์ ํด๋น ์ฑ๋์ ์ฒ๋ฆฌํ๊ณ ์ ์งํฉ๋๋ค.
์์ ํ๋ก์ธ์ค๋ ์ฒญ์ทจ ๋๋ ์์ ์ ํตํด ๋ ๋ง์ ์ฐ๊ฒฐ์ ์์ฑํ๋ ค๊ณ ์๋ํฉ๋๋ค.
๋ฃจํ๋ก ์ฐ๊ฒฐํ์ฌ(์์ )
OPENSSL-CONNECT์ OPENSSL-LISTEN์ ์ค์ ๋ก ํ์ ํญ๋ชฉ์ ๋ถ๊ธฐํ ๋ ๋ค๋ฆ ๋๋ค.
OPENSSL-LISTEN ํฌํฌ ์ ์ SSL ํธ๋์ ฐ์ดํฌ, OPENSSLSSL-CONNECT ํฌํฌ
๋์ค์. RETRY ๋ฐ FOREVER ์ต์ ์ ํ์ ํ๋ก์ธ์ค์์ ์์๋์ง ์์ต๋๋ค.
์ผ๋ถ ์ด์ ์ฒด์ (์: FreeBSD)์์๋ ์ด ์ต์ ์ด UDP-LISTEN์ ๋ํด ์๋ํ์ง ์์ต๋๋ค.
๊ตฌ์ .
EXEC ์ ํ๊ถ ๊ทธ๋ฃน
ํ๋ก๊ทธ๋จ์ ํธ์ถํ๋ ์ฃผ์์ ๋ํ ์ต์ ์ ๋๋ค.
๊ฒฝ๋ก=
ํ๋ก๊ทธ๋จ ๊ฒ์์ ์ํด PATH ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ ์ํฉ๋๋ค. .
์ด $PATH ๊ฐ์ ํ์ ํ๋ก์ธ์ค์๋ ์ ํจํฉ๋๋ค.
๋ก๊ทธ์ธ execvp() ํธ์ถ์ ์ ๋์ฌ argv[0]์ '-'๊ฐ ๋ถ์ผ๋ฏ๋ก ์์ด ๋ค์๊ณผ ๊ฐ์ด ๋์ํ๊ฒ ๋ฉ๋๋ค.
๋ก๊ทธ์ธ ์.
ํฌํฌ ์ ํ๊ถ ๊ทธ๋ฃน
EXEC ๋๋ SYSTEM ์ฃผ์๋ ํ์ ํ๋ก์ธ์ค๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก๊ทธ๋จ์ ํธ์ถํ๊ณ ์ฌ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํฉ๋๋ค.
์์บฃ ๊ทธ๋ฆฌ๊ณ ํ๋ก๊ทธ๋จ. ํ๋ก์ธ์ค ๊ฐ ํต์ ๋ฉ์ปค๋์ฆ์ ๋ค์ ์ฌํญ์ ๋ฐ๋ผ ์ํฅ์ ๋ฐ์ ์ ์์ต๋๋ค.
๋ค์ ์ต์ . ๊ธฐ๋ณธ์ ์ผ๋ก ์์ผ ์()์ด ์์ฑ๋์ด stdin ๋ฐ stdout์ ํ ๋น๋ฉ๋๋ค.
์์ ํ๋ก์ธ์ค์ stderr์ ์์ ํ๋ก์ธ์ค์์ ์์๋ฉ๋๋ค. ์์บฃ ํ๋ก์ธ์ค์ ์์ด
ํ๋ก์ธ์ค๋ ๊ธฐ๋ณธ socat ํ๋ก์ธ์ค์ ํต์ ํ๊ธฐ ์ํด ํ์ผ ์ค๋ช ์ 0๊ณผ 1์ ์ฌ์ฉํฉ๋๋ค.
๋ ธํฌํฌ ํ๋ก๊ทธ๋จ ์คํ์ ์ํด ํ์ ํ๋ก์ธ์ค๋ฅผ ๋ถ๊ธฐํ์ง ์๊ณ ๋์ execvp\()๋ฅผ ํธ์ถํ๊ฑฐ๋
์ค์ socat ์ธ์คํด์ค์์ ์ง์ system\()์ ์์ฑํฉ๋๋ค. ์ด๋ ์ค๋ฒํค๋๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
ํ๋ก๊ทธ๋จ๊ณผ ๋๋ฃ ๊ฐ์ ๋ ๋ค๋ฅธ ํ๋ก์ธ์ค์ด์ง๋ง
์ ํ:
o ์ด ์ต์ ์ ๋ ๋ฒ์งธ์๋ง ์ ์ฉํ ์ ์์ต๋๋ค. ์์บฃ ์ฃผ์.
o ์ด์ค์ฃผ์์ ์ผ๋ถ์๋ ์ ์ฉํ ์ ์์ต๋๋ค.
o ์ฒซ ๋ฒ์งธ socat ์ฃผ์๋ OPENSSL ๋๋ READLINE์ผ ์ ์์ต๋๋ค.
o socat ์ต์ -b, -t, -D, -l, -v, -x๊ฐ ์ธ๋ชจ ์๊ฒ ๋ฉ๋๋ค.
o ๋ ์ฃผ์ ๋ชจ๋์ ๋ํดignoreof, cr ๋ฐ crnl ์ต์ ์ด ์ธ๋ชจ ์๊ฒ ๋ฉ๋๋ค.
o ๋ ๋ฒ์งธ ์ฃผ์(nofork ์ต์ ์ด ์๋ ์ฃผ์)์ ๊ฒฝ์ฐ ์ถ๊ฐ ์ต์ , cloexec,
Flock, user, group, mode, nonblock, perm-late, setlk ๋ฐ setpgid๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ ์ฉ๋. ํ์ง๋ง ์ด๋ค ์ค ์ผ๋ถ๋ ์ฒซ ๋ฒ์งธ ์ฃผ์์์ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
ํ์ดํ ์์ผ ๋์ ํ๋ก์ธ์ค ๊ฐ ํต์ ์ ์ํด ๋ช ๋ช ๋์ง ์์ ํ์ดํ ์์ ๋ง๋ญ๋๋ค.
ํ ์์ด๋ค.
์คํํผํฐ
๋ค์์ผ๋ก ์์ฑ๋ ์์ฌ ํฐ๋ฏธ๋์ ์ฌ์ฉํ์ฌ ํ์ ํ๋ก์ธ์ค์์ ํต์ ์ ์ค์ ํฉ๋๋ค.
๊ธฐ๋ณธ๊ฐ(socketpair ๋๋ ptmx) ๋์ openpty()๋ฅผ ์ฌ์ฉํฉ๋๋ค.
ptmx ๋ค์์ ์ํด ์์ฑ๋ ์์ฌ ํฐ๋ฏธ๋์ ์ฌ์ฉํ์ฌ ํ์ ํ๋ก์ธ์ค์์ ํต์ ์ ์ค์ ํฉ๋๋ค.
์ด๊ธฐ /dev/ptmx or /dev/ptc ๊ธฐ๋ณธ๊ฐ(์์ผ ์) ๋์ .
pty ๋์ ์์ฌ ํฐ๋ฏธ๋์ ์ฌ์ฉํ์ฌ ํ์ ํ๋ก์ธ์ค์์ ํต์ ์ ์ค์ ํฉ๋๋ค.
์์ผ ์. ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉ์ปค๋์ฆ์ผ๋ก pty๋ฅผ ์์ฑํฉ๋๋ค. openpty์ ptmx๊ฐ ์๋ ๊ฒฝ์ฐ
๋ ๋ค ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ POSIX์ ํธํ๋๋ฏ๋ก ptmx๋ฅผ ์ฌ์ฉํฉ๋๋ค(์).
ctty pty๋ฅผ ํ์ ํ๋ก์ธ์ค์ ์ ์ด tty๋ก ๋ง๋ญ๋๋ค(์).
ํ์ค ์ค๋ฅ stderr๋ฅผ dup()์ผ๋ก ๋ง๋ค์ด ํ์ ํ๋ก์ธ์ค์ stderr์ ์ถ๋ ฅ ์ฑ๋๋ก ๋ณด๋ ๋๋ค.
ํ์ค ์ถ๋ ฅ(์์ ).
fdin=
ํ์ผ ์ค๋ช ์์ ํ์ ํ๋ก์ธ์ค ์ ๋ ฅ ์ฑ๋์ ํ ๋นํฉ๋๋ค. ๋์ ์
ํ์ค์ ๋ ฅ(0). ํ์ ํ๋ก์ธ์ค์์ ์์๋ ํ๋ก๊ทธ๋จ์ ์ฝ๊ธฐ ์ํด ์ด fd๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
๋ฐ์ดํฐ ์์บฃ (์).
fdout=
ํ์ผ ์ค๋ช ์์ ํ์ ํ๋ก์ธ์ค ์ถ๋ ฅ ์ฑ๋์ ํ ๋นํฉ๋๋ค. ๋์ ์
ํ์ค ์ถ๋ ฅ(1). ํ์ ํ๋ก์ธ์ค์์ ์์๋ ํ๋ก๊ทธ๋จ์ ์ฐ๊ธฐ๋ฅผ ์ํด ์ด fd๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
๋ฐ์ดํฐ ์์บฃ (์).
ํ์จ, ์๋ช , ์๊ทธํดํธ
์๋ค ์์บฃ ์ด ์ ํ์ ์ ํธ๋ฅผ ํ์ ํ๋ก์ธ์ค์ ์ ๋ฌํฉ๋๋ค. ์ด ์ฃผ์๊ฐ ์์ผ๋ฉด
์ต์ , socat์ ์ด๋ฌํ ์ ํธ์์ ์ข ๋ฃ๋ฉ๋๋ค.
ํ ๋ฅด๋ฏธ์ค์ค ์ ํ๊ถ ๊ทธ๋ฃน
tty์์ ์๋ํ๋ ์ฃผ์(์: stdio, file:/dev/tty, exec:...,pty)์ ๊ฒฝ์ฐ ํฐ๋ฏธ๋
UN*X termios ๋ฉ์ปค๋์ฆ์ ์ ์๋ ๋งค๊ฐ๋ณ์๋ ์ฃผ์ ์ต์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋งค๊ฐ๋ณ์. ๋ํํ ํฐ๋ฏธ๋์ ๋งค๊ฐ๋ณ์ ๋ณ๊ฒฝ์ ์ ์ํ์ธ์.
์ดํ์๋ ์ ํจํ๋ค ์์บฃ์ ์ข ๋ฃ์ด๋ฏ๋ก "reset" ๋๋ "stty"๋ฅผ ์ ๋ ฅํด์ผ ํ ์๋ ์์ต๋๋ค.
๋์ค์ ์ ธ์์ sane"์ ์ ๋ ฅํฉ๋๋ค. PTY ์ต์ ์ด ์๋ EXEC ๋ฐ SYSTEM ์ฃผ์์ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ต์ ์ ํ์ ํ๋ก์ธ์ค์ ์ํด pty์ ์ ์ฉ๋ฉ๋๋ค.
b0 ํฐ๋ฏธ๋์ ๋ถ๋ฆฌํฉ๋๋ค.
b19200 ์ง๋ ฌ ํ์ ์๋๋ฅผ 19200๋ณด๋๋ก ์ค์ ํฉ๋๋ค. ๋ค๋ฅธ ์๊ธ๋ ๊ฐ๋ฅํฉ๋๋ค. ์ฌ์ฉ
socat -hh |grep ' b[1-9]' ์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์ง์๋๋ ๋ชจ๋ ์๋๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
๊ตฌํ.
์ฐธ๊ณ : ์ผ๋ถ ์ด์ ์ฒด์ ์์๋ ์ด๋ฌํ ์ต์ ์ ์ฌ์ฉํ์ง ๋ชปํ ์๋ ์์ต๋๋ค. ispeed๋ฅผ ์ฌ์ฉํ๊ฑฐ๋
๋์ ์๋๋ฅผ ๋์ด์ญ์์ค.
์์ฝ=
๋ก์ปฌ ์์ฝ๋ฅผ ํ์ฑํํ๊ฑฐ๋ ๋นํ์ฑํํฉ๋๋ค.
์ด์ฝ=
ํ์ค ๋ชจ๋๋ฅผ โโ์ค์ ํ๊ฑฐ๋ ์ง์ ๋ผ์ธ ๋ฒํผ๋ง ๋ฐ ์ผ๋ถ ํน์ ๋ฌธ์๋ฅผ ํ์ฑํํฉ๋๋ค.
์ด๊ฐ์ด ๋ฒ์ด ์ง ์์ ๋ชจ๋๋ฅผ ์ค์ ํ์ฌ ๊ฑฐ์ ์ฒ๋ฆฌ๋์ง ์์ ์ํ๋ก ์ ๋ ฅ ๋ฐ ์ถ๋ ฅ์ ์ ๋ฌํฉ๋๋ค. ์ด ์ต์ ์
๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. ๋์ rawer ๋๋ cfmakeraw ์ต์ ์ ์ฌ์ฉํ์ธ์.
๋ ๊ฒ ํฐ๋ฏธ๋์ ์์ ์ต์ ๋ณด๋ค ์์๋ก ๋ง๋ญ๋๋ค. ์ด ์ต์ ์ ์์์ ์ผ๋ก ์์ฝ๋ฅผ ๋๋๋ค.
(์).
cfmakeraw
cfmakeraw()๋ฅผ ํธ์ถํ๊ฑฐ๋ ์ด ํธ์ถ์ ์๋ฎฌ๋ ์ด์ ํ์ฌ ์์ ๋ชจ๋๋ฅผ ์ค์ ํฉ๋๋ค. ์ด ์ต์
์์์ ์ผ๋ก ์์ฝ๋ฅผ ๋๋๋ค.
๋ฌด์=
break ๋ฌธ์(์: ^C)๋ฅผ ๋ฌด์ํ๊ฑฐ๋ ํด์ํฉ๋๋ค.
๋ธํจํธ=
bs0
bs1
bsdly=<0|1>
ํด๋ก์ปฌ=
cr0
cr1
cr2
cr3
์บ๋ฆฌ์ง ๋ฆฌํด ์ง์ฐ์ ๊ฐ๊ฐ 0, 1, 2 ๋๋ 3์ผ๋ก ์ค์ ํฉ๋๋ค. 0์ ์ง์ฐ์ด ์์์ ์๋ฏธํ๊ณ ,
๋ค๋ฅธ ๊ฐ์ ํฐ๋ฏธ๋์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
crdly=<0|1|2|3>
ํฌ๋ ์=
crtscts=
cs5
cs6
cs7
cs8
๋ฌธ์ ํฌ๊ธฐ๋ฅผ ๊ฐ๊ฐ 5, 6, 7 ๋๋ 8๋นํธ๋ก ์ค์ ํฉ๋๋ค.
csize=<0|1|2|3>
cstopb=
์ ์ง ๋นํธ๋ฅผ XNUMX๊ฐ๊ฐ ์๋ XNUMX๊ฐ๋ก ์ค์ ํฉ๋๋ค.
dsusp=
ํ์ฌ ์ ๊ฒฝ์ ์ผ์ ์ค๋จํ๋ VDSUSP ๋ฌธ์์ ๊ฐ์ ์ค์ ํฉ๋๋ค.
์์ ์ฒ๋ฆฌํ๊ณ ๋ค์ ํ์ฑํํฉ๋๋ค(Linux๋ฅผ ์ ์ธํ ๋ชจ๋).
echoctl=
๋ชจ์ ํ๊ธฐ๋ฒ์ ์์ฝ ์ ์ด ๋ฌธ์(์: ^A)
์์ฝ=
์์ฝํฌ=
์์ฝ์ผ=
์์ฝ๋ฌ=
echoprt=
์ =
์์ฌ=
์์ฌ2=
์ง์ฐ๋ค=
๋ฒ๋ฆฌ๋ค=
ff0
ff1
์ ๋ง=
ํ๋ฌ์=
hupcl=
ICRNL=
iexten=
๋ฌด์=
๋ฌด์=
์์ด๋งฅ์ค๋ฒจ=
ํฌํจ=
์ธํฉ=
๋ด๋ถ=
isig=
์๋=
์ด ๋ผ์ธ์ ๋ค์ด์ค๋ ๋ฐ์ดํฐ์ ์ ์ก ์๋๋ฅผ ์ค์ ํฉ๋๋ค.
์ฐธ์กฐ: ospeed, b19200
istrip=
iuclc=
์ต์ฌ๋=
ixoff=
์ต์จ=
์ฃฝ์ด๋ค=
๋ค์=
์ต์=
nl0 ๊ฐํ ์ง์ฐ์ 0์ผ๋ก ์ค์ ํฉ๋๋ค.
nl1
์ ํ=
noflsh=
ocrnl=
ofdel=
ofill=
์ฌ์ฟ =
onlcr=
onlret=
onocr=
๋ฐ๋=
์ถ๋ ฅ ์ฒ๋ฆฌ๋ฅผ ํ์ฑํํ๊ฑฐ๋ ๋นํ์ฑํํฉ๋๋ค. ์๋ฅผ ๋ค์ด NL์ CR-NL๋ก ๋ณํํฉ๋๋ค.
์๋=
์ด ๋ผ์ธ์์ ๋๊ฐ๋ ๋ฐ์ดํฐ์ ์ ์ก ์๋๋ฅผ ์ค์ ํฉ๋๋ค.
์ฐธ์กฐ: ispeed, b19200
parenb=
์ถ๋ ฅ์์ ํจ๋ฆฌํฐ ์์ฑ์ ํ์ฑํํ๊ณ ์ ๋ ฅ์์ ํจ๋ฆฌํฐ ๊ฒ์ฌ๋ฅผ ํ์ฑํํฉ๋๋ค.
parmrk=
ํจ๋ฌ๋ก๋=
ํ๋=
๊ทธ๋ง๋๋ค=
์ฌ์ธ์=
์ ์ ์ ์ ํฐ๋ฏธ๋์ ์ ์ฉํ ๊ธฐ๋ณธ ์ํ์ ๊ฐ์ ์ํ๋ก ๋ง๋ญ๋๋ค.
์์=
์ค์ง=
์์ฌ=
SWTC=
tab0
tab1
tab2
tab3
๊ฐ๋ณ๊ฒ=
์๊ฐ=
์ค์งํ๋ค=
vt0
vt1
vtdly=
์๋ผ์ธ=
xcase=
xtab
์์ดํ์ฌ
UNIX System V STREAMS๋ฅผ ์ฌ์ฉํ๋ฉด ์คํ์์ ๋ชจ๋ ๋๋ผ์ด๋ฒ๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
i-ํธ์=
UNIX System V STREAMS๋ฅผ ์ฌ์ฉํ๋ฉด ์ง์ ๋ ์ด๋ฆ(๋ฌธ์์ด)์ผ๋ก ๋๋ผ์ด๋ฒ(๋ชจ๋)๋ฅผ ํธ์ํฉ๋๋ค.
์คํ์. ์๋ฅผ ๋ค์ด, Solaris์์ ๋ฌธ์ ์ฅ์น๊ฐ
termios ๋ฑ์ ์ง์ํ๋ ๊ฒฝ์ฐ ๋ค์ ์ต์ ์ ์ฌ์ฉํ์ญ์์ค.
i-pop-all,i-push=ptem,i-push=ldterm,i-push=ttcompat
PTY ์ ํ๊ถ ๊ทธ๋ฃน
์ด๋ฌํ ์ต์ ์ pty ์ฃผ์ ์ ํ๊ณผ ํจ๊ป ์ฌ์ฉํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค.
๋งํฌ=
์ค์ ์์ฌ ํฐ๋ฏธ๋(pty)์ ๊ฐ๋ฆฌํค๋ ๊ธฐํธ ๋งํฌ๋ฅผ ์์ฑํฉ๋๋ค. ์ด๊ฒ
ptys๊ฐ ์ด๋ ์ ๋ ์์ฑ๋๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
์์ธกํ ์ ์๋ ์ด๋ฆ์ผ๋ก ์ธํด socat ์์ฑ pty์ ์ง์ ์ก์ธ์คํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค.
์๋์ผ๋ก. ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์๋ ํ์ผ์์ "์์ " ์ง์ ์ ์ง์ ํ ์ ์์ต๋๋ค.
์ค์ pty์ ์ก์ธ์คํ๋ ๋ฐ ๋์์ด ๋๋ ๊ณ์ธต ๊ตฌ์กฐ(์) ์ผ๋ก ์์ํ๋ ์์บฃ
๋ฒ์ 1.4.3์์๋ ์ฃผ์๊ฐ ๋ซํ๋ฉด ์ฌ๋ณผ๋ฆญ ๋งํฌ๊ฐ ์ ๊ฑฐ๋ฉ๋๋ค.
์ต์ ์ฐ๊ฒฐ ํด์ -๋ซ๊ธฐ).
๋ ธ์
ํ๋ก์ธ์ค๊ฐ pty์ ์ฌ๋ ์ด๋ธ ์ธก์ ์ด ๋๊น์ง ๊ฐ๋ฐฉ ๋จ๊ณ๋ฅผ ์ฐจ๋จํฉ๋๋ค. ๋๊ฐ,
socat์ ๋ค์ ์ฃผ์๋ฅผ ์ด๊ฑฐ๋ ๋ค์์ ์ฌ์ฉํ์ฌ pty๋ฅผ ์์ฑํ ํ ๊ณ์๋ฉ๋๋ค.
์ ์ก ๋ฃจํ์ ์ง์ ํฉ๋๋ค. wait-slave ์ต์ ์ ์ฌ์ฉํ๋ฉด socat๋
ํ๋ก์ธ์ค๋ ๊ณ์ํ๊ธฐ ์ ์ pty์ ์ฌ๋ ์ด๋ธ ์ธก์ ์ฝ๋๋ค. ์ด ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ง ์๋ํฉ๋๋ค.
์ด์ ์ฒด์ ๊ฐ poll() ์์คํ ํธ์ถ์ ์ ๊ณตํ๋ ๊ฒฝ์ฐ. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ๋ค์์ ๋ฌ๋ ค ์์ต๋๋ค.
pty์ ๋ฌธ์ํ๋์ง ์์ ๋์์ด๋ฏ๋ก ๋ชจ๋ ์ด์ ์ฒด์ ์์ ์๋ํ์ง ์์ต๋๋ค. ๊ทธ๊ฒ
Linux, FreeBSD, NetBSD ๋ฐ Tru64์์ openpty๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ๊ณต์ ์ผ๋ก ํ ์คํธ๋์์ต๋๋ค.
pty-๊ฐ๊ฒฉ=
wait-slave ์ต์ ์ด ์ค์ ๋๋ฉด socat์ ์ฃผ๊ธฐ์ ์ผ๋ก HUP ์ํ๋ฅผ ํ์ธํฉ๋๋ค.
pty์ ์ฌ๋ ์ด๋ธ ์ธก์ด ์ด๋ ค ์๋์ง ํ์ธํ๋ ค๋ฉด poll()์ ์ฌ์ฉํ์ญ์์ค. ๊ธฐ๋ณธ ํด๋ง
๊ฐ๊ฒฉ์ 1์ด์ ๋๋ค. ์ด ๊ฐ์ ๋ณ๊ฒฝํ๋ ค๋ฉด pty-interval ์ต์ [timeval]์ ์ฌ์ฉํ์ญ์์ค.
์คํ SSL ์ ํ๊ถ ๊ทธ๋ฃน
์ด๋ฌํ ์ต์ ์ openssl ๋ฐ openssl-listen ์ฃผ์ ์ ํ์ ์ ์ฉ๋ฉ๋๋ค.
์ํธ=
์ฐ๊ฒฐ์ ์ฌ์ฉํ ์ ์๋ ์ํธ ๋ชฉ๋ก์ ์ ํํฉ๋๋ค. ๋งค๋ด์ผ ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ธ์
์ํธ, ์น์ CIPHER LIST FORMAT, ๊ตฌ๋ฌธ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ณด๋ ค๋ฉด
๊ฐ ๋ฐ ๊ธฐ๋ณธ๊ฐ .
์ฌ๋ฌ ์ํธ ๋ฌธ์์ด์ด ':'์ผ๋ก ๊ตฌ๋ถ๋์ด ์ ๊ณต๋ ์ ์์ต๋๋ค. ๋ช ๊ฐ์ง ๊ฐ๋จํ ์ํธ ๋ฌธ์์ด:
3DES XNUMX์ค DES๊ฐ ํฌํจ๋ ์ํธ ์ ํ๊ตฐ์ ์ฌ์ฉํฉ๋๋ค.
MD5 MD5์ ํจ๊ป ์ํธํ ์ ํ๊ตฐ์ ์ฌ์ฉํฉ๋๋ค.
aNULL ์ธ์ฆ ์์ด ์ํธ ์ ํ๊ตฐ์ ์ฌ์ฉํฉ๋๋ค.
NULL ์ํธํ๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค.
HIGH "๋์" ์ํธํ ๊ธฐ๋ฅ์ ๊ฐ์ถ ์ํธ ์ ํ๊ตฐ์ ์ฌ์ฉํฉ๋๋ค. ํผ์ด๋ ๋ค์์ ์ง์ํด์ผ ํฉ๋๋ค.
์์ฑ์ ์ ํํ์ง ์์ผ๋ฉด ํ์์ด ์คํจํฉ๋๋ค.
๋ฐฉ๋ฒ=
์ฌ์ฉํ ํ๋กํ ์ฝ ๋ฒ์ ์ ์ค์ ํฉ๋๋ค. ์ ํจํ ๋ฌธ์์ด(๋์๋ฌธ์ ๊ตฌ๋ถ ์ ํจ)์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
SSL2 SSL ํ๋กํ ์ฝ ๋ฒ์ 2๋ฅผ ์ ํํฉ๋๋ค.
SSL3 SSL ํ๋กํ ์ฝ ๋ฒ์ 3๋ฅผ ์ ํํฉ๋๋ค.
SSL23 ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฐ์ฅ ์ ํฉํ SSL ๋๋ TLS ํ๋กํ ์ฝ์ ์ ํํ์ธ์. ์ด ์ต์ ์ด ๊ธฐ๋ณธ๊ฐ์ธ ๊ฒฝ์ฐ
์ ๊ณต๋์ง ์์ต๋๋ค.
TLS1 TLS ํ๋กํ ์ฝ ๋ฒ์ 1์ ์ ํํฉ๋๋ค.
TLS1.1 TLS ํ๋กํ ์ฝ ๋ฒ์ 1.1์ ์ ํํฉ๋๋ค.
TLS1.2 TLS ํ๋กํ ์ฝ ๋ฒ์ 1.2์ ์ ํํฉ๋๋ค.
DTLS1 DTLS ํ๋กํ ์ฝ ๋ฒ์ 1์ ์ ํํฉ๋๋ค.
ํ์ธ=
ํผ์ด์ ์ธ์ฆ์ ํ์ธ์ ์ ์ดํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 1(์ฐธ)์ ๋๋ค. ํ์ธ ๋นํ์ฑํ ์ค
๋ชจ๋ ์ฌ๋์ ์ํด ์์ผ์ ์ด์ด ์ํธํ๋ฅผ ์ธ๋ชจ์๊ฒ ๋ง๋ค ์ ์์ต๋๋ค!
์ธ์ฆ์=
์ธ์ฆ์ ์ํ ์ธ์ฆ์์ ๊ฐ์ธ ํค๊ฐ ํฌํจ๋ ํ์ผ์ ์ง์ ํฉ๋๋ค. ๊ทธ๋งํผ
์ธ์ฆ์๋ OpenSSL ํ์(*.pem)์ด์ด์ผ ํฉ๋๋ค. openssl-listen์ ์ฌ์ฉํ๋ฉด ๋ค์์ ์ฌ์ฉํฉ๋๋ค.
์ต์ ์ ์ ๊ทน ๊ถ์ฅํฉ๋๋ค. ์ํธ aNULL์ ์ ์ธํ๊ณ "๊ณต์ ์ํธ ์์" ์ค๋ฅ
์ธ์ฆ์๊ฐ ์ ๊ณต๋์ง ์์ผ๋ฉด ๋ฐ์ํฉ๋๋ค.
ํค=
๊ฐ์ธ ํค๊ฐ ์๋ ํ์ผ์ ์ง์ ํฉ๋๋ค. ๊ฐ์ธ ํค๋ ์ด ํ์ผ์ด๋ ๋ค์ ์์น์ ์์ ์ ์์ต๋๋ค.
cert ์ต์ ์ผ๋ก ์ ๊ณต๋ ํ์ผ. ๊ทธ ์ฌ์ค์ ์ ์ฆํด์ผ ํ๋ ๋น์ฌ์
์ธ์ฆ์ ์์ ์์๊ฒ๋ ๊ฐ์ธ ํค๊ฐ ํ์ํฉ๋๋ค.
dhparams=
Diffie Hellman ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ํ์ผ์ ์ง์ ํฉ๋๋ค. ์ด๋ฌํ ๋งค๊ฐ๋ณ์๋ ๋ค์๊ณผ ๊ฐ์ ์๋ ์์ต๋๋ค.
dhparams ์ต์ ์ด ์๋ ๊ฒฝ์ฐ cert ์ต์ ๊ณผ ํจ๊ป ์ ๊ณต๋ ํ์ผ์์
ํ์ํฉ๋๋ค.
์นดํ์ผ=
์ ๋ขฐํ ์ ์๋(๋ฃจํธ) ๊ธฐ๊ด ์ธ์ฆ์๊ฐ ์๋ ํ์ผ์ ์ง์ ํฉ๋๋ค. ํ์ผ์ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.
PEM ํ์์ด๋ฉฐ ํ๋ ์ด์์ ์ธ์ฆ์๋ฅผ ํฌํจํด์ผ ํฉ๋๋ค. ํ์ธํ๋ ๋น์ฌ์
ํด๋น ํผ์ด์ ์ธ์ฆ์ ์ด ํ์ผ์ ์๋ ์ธ์ฆ์๋ง ์ ๋ขฐํฉ๋๋ค.
์นดํจ์ค=
์ ๋ขฐํ ์ ์๋(๋ฃจํธ) ์ธ์ฆ์๊ฐ ์๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ง์ ํฉ๋๋ค. ๋๋ ํฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.
PEM ํ์์ ์ธ์ฆ์์ ํด๋น ํด์๋ฅผ ํฌํจํฉ๋๋ค(OpenSSL ์ค๋ช ์ ์ฐธ์กฐ).
์๋=
์ผ๋ถ ์์คํ ์์๋ openssl์ ์์ ๋ฐ์ดํฐ์ ๋ช ์์ ์ธ ์์ค๊ฐ ํ์ํฉ๋๋ค. ์ง์
egd์ ๊ฐ์ ์ํธ๋กํผ ์์ง ๋ฐ๋ชฌ์ด ์์์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋ ์์ผ ์ด๋ฆ, ์:
/dev/egd-ํ.
์์ฌ openssl์ด ์ํธ๋กํผ ์์ค๋ฅผ ์ฐพ์ ์ ์๊ณ ์ํธ๋กํผ๊ฐ ์๋ ์์คํ ์์
์์ง ๋ฐ๋ชฌ์ ํ์ฉํ ์ ์์ผ๋ฉฐ, ์ด ์ต์ ์ ๋ค์์ ์ ๊ณตํ๋ ๋ฉ์ปค๋์ฆ์ ํ์ฑํํฉ๋๋ค.
์์ฌ ์ํธ๋กํผ. ์ด๋ ํ์ฌ ์๊ฐ์ ๋ง์ดํฌ๋ก์ด ๋จ์๋ก ์ทจํจ์ผ๋ก์จ ๋ฌ์ฑ๋ฉ๋๋ค.
libc ์์ฌ ๋์ ์์ฑ๊ธฐ์ ์ด๊ธฐ๊ฐ์ ๊ณต๊ธํฉ๋๋ค. openssl์
๊ทธ๋ฐ ๋ค์ ๋ฌด์์\() ํธ์ถ์ ์ถ๋ ฅ์ ์ ๊ณตํฉ๋๋ค.
์ฐธ๊ณ : ์ด ๋ฉ์ปค๋์ฆ์ ๋ณด์ ํค ์์ฑ์ ์ถฉ๋ถํ์ง ์์ต๋๋ค!
์์ถ
์ฐ๊ฒฐ์ ๋ํ ์์ถ ์ฌ์ฉ์ ํ์ฑํํ๊ฑฐ๋ ๋นํ์ฑํํฉ๋๋ค. ์ด๊ฒ์ "์์"์ผ๋ก ์ค์
์์ถ์ ๋นํ์ฑํํ๊ณ "auto"๋ก ์ค์ ํ๋ฉด OpenSSL์ด ์ฌ์ฉ ๊ฐ๋ฅํ ์ต์์ ์์ถ์ ์ ํํ ์ ์์ต๋๋ค.
์ ๋น์ฌ์๊ฐ ์ง์ํ๋ ์๊ณ ๋ฆฌ์ฆ. ๊ธฐ๋ณธ๊ฐ์ ์๋ฌด๊ฒ๋ ๊ฑด๋๋ฆฌ์ง ์๋ ๊ฒ์ ๋๋ค.
์์ถ ๊ด๋ จ ์ค์ ์ ๋๋ค. ์ฐธ๊ณ : OpenSSL 0.9.8 ์ด์์ด ํ์ํ๋ฉฐ ๋นํ์ฑํํด์ผ ํฉ๋๋ค.
OpenSSL 0.9.8์ ์ฌ์ฉํ ์์ถ์ ํ๋ก์ธ์ค์ ๋ชจ๋ ์๋ก์ด ์ฐ๊ฒฐ์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
์ผ๋ฐ ์ด๋ฆ=
ํผ์ด ์ธ์ฆ์๊ฐ ์ผ์นํด์ผ ํ๋ ์ผ๋ฐ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค. OPENSSL-CONNECT ์ฌ์ฉ
์ฃผ์๋ ์ฃผ์ด์ง ํธ์คํธ ์ด๋ฆ์ด๋ IP ๋์ ์ฃผ์๋ฅผ ์ฌ์ ์ํฉ๋๋ค. OPENSSL-LISTEN ์ฌ์ฉ
๊ทธ๋ฌ๋ฉด ํผ์ด ์ธ์ฆ์ ์ผ๋ฐ ์ด๋ฆ ํ์ธ์ด ํ์ฑํ๋ฉ๋๋ค. ์ด ์ต์ ์๋ ์๋ฏธ๋ง ์์ต๋๋ค.
์ต์ ํ์ธ์ด ๋นํ์ฑํ๋์ง ์๊ณ ์ ํํ ์ํธ๊ฐ ํผ์ด๋ฅผ ์ ๊ณตํ๋ ๊ฒฝ์ฐ
์ฆ๋ช ์.
ํฝ์ค ์ปดํ์ผ๋ ๊ฒฝ์ฐ FIPS ๋ชจ๋๋ฅผ ํ์ฑํํฉ๋๋ค. FIPS ์ํธํ ๊ตฌํ์ ๋ํ ์ ๋ณด
ํ์ค ์ฐธ์กฐ http://oss-institute.org/fips-faq.html. ์ด ๋ชจ๋์๋ ๋ค์์ด ํ์ํ ์ ์์ต๋๋ค.
๊ด๋ จ ์ธ์ฆ์๋ FIPS ์ง์ ๋ฒ์ ์ openssl์ ์ฌ์ฉํ์ฌ ์์ฑ๋ฉ๋๋ค.
ํ๋์ socat ์ฃผ์์์ ์ด ์ต์ ์ ์ค์ ํ๊ฑฐ๋ ์ ํ ์ทจ์ํ๋ฉด ๋ชจ๋ OpenSSL ์ฃผ์์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
์ด ๊ณผ์ ์.
์ฌ์๋ ์ ํ๊ถ ๊ทธ๋ฃน
์ผ๋ถ ์์คํ ํธ์ถ, ํนํ ์ฐ๊ฒฐ ์๋์ ์ฌ์๋๋ฅผ ์ ์ดํ๋ โโ์ต์ ์ ๋๋ค.
์ฌ์๋=
์ฐ๊ฒฐ ๋๋ ์์ ์๋๊ฐ ์ค๋จ๋๊ธฐ ์ ์ ์ฌ์๋ ํ์์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์
0์ ๋จ ํ ๋ฒ์ ์๋๋ฅผ ์๋ฏธํฉ๋๋ค.
๊ฐ๊ฒฉ=
์ฐ์ ์๋ ์ฌ์ด์ ์๊ฐ(์ด, [timespec])์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 1์ด์ ๋๋ค.
์์ํ
์ฌ์๋ ํ์๋ฅผ ๋ฌด์ ํ์ผ๋ก ์ํํฉ๋๋ค.
TUN ์ ํ๊ถ ๊ทธ๋ฃน
Linux TUN/TAP ์ธํฐํ์ด์ค ์ฅ์น ์ฃผ์๋ฅผ ์ ์ดํ๋ โโ์ต์ ์ ๋๋ค.
ํ๋ ์ฅ์น=
TUN ๋ณต์ ์ฅ์น์ ๋ํด ๋ค๋ฅธ ๊ฒฝ๋ก๋ฅผ ์ ํํ๋๋ก socat์ ์ง์ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์
/dev/net/tun.
ํฐ ์ด๋ฆ=
๊ฒฐ๊ณผ ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ ์์คํ ๋์ ํน์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.
์์ฑ๋จ(tun0, tun1 ๋ฑ)
tun-type=[tun|ํญ]
TUN ์ฅ์น์ ์ ํ์ ์ค์ ํฉ๋๋ค. TAP ์ฅ์น๋ฅผ ์์ฑํ๋ ค๋ฉด ์ด ์ต์ ์ ์ฌ์ฉํ์ญ์์ค. ์ฐธ์กฐ
์ด๋ฌํ ์ ํ ๊ฐ์ ์ฐจ์ด์ ์ ๋ํ Linux ๋ฌธ์์ ๋๋ค. ์ค๋ฆฝํ๋ ค๊ณ ํ ๋
๋ ๊ฐ์ TUN ์ฅ์น ์ฌ์ด๋ฅผ ํฐ๋๋งํ๋ ๊ฒฝ์ฐ ํด๋น ์ ํ์ ๋์ผํด์ผ ํฉ๋๋ค.
iff-no-pi
์ฅ์น์ ์ถ๊ฐ ํจํท์ด ํฌํจ๋์ด ์๋์ง ์ ์ดํ๋ โโIFF_NO_PI ํ๋๊ทธ๋ฅผ ์ค์ ํฉ๋๋ค.
ํฐ๋์ ์ ๋ณด. ๋ TUN ์ฌ์ด์ ํฐ๋์ ์ค์ ํ๋ ค๊ณ ํ ๋
์ฅ์น์ ๊ฒฝ์ฐ ์ด๋ฌํ ํ๋๊ทธ๋ ๋์ผํ ๊ฐ์ ๊ฐ์ ธ์ผ ํฉ๋๋ค.
๋ถํ์คํจ TUN ๋คํธ์ํฌ ์ธํฐํ์ด์ค ์ํ๋ฅผ UP์ผ๋ก ์ค์ ํฉ๋๋ค. ๊ถ์ฅ.
iff ๋ฐฉ์ก
TUN ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ BROADCAST ํ๋๊ทธ๋ฅผ ์ค์ ํฉ๋๋ค.
iff-๋๋ฒ๊ทธ
TUN ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ DEBUG ํ๋๊ทธ๋ฅผ ์ค์ ํฉ๋๋ค.
iff-๋ฃจํ๋ฐฑ
TUN ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ LOOPBACK ํ๋๊ทธ๋ฅผ ์ค์ ํฉ๋๋ค.
iff-pointopoint
TUN ์ฅ์น์ POINTOPOINT ํ๋๊ทธ๋ฅผ ์ค์ ํฉ๋๋ค.
iff-notrailers
TUN ์ฅ์น์ NOTTRAILERS ํ๋๊ทธ๋ฅผ ์ค์ ํฉ๋๋ค.
iff-running
TUN ์ฅ์น์ RUNNING ํ๋๊ทธ๋ฅผ ์ค์ ํฉ๋๋ค.
iff-noarp
TUN ์ฅ์น์ NOARP ํ๋๊ทธ๋ฅผ ์ค์ ํฉ๋๋ค.
๋ถํ์คํ
TUN ์ฅ์น์ PROMISC ํ๋๊ทธ๋ฅผ ์ค์ ํฉ๋๋ค.
iff-allmulti
TUN ์ฅ์น์ ALLMULTI ํ๋๊ทธ๋ฅผ ์ค์ ํฉ๋๋ค.
iff-๋ง์คํฐ
TUN ์ฅ์น์ MASTER ํ๋๊ทธ๋ฅผ ์ค์ ํฉ๋๋ค.
iff-์ฌ๋ ์ด๋ธ
TUN ์ฅ์น์ SLAVE ํ๋๊ทธ๋ฅผ ์ค์ ํฉ๋๋ค.
iff-๋ฉํฐ์บ์คํธ
TUN ์ฅ์น์ MULTICAST ํ๋๊ทธ๋ฅผ ์ค์ ํฉ๋๋ค.
iff-portsel
TUN ์ฅ์น์ PORTSEL ํ๋๊ทธ๋ฅผ ์ค์ ํฉ๋๋ค.
iff-automedia
TUN ์ฅ์น์ AUTOMEDIA ํ๋๊ทธ๋ฅผ ์ค์ ํฉ๋๋ค.
iff-๋์
TUN ์ฅ์น์ DYNAMIC ํ๋๊ทธ๋ฅผ ์ค์ ํฉ๋๋ค.
๋ฐ์ดํฐ Values
์ด ์น์ ์์๋ ๋งค๊ฐ๋ณ์์ ์ฃผ์ ์ต์ ์ ๋ค๋ฃจ๋ ๋ค์ํ ๋ฐ์ดํฐ ์ ํ์ ์ค๋ช ํฉ๋๋ค.
๊ฐ์ ธ๊ฐ๋ ๋ผ.
์ฃผ์ ๋ฒ์
ํ์ฌ IPv4 ๋ฐ IPv6์ ๋ํด์๋ง ๊ตฌํ๋ฉ๋๋ค. ์ฃผ์ ์ต์ '๋ฒ์'๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ถ์ธ "0" ๋๋ "1"; ๊ฐ์ ์๋ตํ๋ฉด "1"์ด ์ฌ์ฉ๋ฉ๋๋ค.
byte ๋ถํธ ์๋ int ์ซ์, strtoul() ๋ก ์ฝ์, UCHAR_MAX ์ดํ.
๋ช ๋ น ์ค
๋จ์ผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋ ํ๋ก๊ทธ๋จ ์ด๋ฆ๊ณผ ํด๋น ์ธ์๋ฅผ ์ง์ ํ๋ ๋ฌธ์์ด์ ๋๋ค.
data ๋ค์๊ณผ ๊ฐ์ ์์ ๋ฐ์ดํฐ ์ฌ์ ์ง์ฌ ํต์ฌ๋ก . ํ์ฌ ์ ์ผํ๊ฒ ์ ํจํ ์์์
'x'๋ก ์์ํ๊ณ ๊ทธ ๋ค์ ์ง์ ๊ฐ์ XNUMX์ง์๊ฐ ์ค๋ ๋ฌธ์์ด,
๋ฐ์ดํธ ์ํ์ค.
์๋ฐฐ ๊ท์น์
์ผ๋ฐ์ ์ธ UN*X ๋๋ ํฐ๋ฆฌ ์ด๋ฆ ์๋ฏธ๋ฅผ ๊ฐ๋ ๋ฌธ์์ด์ ๋๋ค.
์์ค
์๋ฌธ์๋ก ๋ syslog ๊ธฐ๋ฅ์ ์ด๋ฆ์ ๋๋ค.
fdnum ๋ถํธ ์๋ int ์ ํ, UN*X ํ์ผ ์ค๋ช ์๋ฅผ ์ง์ ํ์ฌ strtoul() ๋ก ์ฝ์ต๋๋ค.
ํ์ผ ์ด๋ฆ
์ผ๋ฐ์ ์ธ UN*X ํ์ผ ์ด๋ฆ ์๋ฏธ๋ฅผ ๊ฐ๋ ๋ฌธ์์ด์ ๋๋ค.
group ์ฒซ ๋ฒ์งธ ๋ฌธ์๊ฐ ์ญ์ง์์ด๋ฉด strtoul()์ ์ฌ์ฉํ์ฌ ๊ฐ์ ์ฝ์ต๋๋ค.
๊ทธ๋ฃน ID๋ฅผ ์ง์ ํ๋ ๋ถํธ ์๋ ์ ์์ ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ธฐ์กด ๊ทธ๋ฃน์ด์ด์ผ ํฉ๋๋ค.
์ด๋ฆ์ ๋๋ค.
int "0"์ ๋ฐ์ผ๋ก ํ๋ strtol() ํจ์์ ๊ท์น์ ๋ฐ๋ฅด๋ ์ซ์, ์ฆ XNUMX์ง์
์ซ์, ์์ "0"์ด ์๋ 0์ง์ ๋๋ ์์ "XNUMXx"๊ฐ ์๋ XNUMX์ง์์ ๋๋ค. ๊ทธ๋งํผ
๊ฐ์ C int์ ๋ง์์ผ ํฉ๋๋ค.
์ธํฐํ์ด์ค
ifconfig ๋๋์ ์ํด ํ์๋ ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ ์ฅ์น ์ด๋ฆ์ ์ง์ ํ๋ ๋ฌธ์์ด
ํ๋ก์นธ(์: "eth0").
IP ์ฃผ์
์ซ์์ ์ ํ๊ธฐ๋ฒ์ IPv4 ์ฃผ์, 6์ง์ ํ๊ธฐ๋ฒ์ IPvXNUMX ์ฃผ์
๋๊ดํธ๋ก ๋ฌถ์ธ ์ด๋ฆ์ด๊ฑฐ๋ IPv4 ๋๋ IPv6 ์ฃผ์๋ก ํ์ธ๋๋ ํธ์คํธ ์ด๋ฆ์ ๋๋ค.
์: 127.0.0.1, [::1], www.dest-unreach.org, dns1
IPv4 ์ฃผ์
์ซ์์ ์ ํ๊ธฐ๋ฒ์ IPv4 ์ฃผ์ ๋๋ IPv4๋ก ํ์ธ๋๋ ํธ์คํธ ์ด๋ฆ
์ฃผ์.
์: 127.0.0.1, www.dest-unreach.org, dns2
IPv6 ์ฃผ์
๋๊ดํธ๋ก ๋ฌถ์ธ 6์ง์ ๋ฐ ์ฝ๋ก ํ๊ธฐ๋ฒ์ iPvXNUMX ์ฃผ์ ๋๋
IPv6 ์ฃผ์๋ก ํ์ธ๋๋ ํธ์คํธ ์ด๋ฆ์ ๋๋ค.
Examples: [::1], [1234:5678:9abc:def0:1234:5678:9abc:def0], ip6name.domain.org
long strtol() ๋ก ์ฝ์ ์ซ์์ ๋๋ค. ๊ฐ์ C ๊ธธ์ด์ ๋ง์์ผ ํฉ๋๋ค.
์ค๋ ์ค๋
strtoll() ๋ก ์ฝ์ ์ซ์์ ๋๋ค. ๊ฐ์ C long long์ ๋ง์์ผ ํฉ๋๋ค.
off_t ๊ตฌํ์ ์ข ์๋ ๋ถํธ ์๋ ์ซ์(๋ณดํต 32๋นํธ)๋ก strtol ๋๋
strtoll.
๊บผ์ง64_t
๊ตฌํ ์ข ์ ๋ถํธ ์๋ ์ซ์(์ผ๋ฐ์ ์ผ๋ก 64๋นํธ)๋ strtol ๋๋
strtoll.
mode_t ๋ถํธ ์๋ ์ ์, strtoul() ๋ก ์ฝ๊ณ ๋ชจ๋(๊ถํ) ๋นํธ๋ฅผ ์ง์ ํฉ๋๋ค.
pid_t ํ๋ก์ธ์ค ID๋ฅผ ์ง์ ํ์ฌ strtol()๋ก ์ฝ์ ์ซ์์ ๋๋ค.
ํฌํธ A uint16_t(16๋นํธ ๋ถํธ ์๋ ์ซ์) TCP ๋๋ UDP ํฌํธ๋ฅผ ์ง์ ํ๊ณ ๋ค์์ผ๋ก ์ฝ์ต๋๋ค.
strtoul() .
ํ๋กํ ์ฝ
๋ถํธ ์๋ 8๋นํธ ์ซ์, strtoul() ๋ก ์ฝ์ต๋๋ค.
size_t size_t ์ ํ์ด ์๋ ๋ถํธ ์๋ ์ซ์, strtoul ๋ก ์ฝ์ต๋๋ค.
์๋ง ์ด๋ฆ
์์ผ ์ฃผ์. ์ฃผ์ ์ต์ `๋ฐ์ธ๋'๋ฅผ ์ฐธ์กฐํ์ธ์.
string '\0'์ ํฌํจํ์ง ์๋ ์ผ๋ จ์ ๋ฌธ์์ด๋ฉฐ ๋ด๋ถ ์์น์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
๋ช ๋ น์ค, ':', ',' ๋๋ "!!" ์ ๋ฉํ๋ฅผ ํ์ถํด์ผ ํ ์๋ ์์ต๋๋ค.
๋ช ๋ น์ค์ ๋ฌธ์.
TCP ์๋น์ค
์ซ์๋ก ์์ํ์ง ์๊ณ getservbyname() ์ผ๋ก ํ์ธ๋๋ ์๋น์ค ์ด๋ฆ, ๋๋
strtoul() ๋ก ์ฝ์ ๋ถํธ ์๋ int 16๋นํธ ์ซ์์ ๋๋ค.
ํ์๋ฐธ
์ด๋ฅผ ์ง์ ํ๋ ์ด์ค ๋ถ๋์์์ ์ ๋๋ค. ์ซ์๋ ๊ตฌ์กฐ์ฒด timeval์ ๋งคํ๋ฉ๋๋ค.
์ด์ ๋ง์ดํฌ๋ก์ด๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
์๊ฐ ์คํ
์ด๋ฅผ ์ง์ ํ๋ ์ด์ค ๋ถ๋์์์ ์ ๋๋ค. ์ซ์๋ ๊ตฌ์กฐ์ฒด timespec์ ๋งคํ๋ฉ๋๋ค.
์ด์ ๋๋ ธ์ด๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
UDP ์๋น์ค
์ซ์๋ก ์์ํ์ง ์๊ณ getservbyname() ์ผ๋ก ํ์ธ๋๋ ์๋น์ค ์ด๋ฆ, ๋๋
strtoul() ๋ก ์ฝ์ ๋ถํธ ์๋ int 16๋นํธ ์ซ์์ ๋๋ค.
์๋ช ๋์ง ์์ ์ ์
strtoul() ๋ก ์ฝ์ ์ซ์์ ๋๋ค. ๊ฐ์ C unsigned int์ ๋ง์์ผ ํฉ๋๋ค.
user ์ฒซ ๋ฒ์งธ ๋ฌธ์๊ฐ ์ญ์ง์์ด๋ฉด strtoul()์ ์ฌ์ฉํ์ฌ ๊ฐ์ ์ฝ์ต๋๋ค.
์ฌ์ฉ์ ID๋ฅผ ์ง์ ํ๋ ๋ถํธ ์๋ ์ ์์ ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ธฐ์กด ์ฌ์ฉ์ ์ด๋ฆ์ด์ด์ผ ํฉ๋๋ค.
์ฌ์ฉ ์
์์บฃ - TCP4:www.domain.org:80
STDIO(-)์ ํธ์คํธ์ ํฌํธ 4์ ๋ํ TCP80 ์ฐ๊ฒฐ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํฉ๋๋ค.
www.domain.org. ์ด ์์์๋ ํ ๋ท๊ณผ ์ ์ฌํ ๋ํํ ์ฐ๊ฒฐ์ด ์์ฑ๋ฉ๋๋ค.
์๋๋ฉด ๋ท์บฃ. stdin ํฐ๋ฏธ๋ ๋งค๊ฐ๋ณ์๋ ๋ณ๊ฒฝ๋์ง ์์ผ๋ฏ๋ก ๋ซ์๋ ๋ฉ๋๋ค.
^D๋ก ์ค๊ณํ๊ฑฐ๋ ^C๋ก ์ค๋จํฉ๋๋ค.
์์บฃ -d -d READLINE,์ญ์ฌ=$HOME/.http_history \
TCP4:www.domain.org:www,crnl
์ด๋ ์ด์ ์์ ์ ์ฌํ์ง๋ง ๋ค์๊ณผ ๊ฐ์ด ํ์ฌ ์ค์ ํธ์งํ ์ ์์ต๋๋ค.
Bash ๋ฐฉ์(READLINE)์ ์ฌ์ฉํ๊ณ ๊ธฐ๋ก ํ์ผ .http_history๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์์บฃ ์ธ์๋ฌผ
์งํ ์ํฉ์ ๋ํ ๋ฉ์์ง(-d -d) ํฌํธ๋ ์๋น์ค ์ด๋ฆ(www)์ผ๋ก ์ง์ ๋๋ฉฐ,
NL ๋์ ์ฌ๋ฐ๋ฅธ ๋คํธ์ํฌ ํ์ ์ข ๋ฃ ๋ฌธ์(crnl)๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์์บฃ TCP4-๋ฃ๊ธฐ:www TCP4:www.domain.org:www
๊ฐ๋จํ TCP ํฌํธ ์ ๋ฌ์๋ฅผ ์ค์นํฉ๋๋ค. TCP4-LISTEN์ ์ฌ์ฉํ๋ฉด ๋ก์ปฌ ํฌํธ์์ ์์ ๋๊ธฐํฉ๋๋ค.
์ฐ๊ฒฐ์ด ๋ค์ด์ฌ ๋๊น์ง "www"๋ฅผ ์ ๋ ฅํ๊ณ ์ด๋ฅผ ์๋ฝํ ๋ค์ ์๊ฒฉ ํธ์คํธ์ ์ฐ๊ฒฐํฉ๋๋ค.
(TCP4) ๋ฐ์ดํฐ ์ ์ก์ ์์ํฉ๋๋ค. ๋ ๋ฒ์งธ ์ฐ๊ฒฐ์ ํ์ฉ๋์ง ์์ต๋๋ค.
์์บฃ -d -d -lmlocal2 \
TCP4-LISTEN:80,bind=myaddr1,reuseaddr,fork,su=nobody,range=10.0.0.0/8 \
TCP4:www.domain.org:80,bind=myaddr2
TCP ํฌํธ ์ ๋ฌ์, ๊ฐ ์ธก๋ฉด์ด ๋ค๋ฅธ ๋ก์ปฌ IP ์ฃผ์์ ๋ฐ์ธ๋ฉ(๋ฐ์ธ๋ฉ)๋ฉ๋๋ค. ์ด๊ฒ
์์ ๋ ๊ฑฐ์ ์์์ ๊ฐ์์ ๋ณ๋ ฌ ๋๋ ์ฐ์ ์ฐ๊ฒฐ์ ์ฒ๋ฆฌํฉ๋๋ค.
๊ฐ accept() ํ์ ์ ํ๋ก์ธ์ค๋ฅผ ๋ถ๊ธฐํ์ฌ ์ํํฉ๋๋ค. ์ฝ๊ฐ์ ๋ณด์์ ์ ๊ณตํฉ๋๋ค.
ํฌํฌํ ํ ์ฌ์ฉ์ none์๊ฒ su'ing; ๊ฐ์ธ ์ฐ๊ฒฐ๋ง ํ์ฉํฉ๋๋ค.
10 ๋คํธ์ํฌ(๋ฒ์); Reuseaddr๋ก ์ธํด ๋ง์คํฐ ์ดํ ์ฆ์ ์ฌ์์์ด ๊ฐ๋ฅํฉ๋๋ค.
์ผ๋ถ ํ์ ์์ผ์ด ์์ ํ ์ข ๋ฃ๋์ง ์์ ๊ฒฝ์ฐ์๋ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋ฉ๋๋ค.
-lmlocal2๋ฅผ ์ฌ์ฉํ๋ฉด socat๋ ์น์ธ ๋ฃจํ์ ์ฑ๊ณต์ ์ผ๋ก ๋๋ฌํ ๋๊น์ง stderr์ ๊ธฐ๋กํฉ๋๋ค.
์ถ๊ฐ ๋ก๊น ์ local2 ์์ค์ ์ฌ์ฉํ์ฌ syslog๋ก ์ ๋ฌ๋ฉ๋๋ค.
์์บฃ TCP4-LISTEN:5555,ํฌํฌ,tcpwrap=์คํฌ๋ฆฝํธ \
EXEC:/bin/myscript,chroot=/home/sandbox,su-d=sandbox,pty,stderr
์ฐ๊ฒฐ(TCP4-LISTEN)์ ๋ฐ์๋ค์ด๊ณ ํฌํฌ๋ ์๋ก์ด ์์์ธ ๊ฐ๋จํ ์๋ฒ์ ๋๋ค.
๊ฐ ์ฐ๊ฒฐ์ ๋ํ ํ๋ก์ธ์ค; ๋ชจ๋ ์ด๋ฆฐ์ด๋ ๋จ์ผ ๋ฆด๋ ์ด ์ญํ ์ ํฉ๋๋ค. ํด๋ผ์ด์ธํธ๋ ๋ฐ๋์
๋ฐ๋ชฌ ํ๋ก์ธ์ค ์ด๋ฆ "script"์ ๋ํ ๊ท์น์ ์ผ์น์ํต๋๋ค. /etc/hosts.allow ๊ณผ
/etc/hosts.deny๊ทธ๋ ์ง ์์ผ๋ฉด ์ก์ธ์ค๊ฐ ๊ฑฐ๋ถ๋ฉ๋๋ค("man 5 ํธ์คํธ_์ก์ธ์ค" ์ฐธ์กฐ). ์ ์ํ
ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉด ํ์ ํ๋ก์ธ์ค chroot๊ฐ /ํ/์๋๋ฐ์ค, su๋ ์ฌ์ฉ์์๊ฒ
์๋๋ฐ์ค๋ฅผ ์คํํ ๋ค์ ํ๋ก๊ทธ๋จ์ ์์ํฉ๋๋ค. /ํ/์๋๋ฐ์ค/bin/myscript. ์์บฃ ๊ทธ๋ฆฌ๊ณ myscript
์์ฌ tty(pty)๋ฅผ ํตํด ํต์ ํฉ๋๋ค. myscript์ stderr์ stdout์ผ๋ก ๋ฆฌ๋๋ ์ ๋๋ฏ๋ก
์ค๋ฅ ๋ฉ์์ง๋ ๋ค์์ ํตํด ์ ์ก๋ฉ๋๋ค. ์์บฃ ์ฐ๊ฒฐ๋ ํด๋ผ์ด์ธํธ์.
์์บฃ EXEC:"mail.sh [์ด๋ฉ์ผ ๋ณดํธ]",fdin=3,fdout=4 \
TCP4:mail.relay.org:25,crnl,bind=alias1.server.org,mss=512
๋ฉ์ผ.sh ๋ค์๊ณผ ๊ฐ์ด ๋ฐฐํฌ๋๋ ์ ์คํฌ๋ฆฝํธ์ ๋๋ค. ์์บฃ, ๊ฐ๋จํ SMTP๋ฅผ ๊ตฌํํฉ๋๋ค.
๊ณ ๊ฐ. FD 3(์ ๋ ฅ)๊ณผ 4(์ถ๋ ฅ)์์ SMTP๋ฅผ "๋ง"ํ๋๋ก ํ๋ก๊ทธ๋๋ฐ๋์ด ์์ต๋๋ค. fdin
๊ทธ๋ฆฌ๊ณ fdout ์ต์ ์ ์์บฃ ํ๋ก๊ทธ๋จ๊ณผ์ ํต์ ์ ์ํด ์ด๋ฌํ FD๋ฅผ ์ฌ์ฉํฉ๋๋ค.
mail.sh๋ stdin๊ณผ stdout์ ์์๋ฐ๊ธฐ ๋๋ฌธ์ ์์บฃ ๊ทธ๊ฒ๋ค์ ์ฌ์ฉํ์ง ์์ต๋๋ค. ์คํฌ๋ฆฝํธ
stdin์์ ๋ฉ์ผ ๋ณธ๋ฌธ์ ์ฝ์ ์ ์์ต๋๋ค. ์์บฃ alias1์ ๋ก์ปฌ ์์ค ์ฃผ์๋ก ์ค์
(๋ฐ์ธ๋), ์ฌ๋ฐ๋ฅธ ๋คํธ์ํฌ ํ์ ์ข ๋ฃ(crnl)๋ฅผ ๊ด๋ฆฌํ๊ณ ์ต๋ 512๊ฐ๋ฅผ ๋ณด๋ ๋๋ค.
ํจํท๋น ๋ฐ์ดํฐ ๋ฐ์ดํธ(mss)์ ๋๋ค.
์์บฃ -,ํ์ถ=0x0f /dev/ttyS0,์์,crnl
์๋ฅผ ๋ค์ด ๋ชจ๋๊ณผ์ ํต์ ์ ์ํด ์ง๋ ฌ ํ์ ์ ํตํด ๋ํํ ์ฐ๊ฒฐ์ ์ฝ๋๋ค.
rawer๋ ์ฝ์๊ณผ ttyS0์ ํฐ๋ฏธ๋ ๋งค๊ฐ๋ณ์๋ฅผ ์คํ ๊ฐ๋ฅํ ๊ฐ์ผ๋ก ์ค์ ํฉ๋๋ค.
crnl์ ์ฌ๋ฐ๋ฅธ ๊ฐํ ๋ฌธ์๋ก ๋ณํ๋ฉ๋๋ค. escape๋ฅผ ์ฌ์ฉํ๋ฉด socat์ ์ข ๋ฃํ ์ ์์ต๋๋ค.
๋ฌธ์ ์ปจํธ๋กค-O๋ก ์ฒ๋ฆฌํฉ๋๋ค.
์์บฃ UNIX-LISTEN:/tmp/.X11-unix/X1,fork \
SOCKS4:host.victim.org:127.0.0.1:6000,socksuser=nobody,sourceport=20
UNIX-LISTEN์ ์ฌ์ฉํ๋ฉด ์์บฃ ์์ ๋๊ธฐ UNIX ๋๋ฉ์ธ ์์ผ์ ์ฝ๋๋ค. /tmp/.X11-unix/X1.
์ด ๊ฒฝ๋ก๋ ์ปดํจํฐ์ ๋ก์ปฌ XWindow ๋์คํ๋ ์ด:1์ ํด๋นํ๋ฏ๋ก XWindow
DISPLAY=:1์ ๋ํ ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ์ด ํ์ฉ๋ฉ๋๋ค. ์์บฃ ๊ทธ๋ฐ ๋ค์ SOCKS4์ ๋ํํฉ๋๋ค.
sourceport 20 ๊ธฐ๋ฐ ์ฐ๊ฒฐ์ ํ์ฉํ ์ ์๋ ์๋ฒ ํธ์คํธ.victim.org
๊ณ ์ IP ํํฐ์ FTP ๊ด๋ จ ์ฝ์ . ์์บฃ ์ ์ํด ํธ์ถ๋๋ ์ฒ
์๋ง ์ฌ์ฉ์๋ ์๋ฌด๋ ์์ผ๋ฉฐ ๋ฃจํ๋ฐฑ ํฌํธ 6000์ ์ฐ๊ฒฐํ๋๋ก ์์ฒญํฉ๋๋ค(์ฝํ ํฌํธ๋ง
sockd ๊ตฌ์ฑ์ด ์ด๋ฅผ ํ์ฉํฉ๋๋ค). ๊ทธ๋์ ํผํด์๋ค๊ณผ ์ฐ๊ฒฐ์ด ๋ฉ๋๋ค
XWindow ์๋ฒ ๋ฐ MIT ์ฟ ํค๋ Kerberos ์ธ์ฆ์ด ํ์ํ์ง ์์ ๊ฒฝ์ฐ
์ฐ๋ฆฌ๋ ์ผ์ ์์ํ ์ ์์ต๋๋ค. ํ ๋ฒ์ ํ๋์ ์ฐ๊ฒฐ๋ง ๊ฐ๋ฅํ๋ค๋ ์ ์ ์ฐธ๊ณ ํ์ธ์.
์๋ํ๋ฉด TCP๋ ์ฃผ์ด์ง ์ฃผ์์ ํฌํธ ์ธํธ๋ก ํ๋์ ์ธ์ ๋ง ์ค์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์์บฃ -u /tmp/readdata,ํ์-๋=0,๋ฌด์ -
์ด๋ ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ์ ์ก(-u)์ ์์ ๋๋ค. ์์บฃ ๋ค์์์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํฉ๋๋ค.
ํ์ผ /tmp/readdata(์์์ ์ฃผ์ GOPEN), ํ์ฌ ๋์์ ์์
(ํ์ ๋=0ํ์ ์์บฃ ํ์ผ์ ํ์ฌ ๋์์ ์ฝ๊ธฐ๋ฅผ ์์ํฉ๋๋ค. ํ์=0์ ์ฌ์ฉํ๊ฑฐ๋ ํ์ํ์ง ์์
๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ๋จผ์ ์ฝ๋ ์ต์ ) "tail -f" ๋ชจ๋(ignoreeof)์ ๊ฐ์ต๋๋ค. ๊ทธ๋งํผ
"file"์ ์์ UNIX ๋๋ฉ์ธ ์์ผ์ผ ์๋ ์์ต๋๋ค(๊ฒ์ ์ต์ ์ ์ฌ์ฉํ์ง ๋ง์ญ์์ค).
๊ทธ๋).
(์ 5; ์์ฝ ๋น๋ฐ๋ฒํธ; ์ 5; ์์ฝ ์ด; ์ 1) |
์์บฃ - EXEC:'ssh -l ์ฌ์ฉ์ ์๋ฒ',pty,setsid,ctty
EXEC'ssh ์ธ์ ์ ์๋ฒ๋ก ๋ณด๋ ๋๋ค. ์ฌ์ด์ ํต์ ์ ์ํด pty๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์์บฃ ๊ณผ
ssh, ssh๊ฐ tty(ctty)๋ฅผ ์ ์ดํ๋๋ก ๋ง๋ค๊ณ ์ด pty๋ฅผ ์ ํญ๋ชฉ์ ์์ ์๋ก ๋ง๋ญ๋๋ค.
ํ๋ก์ธ์ค ๊ทธ๋ฃน(setsid)์ด๋ฏ๋ก ssh๋ ์์บฃ.
์์บฃ -u TCP4-LISTEN:3334,์ฌ์ฌ์ฉ์ฃผ์,ํฌํฌ \
OPEN:/tmp/in.log,์์ฑ,์ถ๊ฐ
๊ฐ๋จํ ๋คํธ์ํฌ ๊ธฐ๋ฐ ๋ฉ์์ง ์์ง๊ธฐ๋ฅผ ๊ตฌํํฉ๋๋ค. ์ฐ๊ฒฐํ๋ ๊ฐ ํด๋ผ์ด์ธํธ์ ๋ํด
ํฌํธ 3334๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ก์ด ํ์ ํ๋ก์ธ์ค๊ฐ ์์ฑ๋ฉ๋๋ค(์ต์ ํฌํฌ). ์์ ๋ณด๋ธ ๋ชจ๋ ๋ฐ์ดํฐ๋
ํด๋ผ์ด์ธํธ๋ /tmp/in.log ํ์ผ์ ์ถ๊ฐ๋ฉ๋๋ค. ํ์ผ์ด ์กด์ฌํ์ง ์์ผ๋ฉด socat
์ฐฝ์กฐํด. Reuseaddr ์ต์ ์ ์ฌ์ฉํ๋ฉด ์๋ฒ ํ๋ก์ธ์ค๋ฅผ ์ฆ์ ๋ค์ ์์ํ ์ ์์ต๋๋ค.
์์บฃ PTY,link=$HOME/dev/vmodem0,rawer,wait-slave \
EXEC:"ssh ๋ชจ๋์๋ฒ.us.org ์์บฃ - /dev/ttyS0,๋น์ฐจ๋จ,์์"
ํด๋ผ์ด์ธํธ์์ PTY(์์ฌ ํฐ๋ฏธ๋ ์ฅ์น)๋ฅผ ์์ฑํฉ๋๋ค.
์ฌ๋ณผ๋ฆญ ๋งํฌ $HOME/dev/vmodem0. ์ง๋ ฌ ํ์ ๋๋
๋ชจ๋์ ์ฌ์ฉํ๋๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค. $HOME/dev/vmodem0; ํธ๋ํฝ์ ๋ค์์ผ๋ก ์ ๋ฌ๋ฉ๋๋ค.
๋ค๋ฅธ socat ์ธ์คํด์ค๊ฐ ์ฐ๊ฒฐ๋๋ ssh๋ฅผ ํตํ ๋ชจ๋ ์๋ฒ /dev/ttyS0.
์์บฃ TCP4-LISTEN:2022,์ฌ์ฌ์ฉ์ฃผ์,ํฌํฌ \
ํ๋ก์:ํ๋ก์:www.domain.org:22,ํ๋ก์ํฌํธ=3128,ํ๋ก์์ธ์ฆ=์ฌ์ฉ์:ํจ์ค
ํฌํธ 2022์์ ์ฐ๊ฒฐ์ ์๋ฝํ๋ ์ ๋ฌ์๋ฅผ ์์ํ๊ณ ํฌํธ XNUMX๋ฅผ ํตํด ์ฐ๊ฒฐํฉ๋๋ค.
ํธ์คํธ ํ๋ก์์ ํฌํธ 3128(ํ๋ก์ํฌํธ)์์ ์์ ๋๊ธฐํ๋ ํ๋ก์ ๋ฐ๋ชฌ
"pass"(proxyauth)๋ฅผ ์ฌ์ฉํ์ฌ "์ฌ์ฉ์"๋ก ์ธ์ฆ๋๋ CONNECT ๋ฐฉ๋ฒ์ ๋๋ค. ๊ทธ๋งํผ
๊ทธ๋ฌ๋ฉด ํ๋ก์๋ ํฌํธ 22์์ www.domain.org๋ฅผ ํธ์คํธํ๊ธฐ ์ํ ์ฐ๊ฒฐ์ ์ค์ ํด์ผ ํฉ๋๋ค.
์์บฃ - OPENSSL:์๋ฒ:4443,cafile=server.crt,cert=client.pem
SSL ์๋ฒ์ ๋ํ ๋ณด์ ์ฐ๊ฒฐ์ ์ค์ ํ๋ ค๊ณ ์๋ํ๋ OpenSSL ํด๋ผ์ด์ธํธ์ ๋๋ค.
์ต์ cafile์ ์ ๋ขฐ ์ธ์ฆ์๊ฐ ํฌํจ๋ ํ์ผ์ ์ง์ ํฉ๋๋ค.
์๋ฒ๊ฐ ์ด๋ฌํ ์ธ์ฆ์ ์ค ํ๋๋ฅผ ์ ์ํ๊ณ ํด๋น ์๋ฒ๋ฅผ ์์ ํ๊ณ ์์์ ์ฆ๋ช ํ๋ ๊ฒฝ์ฐ์๋ง
๊ด๋ จ ๊ฐ์ธ ํค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฐ๊ฒฐ์ด ์ข ๋ฃ๋ฉ๋๋ค. ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ์ฌ ํ์ผ
ํด๋ผ์ด์ธํธ ์ธ์ฆ์ ๋ฐ ๊ด๋ จ ๊ฐ์ธ ํค๋ฅผ ํฌํจํ๋ ๊ฒ์ด ์ง์ ๋ฉ๋๋ค. ์ด๊ฒ
์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ ์ธ์ฆ์ ์ํ๋ ๊ฒฝ์ฐ์ ํ์ํฉ๋๋ค. ๋ง์ ์ธํฐ๋ท
์๋ฒ๋ ๊ทธ๋ ์ง ์์ต๋๋ค.
์ฒซ ๋ฒ์งธ ์ฃผ์('-')๋ ๊ฑฐ์ ๋ชจ๋ ๋ค๋ฅธ socat ์ฃผ์๋ก ๋์ฒด๋ ์ ์์ต๋๋ค.
์์บฃ OPENSSL-LISTEN:4443,reuseaddr,pf=ip4,fork,cert=server.pem,cafile=client.crt ํ์ดํ
TCP ์ฐ๊ฒฐ์ ํ์ฉํ๊ณ ๋ค์์์ ์ธ์ฆ์๋ฅผ ์ ๊ณตํ๋ OpenSSL ์๋ฒ์ ๋๋ค.
server.pem ํ์ผ์ ์ญ์ ํ๊ณ ํด๋ผ์ด์ธํธ๊ฐ ํ์ธ๋ ์ธ์ฆ์๋ฅผ ์ ์ํ๋๋ก ๊ฐ์ ํฉ๋๋ค.
cafile.crt์ ๋ํด.
๋ ๋ฒ์งธ ์ฃผ์('PIPE')๋ ๊ฑฐ์ ๋ชจ๋ ๋ค๋ฅธ socat ์ฃผ์๋ก ๋์ฒด๋ ์ ์์ต๋๋ค.
OpenSSL ํค์ ์ธ์ฆ์ ์์ฑ ๋ฐ ๋ฐฐํฌ์ ๋ํ ์ง์นจ์ ๋ค์์ ์ฐธ์กฐํ์ธ์.
์ถ๊ฐ socat ๋ฌธ์ socat-openssl.txt.
์์ฝ |์์บฃ -u - ํ์ผ:/tmp/bigfile,์์ฑ,๋ํ ํ์ผ,ํ์=100000000000
100GB์ ์คํ์ค ํ์ผ์ ์์ฑํฉ๋๋ค. ์ด๋ฅผ ์ง์ํ๋ ํ์ผ ์์คํ ์ ํ์ด ํ์ํฉ๋๋ค.
(ext2, ext3, reiserfs, jfs; minix, vfat ์๋). 1๋ฐ์ดํธ๋ฅผ ์ฐ๋ ์์ ์
์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ฉฐ(reiserfs: ๋ช ๋ถ, ext2: "์์" ์๊ฐ) ๊ฒฐ๊ณผ ํ์ผ์
inode๋ง์ผ๋ก ์ผ๋ถ ๋์คํฌ ๊ณต๊ฐ์ ์๋นํฉ๋๋ค(reiserfs: 2MB, ext2: 16KB).
์์บฃ tcp-l:7777,์ฌ์ฌ์ฉ์ฃผ์,ํฌํฌ ์์คํ :'ํ๋ -i 0 -s >&2',๋ ธํฌํฌ
ํฌํธ 7777์์ ๋ค์ด์ค๋ TCP ์ฐ๊ฒฐ์ ์์ ํฉ๋๋ค. ํ์ฉ๋ ๊ฐ ์ฐ๊ฒฐ์ ๋ํด
์์ ํธ์ถํฉ๋๋ค. ์ด ์์๋ TCP์ ์ง์ ์ฐ๊ฒฐ๋ stdin ๋ฐ stdout์ด ์์ต๋๋ค.
์์ผ(๋ ธํฌํฌ). ์์ filan์ ์์ํ๊ณ ์์ผ ์ฃผ์๋ฅผ ์ธ์ํ๋๋ก ํฉ๋๋ค.
stderr (ํฐ๋ฏธ๋ ์ฐฝ).
์์ฝ - ์ "\0\14\0\0\c" |์์บฃ -u - ํ์ผ:/usr/bin/squid.exe,seek=0x00074420
๊ธฐ๋ณธ ๋ฐ์ด๋๋ฆฌ ํธ์ง๊ธฐ ๊ธฐ๋ฅ: 4๋ฐ์ดํธ 000 014 000 000์
์คํ ๊ฐ๋ฅํ /usr/bin/squid ์คํ์ 0x00074420(์ด๊ฒ์ ์ค์ ํจ์น์ ๋๋ค.
Cygwin์ ์ค์ง์ด ์คํ ํ์ผ์ Windows์์ ์คํ๋๋ฉฐ ์ค์ 2004๋ XNUMX์ ๊ธฐ์ค์ ๋๋ค.
์์บฃ - tcp:www.blackhat.org:31337,readbytes=1000
์ ์ ์๋ ์๋น์ค์ ์ ์ํ์ฌ ์นจ์๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
์์บฃ -U TCP:๋์:9999,๋-๋ซ๊ธฐ TCP-L:8888,์ฌ์ฌ์ฉ์ฃผ์,ํฌํฌ
ํฌํธ 8888์ ๋ค๋ฅธ TCP ์คํธ๋ฆผ์์ ๋์ฐฉํ๋ ๋ฐ์ดํฐ๋ฅผ ํ๋์ ์คํธ๋ฆผ์ผ๋ก ๋ณํฉํ์ฌ
๋ชฉํ:9999. ์ข ๋ฃ-๋ซ๊ธฐ ์ต์ ์ ํ์ ํ๋ก์ธ์ค๊ฐ ๋ถ๊ธฐ๋๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
๊ณต์ ์ฐ๊ฒฐ์ ์ข ๋ฃํ๋ ๋ ๋ฒ์งธ ์ฃผ์๋ 9999(close\(2) just
์์ ํ๋ก์ธ์ค๊ฐ ์ง์๋๋ ๋์ ํ์ฑ ์ํ๋ฅผ ์ ์งํ๋ inode์ ์ฐ๊ฒฐ์ ํด์ ํฉ๋๋ค.
shutdown\(2)์ ์ฐ๊ฒฐ์ ์ ๊ทน์ ์ผ๋ก ์ข ๋ฃํฉ๋๋ค.
์์บฃ - UDP4-DATAGRAM:192.168.1.0:123,sp=123,broadcast,range=192.168.1.0/24
192.168.1.0/24 ๋คํธ์ํฌ๋ก ๋ธ๋ก๋์บ์คํธ๋ฅผ ๋ณด๋ด๊ณ ์๋ต์ ๋ฐ์ต๋๋ค.
๊ฑฐ๊ธฐ์ ํ์์๋ฒ๊ฐ ์์ด์. ์ด ๋คํธ์ํฌ ์ธ๋ถ ํธ์คํธ์ NTP ํจํท์ ๋ฌด์ํฉ๋๋ค.
์์บฃ - SOCKET-DATAGRAM:2:2:17:x007bxc0a80100x0000000000000000,bโ
ind=x007bx00000000x0000000000000000,setsockopt-int=1:6:1,rโ
ange=x0000xc0a80100x0000000000000000:x0000xffffff00x0000000000000000
์๋ฏธ์ ์ด์ ์์ ๋์ผํ์ง๋ง ๋ชจ๋ ๋งค๊ฐ๋ณ์๋
์ผ๋ฐ์ ์ธ ํ์์ผ๋ก ์ง์ ๋ฉ๋๋ค. setockopt-int์ ๊ฐ 6์ Linux ๊ฐ์ ๋๋ค.
SO_BROADCAST.
์์บฃ - IP4-DATAGRAM:255.255.255.255:44,broadcast,range=10.0.0.0/8
ํ๋กํ ์ฝ 44๋ฅผ ์ฌ์ฉํ์ฌ ๋ก์ปฌ ๋คํธ์ํฌ์ ๋ธ๋ก๋์บ์คํธ๋ฅผ ๋ณด๋ ๋๋ค.
๊ฐ์ธ ์ฃผ์ ๋ฒ์๋ง.
์์บฃ - UDP4-DATAGRAM:224.255.0.1:6666,bind=:6666,ip-add-membership=224.255.0.1:eth0
UDP๋ฅผ ์ฌ์ฉํ์ฌ stdin์์ ์ง์ ๋ ๋ฉํฐ์บ์คํธ ์ฃผ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํฉ๋๋ค. ๋ ๋ค ํ์ง
์๊ฒฉ ํฌํธ๋ 6666์ ๋๋ค. ์ธํฐํ์ด์ค eth0์ ๋ฉํฐ์บ์คํธ๋ ํ์ฉํ๋๋ก ์ง์ํฉ๋๋ค.
์ฃผ์ด์ง ๊ทธ๋ฃน์ ํจํท. ๋ก์ปฌ ๋คํธ์ํฌ์ ์ฌ๋ฌ ํธ์คํธ์์ ์ด๋ฅผ ์คํํ ์ ์์ต๋๋ค.
๋ช ๋ น์ ์คํํ๋ฉด ํธ์คํธ ์ค ํ๋์์ ๋ณด๋ธ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ๋ค๋ฅธ ๋ชจ๋ ํธ์คํธ์์ ์์ ๋ฉ๋๋ค.
๊ฒ๋ค. IP ํํฐ,
๋ผ์ฐํ ๋ฌธ์ , ์ด์ ์ฒด์ , ๋ธ๋ฆฌ์ง ๋๋
์ค์์น๊ฐ ์๋ชป ๊ตฌ์ฑ๋์์ต๋๋ค.
์์บฃ TCP:ํธ์คํธ2:4443 TUN:192.168.255.1/24,์๋ก
ํธ์คํธ2๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์(๊ฐ์ธ์ ์๋!) ๋คํธ์ํฌ์ ํ์ชฝ์ ์ค์ ํฉ๋๋ค.
UDP-L ๋ฐ tun ์ฃผ์ 192.168.255.2๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฌํ ํ๋ก์ธ์ค๊ฐ ์คํ๋ ์ ์์ต๋๋ค. ๊ทธ๋ค์ ๋๋ฌํ ์ ์์ต๋๋ค
์ฃผ์ 192.168.255.1 ๋ฐ 192.168.255.2๋ฅผ ์ฌ์ฉํ์ฌ ์๋ก. ์คํธ๋ฆฌ๋ฐ ์ฐธ๊ณ ํ์ธ์
์. TCP ๋๋ SSL์ ํตํ ์ ์ก์ ํจํท ๊ฒฝ๊ณ ์ ์ง๋ฅผ ๋ณด์ฅํ์ง ์์ผ๋ฏ๋ก
ํจํท ์์ค์ ์ ๋ฐํฉ๋๋ค.
์์บฃ PTY,๋งํฌ=/var/run/ppp,rawer ์ธํฐํ์ด์ค:hdlc0
pppd์ ์ง๋ ฌ ์ฅ์น๊ฐ ํ์ํ๋ฏ๋ก ์ง๋ ฌ ์ฅ์น๊ฐ ํ์ํ์ง ์์ ์ ์๋ ๋ฌธ์ ๋ฅผ ํํผํฉ๋๋ค.
๋คํธ์ํฌ ์ฅ์น๋ก ํ์๋๋ ๋๊ธฐ ํ์ ์์ ์์ ํ ์ ์์ต๋๋ค. ์์บฃ
pppd๋ฅผ ๋ง์กฑ์ํค๊ธฐ ์ํด PTY๋ฅผ ์์ฑํ๊ณ ๋คํธ์ํฌ ์ธํฐํ์ด์ค hdlc0์ ๋ฐ์ธ๋ฉํ๋ฉฐ ๋ค์์ ์ํํ ์ ์์ต๋๋ค.
๋ ์ฅ์น ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ /var/run/ppp ์ฅ์น์์ pppd๋ฅผ ์ฌ์ฉํ์ญ์์ค.
์์บฃ -T 1 -d -d TCP-L:10081,์ฌ์ฌ์ฉ์ฃผ์,ํฌํฌ,crlf ์์คํ :"์์ฝ -e \"\\\"HTTP/1.0 200
ํ์ธ\\\n๋ฌธ์ ์ ํ: text/plain\\\n\\\n๋ ์ง:
\$\(๋ ์ง\)\\\n์๋ฒ:\$SOCAT_SOCKADDR:\$SOCAT_SOCKPORT\\\nํด๋ผ์ด์ธํธ:
\$SOCAT_PEERADDR:\$SOCAT_PEERPORT\\n\\\"\"; ๊ณ ์์ด; ์์ฝ -e \"\\\"\\\N\\\"\""
๊ฐ๋จํ HTTP ์์ฝ ์๋ฒ๋ฅผ ์์ฑํฉ๋๋ค. ์ฐ๊ฒฐํ๋ ๊ฐ HTTP ํด๋ผ์ด์ธํธ๋ ์ ํจํ HTTP๋ฅผ ์ป์ต๋๋ค.
ํด๋ผ์ด์ธํธ ์ฃผ์์ ํฌํธ์ ๋ํ ์ ๋ณด๊ฐ ํฌํจ๋ ์๋ต
์๋ฒ ํธ์คํธ, ํธ์คํธ ์ฃผ์(๋ฉํฐํ ์๋ฒ์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์) ๋ฐ
์๋ ํด๋ผ์ด์ธํธ ์์ฒญ.
์์บฃ -d -d
UDP4-RECVFROM:9999, so-broadcast, so-timestamp, ip-pktinfo, ip-recverr, ip-recvopts, ip-recvtos, ip-recvttl!!-
์์คํ :'๋ด๋ณด๋ด๊ธฐ; ์ 1 ' |๊ทธ๋ ์์บฃ
ํฌํธ 9999์์ ๋ค์ด์ค๋ UDP ํจํท์ ๊ธฐ๋ค๋ฆฌ๊ณ ํ๊ฒฝ ๋ณ์๋ฅผ ์ธ์ํฉ๋๋ค.
socat์์ ์ ๊ณตํฉ๋๋ค. BSD ๊ธฐ๋ฐ ์์คํ ์์๋ ip-pktinfo๋ฅผ ๋ค์์ผ๋ก ๋ฐ๊ฟ์ผ ํฉ๋๋ค.
ip-recvdstaddr, ip-recvif. ํนํ ํฅ๋ฏธ๋ก์ด ๊ฒ์ SOCAT_IP_DSTADDR์ ๋๋ค.
์ ๋์บ์คํธ, ๋ฉํฐ์บ์คํธ ๋๋ ๋ธ๋ก๋์บ์คํธ์ผ ์ ์๋ ํจํท์ ๋์ ์ฃผ์
์ฃผ์.
์ง๋จ
์์บฃ ์ฌ๊ฐ๋๋ณ๋ก ๋ฉ์์ง๋ฅผ ํํฐ๋งํ ์ ์๋ ๋ก๊น ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํฉ๋๋ค. ์ฌ๊ฐ๋
์ ๊ณต๋ syslog ์ฐ์ ์์์ ์ด๋ ์ ๋ ํธํ๋ฉ๋๋ค. ํ๋ ๋๋ ์ต๋
-d ๋ช ๋ น์ค ์ต์ ์ด XNUMXํ ๋ฐ์ํฉ๋๋ค. ์ฆ, ๋ฉ์์ง์ ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋ฎ์ต๋๋ค.
๋ฐ๊ธ์ ์ ํํ ์ ์์ต๋๋ค. ๊ฐ ๋ฉ์์ง์๋ ๋ค์์ ์ง์ ํ๋ ๋จ์ผ ๋๋ฌธ์๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
๋ฉ์์ง ์ฌ๊ฐ๋(F, E, W, N, I ๋๋ D ์ค ํ๋)
์น๋ช ์ : ๋ฌด์กฐ๊ฑด์ ์ด๊ณ ์ฆ๊ฐ์ ์ธ ํ๋ก๊ทธ๋จ ์ข ๋ฃ๊ฐ ํ์ํ ์กฐ๊ฑด์ ๋๋ค.
์ค๋ฅ: ์ ์ ํ ํ๋ก๊ทธ๋จ ์ฒ๋ฆฌ๋ฅผ ๋ฐฉํดํ๋ ์กฐ๊ฑด์ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ํ๋ก๊ทธ๋จ์
์ข ๋ฃ๋์์ต๋๋ค(์ต์ -s ์ฐธ์กฐ).
๊ฒฝ๊ณ :
๋ญ๊ฐ๊ฐ ์ ๋๋ก ์๋ํ์ง ์๊ฑฐ๋ ์ถ๊ฐ๋ก ์์ ํด์ผ ํ ์ํ์ ์์ต๋๋ค.
์ฒ๋ฆฌ๊ฐ ๋ณด์ฅ๋ ์๋ ์์ง๋ง ๊ฐ๋ฅํ ์๋ ์์ต๋๋ค.
์ฃผ์ ์ฌํญ :
ํ๋ก๊ทธ๋จ์ ํฅ๋ฏธ๋ก์ด ํ๋(์: ๊ฐ๋ ) ์์บฃ ์ด๋ค ์ข ๋ฅ์
์๋ฒ ๋ชจ๋.
์ ๋ณด: ํ๋ก๊ทธ๋จ์ด ์ํํ๋ ์์ ์ ๋ํ ์ค๋ช ๊ณผ ํด๋น ํ๋ก๊ทธ๋จ์ด ๋ฐ์ํ๋ ์ด์ ์ ๋ํ ์ค๋ช ์ ๋๋ค. ๋ชจ๋ํฐ๋ง ๊ฐ๋ฅ
ํ์ผ ์ค๋ช ์์ ์๋ช ์ฃผ๊ธฐ.
DEBUG: ํ๋ก๊ทธ๋จ ์๋ ๋ฐฉ์, ๋ชจ๋ ์์คํ ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธ์ถ ๋ฐ ๊ทธ ๋ด์ฉ์ ๋ํ ์ค๋ช
๊ฒฐ๊ณผ.
๋ก๊ทธ ๋ฉ์์ง๋ stderr, ํ์ผ ๋๋ syslog์ ๊ธฐ๋ก๋ ์ ์์ต๋๋ค.
์ถ๊ตฌ์์, ์์บฃ EOF ๋๋ ๋นํ์ฑ ์๊ฐ ์ด๊ณผ๋ก ์ธํด ์ข ๋ฃ๋ ๊ฒฝ์ฐ ์ํ 0์ ์ ๊ณตํฉ๋๋ค.
์ค๋ฅ๊ฐ ์๋ ๊ฒฝ์ฐ ์์ ๊ฐ์ ๊ฐ์ง๋ฉฐ ์น๋ช ์ ์ธ ์ค๋ฅ๊ฐ ์๋ ๊ฒฝ์ฐ ์์ ๊ฐ์ ๊ฐ์ต๋๋ค.
onworks.net ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ ์จ๋ผ์ธ์ผ๋ก filan์ ์ฌ์ฉํ์ธ์.