À̱ÛÀº Ä¿³Î¸ðµå PPPoE¿¡¼ Çѱ¹Åë½ÅÀÇ À¯µ¿IP¸¦ »ç¿ëÇÏ´Â °æ¿ì¿¡ ´ëÇØ¼ ¼³¸íÇÕ´Ï´Ù. À¯Àú¸ðµå PPPoE¿¡¼ À¯µ¿IP¸¦
»ç¿ëÇÏ´Â ºÎºÐÀº ´Ù¸¥ ¹®¼¸¦ ÂüÁ¶Çϱ⠹ٶø´Ï´Ù. À̱ÛÀº Çѱ¹Åë½ÅÀÇ xDSLÀ» »ç¿ëÀ» °¡Á¤Ç߱⠶§¹®¿¡ PPTP¸¦ »ç¿ëÇÏ´Â
Çϳª·ÎÅë½Å
°°Àº °æ¿ì´Â ÇØ´çµÇÁö ¾Ê½À´Ï´Ù.(À̱ۿ¡¼ »ç¿ëÇÏ´Â mpd¶ó´Â ÇÁ·Î±×·¥ÀÌ PPTP¸¦ Áö¿øÇÏÁö¸¸ ½ÃÇèÇØº¸Áö´Â ¸øÇß½À´Ï´Ù.)
°íÁ¤IP¸¦ »ç¿ëÇÏ´Â °æ¿ì¿¡´Â À¯Àú¸ðµå/Ä¿³Î¸ðµå PPPoEÀÇ ¼³Á¤ÀÌ Çʿ䰡 ¾ø½À´Ï´Ù. FreeBSD¿¡¼´Â ¸¶Ä¡ Àü¿ë¼±¿¡ ¹°·Á
Àִ°Íó·³ ¼³Á¤ÇÏ¸é µÇ°í ´Ù¸¥ ¸ðµç º¹ÀâÇÑ ºÎºÐÀº xDSL¸ðµ©¿¡¼ ó¸®ÇÕ´Ï´Ù.
À¯Àú¸ðµå PPPoE¹®¼
http://www.kr.freebsd.org/doc/howto-hanaro_ADSL/
http://www.kr.freebsd.org/doc/howto-kt_ADSL
(ÁÖÀÇ:
º»±Û¿¡¼ ¼³¸íÇÏ´Â ÇϳªÀÇ xDSL ¶óÀÎÀ» ÀÌ¿ëÇÏ¿© ¿©·¯ ½Ã½ºÅÛÀÌ »ç¿ëÇÏ´Â ¹æ¹ýÀº ±¹³»ÀÇ ISP¿¡¼ ±ÝÁöÇϰí ÀÖ´Â ¹æ¹ýÀÏ ¼ö
ÀÖ½À´Ï´Ù. ISP¿¡¼´Â º°µµÀÇ ºÎ°¡ºñ¿ëÀ» û±¸Çϰųª ¼ºñ½ºÀÇ ÁߴܵîÀÇ Á¶Ä¡¸¦ ÃëÇÒ ¼ö µµ ÀÖ½À´Ï´Ù. ÀÌ ¹æ¹ýÀ» »ç¿ëÇÏ´Ù°¡ ¹ß»ýÇÒ
¼ö ÀÖ´Â Á¤½ÄÀû/¹°ÁúÀûÀÎ ¸ðµç ¹®Á¦´Â À̸¦ »ç¿ëÇÏ´Â »ç¿ëÀÚ¿¡°Ô ÀüÀûÀ¸·Î ´Þ·Á ÀÖ½À´Ï´Ù.)
Ä¿³Î¸ðµå PPP´Â FreeBSDÀÇ °ø½Ä ¹®¼¿¡µµ Á¦´ë·Î ¼³¸íµÇ¾î ÀÖÁö ¾Ê¾Æ¼ ¸¹Àº ºÐµéÀÌ ±× ½Çü¿Í ÀåÁ¡À»
¸ð¸£°í ÀÖ½À´Ï´Ù.±¹³»ÀÇ xDSL¿¡¼ »ç¿ëÇÏ´Â PPPoE´Â ´ëºÎºÐÀÇ »ç¿ëÀÚµéÀÌ À¯Àú¸ðµå PPPoE ClientÀÎ ppp(8)¸¦
»ç¿ëÇϰí ÀÖ½À´Ï´Ù. À¯Àú¸ðµå PPPoE´Â °³¹ßÀÇ Æí¸®ÇÔ°ú µð¹ö±ëÀÇ ÀåÁ¡ÀÌ ÀÖÀ¸³ª Ä¿³Î°ú »ç¿ëÀÚ ¿µ¿ª°£ÀÇ µ¥ÀÌÅÍ
Àü¼Û(copyin(9), copyout(9))À¸·Î ÀÎÇØ¼ ¸¹Àº ºÎÇϸ¦ °¡Áö°í ÀÖ½À´Ï´Ù. °³ÀÎ »ç¿ëÀÚ°¡ ´Ü¼øÇÑ PPPoE
Client·Î »ç¿ëÇϱ⿡´Â ¾ÆÁ÷ xDSLÀÇ ¼Óµµ°¡ ºü¸£Áö ¾Ê±â ¶§¹®¿¡ º° ¹®Á¦°¡ ¾øÁö¸¸, ¹æÈº®°ú NAT¸¦ °áÇÕÇÏ¿©
PPPoE Client¸¦ gateway·Î »ç¿ëÇÒ °æ¿ì È¿À²ÀûÀΠ󸮿¡ ¾î·Á¿òÀÌ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù. ÀÌ ±ÛÀº Ä¿³Î¸ðµå»ó¿¡¼
µ¿ÀÛÇÏ´Â
PPPoE¸¦ ±¸¼ºÇÏ¿© ±¸ÇüÀÇ ´À¸° ½Ã½ºÅÛÀ¸·Îµµ ¹æÈº®ÀÇ stateful inspection°ú NAT¸¦ °áÇÕÇÑ »óÅ¿¡¼µµ ÃÖÀûÀÇ
¼º´ÉÀ» ³¾ ¼ö ÀÖ´Â ¹æ¹ýÀ» ¼³¸íÇÕ´Ï´Ù.
<±×¸² 1>Àº Ä¿³Î¸ðµå
PPPoE¼³Á¤¿¡ »ç¿ëÇÒ netowrk±¸¼ºµµ ÀÔ´Ï´Ù.
[FreeBSD mpd]
[Àüȱ¹ÀÇ DSLSM]<--------------->|xDSL¸ðµ© |<----------------->|
NIC NIC
|<------------->[HUB]<------------------>
Àüȼ±
UTP |fxp0 fxp1 |
UTP
192.168.1.X
À¯µ¿ IP 192.168.1.1
ÀÌ ±ÛÀº FreeBSD 4.7°ú
FreeBSD 5.0»ó¿¡¼ mpd 3.12·Î ½ÃÇèÇÏ¿´½À´Ï´Ù.
Ä¿³Î¸ðµå PPPoEÀÇ Á¦¾î¸¦
´ã´çÇÏ´Â ÇÁ·Î±×·¥Àº mpd¿¡¼ ´ã´çÇÕ´Ï´Ù. mpd´Â ½Ã½ºÅÛ¿¡ ±âº»À¸·Î ¼³Ä¡µÇÁö ¾Ê±â ¶§¹®¿¡ ports¿¡¼ ¼³Ä¡Çϵµ·Ï ÇÕ´Ï´Ù.
µÇµµ·Ï ports¸¦ ÃÖ½ÅÀÇ °ÍÀ¸·Î °»½ÅÇÑ´ÙÀ½ ¼³Ä¡Çϵµ·Ï ÇÕ´Ï´Ù. portsÀÇ °»½ÅÀº cvsup(1)°ú
/usr/share/exmaples/cvsupÀ» ÂüÁ¶Çϱ⠹ٶø´Ï´Ù.
À¯Àú¸ðµå ppp(8)¿Í ´Þ¸® mpd´Â ±âº» ÇÁ·Î±×·¥ÀÌ ¾Æ´Ï±â ¶§¹®¿¡ InernetÀÌ µÇ´Â ½Ã½ºÅÛ¿¡¼ mpdÇÁ·Î±×·¥À»
´Ù¿î·ÎµåÇÏ¿© /usr/ports/distfiles·Î º¹»ç ÈÄ ¼³Ä¡Çϰųª ¶Ç´Â pkg_add(1)¸¦ ÀÌ¿ëÇØ¼ binary¸¦
¼³Ä¡Çؾß
ÇÕ´Ï´Ù. µÎ ¹æ¹ý ¸ðµÎ networkÀÌ µÇÁö ¾ÊÀ¸¸é ¼Ò¿ëÀÌ ¾ø±â ¶§¹®¿¡ networkÀ̵Ǵ ´Ù¸¥ ½Ã½ºÅÛÀ» ÀÌ¿ëÇØ¾ß ÇÕ´Ï´Ù. ´Ù¸¥
¹æ¹ýÀ¸·Î´Â À¯Àú¸ðµå ppp(8)·Î ¸ÕÀú ¼³Á¤ ÈÄ ´Ù½Ã mpd¸¦ ¼³Ä¡ÇÏ¸é µË´Ï´Ù.
%su -
#cd /usr/ports/net/mpd
#make && make install && make clean
¼³Ä¡°¡ ³¡³ª¸é mpd´Â /usr/local/sbin¿¡ ¼³Ä¡µÇ°í mpdÀÇ ¼³Á¤ ÆÄÀÏÀº
/usr/local/etc/mpd¿¡ sample ¼³Á¤ÆÄÀϰú ÇÔ²² ¼³Ä¡µË´Ï´Ù. mpdÀÇ µµ¿ò¸»Àº
/usr/local/share/doc/mpd¿¡ postscript¿Í html·Î ¼³Ä¡µÇ¹Ç·Î ÇÊ¿äÇÒ °æ¿ì ÂüÁ¶ÇÏ¸é µÇ°Ú½À´Ï´Ù.
mpd´Â PPPoE»Ó ¾Æ´Ï¶ó ¸¹Àº
´Ù¸¥ ¹æ½Äµµ Áö¿øÇϱ⠶§¹®¿¡ ¼³Á¤ÀÌ º¹ÀâÇÑ ÆíÀÔ´Ï´Ù. ±×Áß °¡Àå Æ¯ÀÌÇÒ¸¸ÇÑ °ÍÀº Multi-link PPPÀÇ Áö¿øÀ¸·Î ¿©·¯°³ÀÇ
¹°¸®ÀûÀÎ PPP ¶óÀÎÀÌ ÀÖÀ» °æ¿ì À̸¦ ÇϳªÀÇ bundleÀ̶ó´Â °³³äÀ¸·Î¼ °ü¸®¸¦ ÇÏ¸ç »ç¿ëÀÚ´Â µ¿½Ã¿¡ ¿©·¯°³ÀÇ PPP¶óÀÎÀ»
¸¶Ä¡
ÇϳªÀÇ ¼Óµµ°¡ ºü¸¥ PPPÁ¢¼ÓÀ¸·Î Ãë±ÞÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ÇöÀç ±¹³»ÀÇ ISP¿¡¼ Multi-link PPP¸¦ Áö¿øÇÏÁö´Â
¾Ê´Â
°ÍÀ¸·Î ¾Ë°í ÀÖ½À´Ï´Ù. (Multi-link PPP´Â À¯Àú¸ðµå PPPoE ClientÀÎ ppp(8)¿¡¼µµ Áö¿øµË´Ï´Ù.)
mpdÀÇ ¼³Á¤Àº ÃÖ¼ÒÇÑ mpd.conf,mpd.links, mpd.secretÀÇ ¼¼°³ÀÇ ÆÄÀÏÀ» ¼öÁ¤Çؾß
ÇÕ´Ï´Ù.(mpd´Â PPPoE¿Í ÇÔ²² PPTPµµ Áö¿øÇÕ´Ï´Ù. Çϳª·ÎÅë½ÅÀÇ xDSLÀ» »ç¿ëÇÏ´Â ºÐÀº ¼³Ä¡µÈ
mpd.conf.sampleÀÇ PPTPºÎºÐÀ» ÂüÁ¶Çϱ⠹ٶø´Ï´Ù.)
Çѱ¹Åë½Å xDSL»ç¿ë½Ã ´ÙÀ½À̸é
ÃæºÐÇϸç, º°µµÀÇ ¼¼¹ÐÇÑ ¼³Á¤ÀÌ ÇÊ¿äÇѺÐÀº /usr/local/share/doc/mpd¿¡ ¼³Ä¡µÈ ¹®¼¸¦ ÂüÁ¶Çϱ⠹ٶø´Ï´Ù.
#
# Default
configuration
#
default:
load
PPPoE0
---- (1)
---- (2)
#
#
Bundle/PPPoE client example (see also mpd.links.sample entry "PPPoE")
#
# Bundle
ASDL
Link0
PPPoE0:
---- (3)
new -i ng0 PPPoE0
PPPoE0
---- (4)
set iface addrs 1.1.1.1
2.2.2.2
---- (5)
set iface route
default
---- (6)
set iface disable
on-demand
---- (7)
set iface idle
0
---- (8)
set bundle disable
bw-manage
---- (9)
set bundle disable
multilink
---- (10)
set bundle authname "½ÅûÇÑ
ID"
---- (11)
set link no acfcomp
protocomp
---- (12)
set link disable pap
chap
---- (13)
set link accept pap
chap
---- (14)
set link mtu
1492
---- (15)
set ipcp yes
vjcomp
---- (16)
set ipcp ranges 0.0.0.0/0
0.0.0.0/0
---- (17)
#set iface up-script
/usr/local/etc/mpd/mpd.linkup
---- (18)
#set iface down-script
/usr/local/etc/mpd/mpd.linkdown
---- (19)
open
iface
---- (20)
°¢ ¼³Á¤ÀÇ #À¸·Î ½ÃÀÛÇÏ´Â ¶óÀÎÀº ÁÖ¼®À¸·Î
¼³Á¤¿¡´Â ¾Æ¹« °ü·ÃÀÌ ¾ø½À´Ï´Ù.
(1)Àº PPPoE0 ¶ó´Â ¼³Á¤À» mpd.conf¿¡¼ ã¾Æ¼ loadÇ϶ó´Â °ÍÀÔ´Ï´Ù.
(2)ÀÇ ºóÁÙÀº load PPPoE0 ¸í·ÉÀÌ ¸ØÃ⠺κÐÀ» ÁöÁ¤ÇÏ´Â °ÍÀÔ´Ï´Ù. ¸¸ÀÏ ÀÌ ºÎºÐÀÌ ¾ø´Ù¸é °è¼ÓÇØ¼ ´ÙÀ½ ¶óÀÎÀ»
½ÇÇàÇÏ·Á°í ÇÒ°ÍÀÔ´Ï´Ù.
(3)Àº load PPPoE0¿¡¼ ÁöÁ¤ÇÑ ¼³Á¤ PPPoE0ÀÇ ½ÃÀÛÀ» ³ªÅ¸³À´Ï´Ù. mpd.confÆÄÀÏ¿¡´Â ¿©·¯°³ÀÇ ¼³Á¤ÀÌ µ¿½Ã¿¡
ÀÖÀ» ¼ö ÀÖ°í Æ¯º°È÷ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é default: ¼³Á¤À» ½ÇÇàÇÏ°Ô µË´Ï´Ù.(ppp.conf¿Í µ¿ÀÏÇÑ ¹æ½ÄÀÔ´Ï´Ù.)
(4)ÀÇ -i ng0´Â »ç¿ëÇÒ netgraph interface¸¦ ÁöÁ¤ÇÕ´Ï´Ù. Ưº°È÷ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é mpd°¡ ½ÇÇà½Ã ¸¶´Ù
»õ·Î¿î netgraph node¸¦ »ý¼ºÇϹǷΠƯº°ÇÑ ÀÌÀ¯°¡ ¾ø´Ù¸é Ç×»ó ÁöÁ¤Çϵµ·Ï ÇÕ´Ï´Ù. ng0´ÙÀ½ÀÇ PPPoE0
PPPoE0´Â
°¢°¢ bundle À̸§ÀÌ PPPoE0, linkÀ̸§ÀÌ PPPoE0 ÀÓÀ» ³ªÅ¸³À´Ï´Ù. ÇϳªÀÇ bundleÀº º¸Åë ¿©·¯°³ÀÇ
link·Î
ÀÌ·ç¾î Áý´Ï´Ù. ¿ì¸®ÀÇ °æ¿ì xDSL¶óÀÎÀÌ ÇϳªÀ̱⠶§¹®¿¡ ÇϳªÀÇ link·Î bundleÀÌ ±¸¼ºµË´Ï´Ù.
(5)´Â °¡»óÀÇ IP·Î¼ Á¢¼ÓÀÌ ÀÌ·ç¾îÁö¸é ÇÒ´ç¹ÞÀº IPÁÖ¼Ò·Î ´ëÄ¡µË´Ï´Ù.
(6)Àº Á¢¼ÓÀÌ ÀÌ·ç¾î Áö¸é ÇÒ´ç¹ÞÀº ÁÖ¼Ò¸¦ default gateway·Î ¼³Á¤Çϵµ·Ï ÇÏ´Â °ÍÀÔ´Ï´Ù. µ¿ÀÛÁß ´Ù½ÃÀ¯µ¿
IP°¡ º¯°æµÇ¸é ÀÌ¿¡ µû¶ó¼ default gatewayµµ ÀÚµ¿À¸·Î º¯°æµË´Ï´Ù.
(7),(8)Àº Á¢¼ÓÀÌ Ç×»ó À¯Áö µÇµµ·Ï Çϱâ À§Çؼ ÀÖ½À´Ï´Ù. ±¹³»¿¡¼´Â xDSL»ç¿ë½Ã Á¢¼Ó½Ã°£°ú ÆÐŶÀÇ ¾ç¿¡ °ü°è¾øÀÌ ¿ä±ÝÀÌ
ÀÏÁ¤Çϱ⠶§¹®¿¡ Ç×»ó Á¢¼ÓµÇ¾î ÀÖµµ·Ï Çϴ°ÍÀÌ À¯¸®ÇÕ´Ï´Ù.
(9)´Â Æ®·¡ÇÈ·®¿¡ µû¶ó¼ µ¿ÀûÀ¸·Î Á¢¼ÓÀ» Á¦ÇÑÇÏ´Â ±â´ÉÀ» »ç¿ëÇÏÁö ¾Êµµ·Ï ¼³Á¤Çß½À´Ï´Ù.
(10)Àº Multi-link PPPÀÇ Áö¿øÀ» À§ÇѰÍÀÌÁö¸¸ ±¹³»¼´Â Multi-link PPPÀÇ Áö¿øÀÌ µÇÁö ¾ÊÀ¸¹Ç·Î off·Î
¼³Á¤ÇÕ´Ï´Ù.
(11)Àº xDSL½Åû½Ã ±âÀçÇÑ »ç¿ëÀÚ IDÀÔ´Ï´Ù.
(12)´Â xDSL¿¡¼´Â Address, Control, Protocol field¸¦ ¾ÐÃàÇÏÁö ¾Êµµ·Ï ÇÕ´Ï´Ù.
(13),(14)´Â ÀÎÁõ¹æ½ÄÀ» ÁöÁ¤ÇÕ´Ï´Ù. Çѱ¹Åë½ÅÀÇ °æ¿ì PAP¸¦ »ç¿ëÇÕ´Ï´Ù.
(15)´Â xDSL¶óÀÎÀÌ »ç¿ëÇÒ MTU¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ethernetÀ̸鼵µ MTU°¡ 1500À¸·Î ¼³Á¤ÇÏÁö ¾Ê´Â ÀÌÀ¯´Â ¿ì¸®°¡
½ÇÁ¦·Î´Â PPP¸¦ »ç¿ëÇϱ⠶§¹®ÀÔ´Ï´Ù.
(16)Àº À¯µ¿IP¸¦ ¹Þ±âÀ§ÇÑ protocol IPCP¿¡¼ vjcomp(Van Jacobson TCP header
compression)¸¦ »ç¿ëÇϵµ·Ï ÁöÁ¤ÇÕ´Ï´Ù. vjcomp´Â PPP¿¡¼ TCP headerÀÇ µ¥ÀÌÅÍ ¾çÀ» ÁÙ¿© ¼º´ÉÀ»
Çâ»ó½Ãŵ´Ï´Ù.
(17)Àº ºÎ¿©¹ÞÀ» IPÀÇ ¹üÀ§¸¦ ÁöÁ¤ÇÏ´Â °ÍÀÔ´Ï´Ù. 0.0.0.0/0Àº ¾î¶² °ÍÀ̳ª °¡´ÉÇÔÀ» ¸»ÇÕ´Ï´Ù. °íÁ¤IP¸¦ »ç¿ëÇÏ´Â
°æ¿ì´Â À̺κÐÀ» ¼ºñ½º½Åû½Ã ºÎ¿©¹ÞÀº °ÍÀ¸·Î ¼³Á¤Ç϶ó°í ÇÏÁö¸¸ ÀÌ·¸°Ô ÇÏ¸é ±¹³»¿¡¼´Â µ¿ÀÛÇÏÁö ¾Ê½À´Ï´Ù. Çѱ¹Åë½ÅÀÇ °íÁ¤IP
¼ºñ½º¸¦ ÀÌ¿ëÇÏ´Â ºÐÀº PPPoE´Â ´Ù Àؾî¹ö¸®°í Àü¿ë¼±Ã³·³ ¼³Á¤ÇÏ¸é µË´Ï´Ù.
(18), (19)´Â interface°¡ up ¶Ç´Â downµÇ¾úÀ» ¶§ ½ÇÇàÇÒ script¸¦ ÁöÁ¤ÇÕ´Ï´Ù. º¸ÅëÀÇ °æ¿ì¿¡´Â Çʿ䰡
¾øÁö¸¸ ¹æÈº®/NAT¿ÍÀÇ ¿¬µ¿À¸·Î interfaceÀÇ ÁÖ¼Ò°¡ º¯°æµÉ °æ¿ì »õ·Î¿î ÁÖ¼Ò¸¦ ¹æÈº®°ú NAT·ê¿¡ ¼³Á¤ÇÒ ¶§ ÁöÁ¤Çϵµ·Ï
ÇÕ´Ï´Ù.
(20)Àº interface¸¦ ¼³Á¤ÇÏ°í ºÎ¿©¹ÞÀº IP¸¦ ÀÌ¿ëÇØ¼ route¸¦ ¼³Á¤Çϵµ·Ï ÇÕ´Ï´Ù. À¯Àú¸ðµå ppp(8)¿Í ´Þ¸®
mpd¿¡¼´Â "enable dns"¿¡ ÇØ´çÇÏ´Â ºÎºÐÀÌ ¾ø½À´Ï´Ù. ±×·¯¹Ç·Î »ç¿ëÀÚ´Â ÀÚ½ÅÀÌ »ç¿ëÇÒ DNS¸¦
/etc/resolv.conf¿¡ ´ÙÀ½°ú °°ÀÌ Á÷Á¢
ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù.
search yourdomain.co.kr
nameserver 168.126.63.1
#nameserver 2Â÷ name server IP
#nameserver 3Â÷ name server IP
mpd.conf¿¡¼ ÁöÁ¤ÇÑ
¼³Á¤¿¡¼
»ç¿ëÇÒ link¸¦ ¼³Á¤ÇÕ´Ï´Ù.
#
# mpd.links
#
PPPoE0:
---- (1)
set link type
pppoe
---- (2)
set pppoe iface
fxp0 ----
(3)
(1)Àº 2.3.1ÀÇ mpd.confÀÇ (3)¿¡¼ ÁöÁ¤ÇÑ linkÀÇ À̸§ÀÔ´Ï´Ù.
(2)´Â ÇØ´ç link°¡ PPPoE¸¦ »ç¿ëÇÑ´Ù´Â °ÍÀ» ¾Ë¸³´Ï´Ù.
(3)Àº xDSLÀÇ ¸ðµ©¿¡ UTP Cable·Î ¿¬°áµÈ FreeBSD½Ã½ºÅÛÀÇ NIC µð¹ÙÀ̽º À̸§À» ÁöÁ¤ÇÕ´Ï´Ù.(±×¸² 1 ÂüÁ¶)
fxp¿ÜÀÇ ´Ù¸¥ µð¹ÙÀ̽º¶ó¸é ÀÌ ºÎºÐÀ» rl0, xl0 µîÀ¸·Î º¯°æÇϽʽÿä.
mpd.confÀÇ (11)¿¡¼
ÁöÁ¤ÇÑ ¼³Á¤¿¡¼ »ç¿ëÇÒ linkÀÇ ID¿Í ºñ¹Ð¹øÈ£¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
#
# mpd.secret
#
½ÅûÇÑID
"ºñ¹Ð¹øÈ£" ----- (1)
(1)Àº 2.3.1ÀÇ mpd.confÀÇ (11)¿¡¼ ÁöÁ¤ÇÑ IDÀÔ´Ï´Ù.
ID¿Í ºñ¹Ð¹øÈ£´Â ÃÖ¼Ò Çϳª ÀÌ»óÀÇ Åǹ®ÀÚ·Î ±¸ºÐµÇ¾î¾ß ÇÕ´Ï´Ù.
mpd´Â À¯Àú¸ðµå ppp(8)¿Í
µ¿ÀÏÇÑ ¼³Á¤À» »ç¿ëÇÕ´Ï´Ù. ´ÙÀ½À» /etc/syslog.conf¿¡ Ãß°¡Çϰí syslogd¸¦ restartÇÕ´Ï´Ù.
!mpd
*.*
/var/log/mpd.log
/var/log/mpd.log´Â touch¸¦ ÀÌ¿ëÇØ¼ »ý¼ºÇϰí ÇÊ¿äÇÒ °æ¿ì /etc/newsyslog.conf¿¡¼
/var/log/mpd.logÀÇ rotationÀÌ ÀϾµµ·Ï ¼³Á¤ ÇÕ´Ï´Ù.
xDSL°ú ¿¬°áµÈ fxp0´Â
IP¸¦
ÇÒ´çÇÏÁö ¾Êµµ·Ï Çϰí Switching Hub¿Í ¿¬°áµÈ fxp1¿¡´Â 192.168.1.1°ú °°ÀÌ gateway·Î »ç¿ëÇÒ IP¸¦
ÇÒ´çÇÕ´Ï´Ù. ÀÌ¹Ì fxp0¿¡ IP°¡ ÇÒ´çµÇ¾ú´Ù¸é À̸¦ Á¦°Å ÇÕ´Ï´Ù.
#ifconfig fxp0 inet delete X.X.X.X
#ifconfig fxp1 inet 192.168.1.1
netmask 255.255.255.0 up
±×¸®°í ifconfig -a¸¦ ÀÌ¿ëÇØ¼ xDSL°ú Hub·Î ºÎÅÍÀÇ Carrier ½ÅÈ£°¡ ¿À´ÂÁö È®ÀÎÇÕ´Ï´Ù.
#ifconfig -a
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet6
fe80::290:27ff:fe35:6c4c%fxp0 prefixlen 64 scopeid 0x1
ether 00:90:27:35:6c:4c
media: Ethernet autoselect
(100baseTX <full-duplex>)
status: active
fxp1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.1.1 netmask
0xffffff00 broadcast 192.168.1.255
inet6
fe80::2d0:b7ff:fe2c:a06c%fxp1 prefixlen 64 scopeid 0x2
ether 00:d0:b7:2c:a0:6c
media: Ethernet autoselect
(100baseTX <full-duplex>)
status: active
fxp0´Â IPv4ÁÖ¼Ò°¡ ÁöÁ¤µÇÁö ¾Ê¾Ò°í, fxp0, fxp1ÀÇ status°¡ "active"ÀÎ °ÍÀ» È®ÀÎÇÕ´Ï´Ù.
mpd¿¡´Â ÇöÀç PPPoE¿¡¼ netgraph ethernet Ä¿³Î ¸ðµâÀ» Á¦´ë·Î ¿Ã¸®Áö ¸øÇÏ´Â ¹ö±×°¡
ÀÖ½À´Ï´Ù. ÀÌÀÇ ÇØ°áÇϱâ À§Çؼ ½ÇÇàÇϱâÀü ¸ÕÀú ÇØ´ç ¸ðµâÀ» ·ÎµåÇϵµ·Ï ÇÕ´Ï´Ù. ¸ðµç ¼³Á¤ÀÌ ³¡³ª¸é mpd¸¦ ½ÇÇàÇϰí
Á¦´ë·Î ¿¬°áÀÌ µÇ´ÂÁö È®ÀÎÇÕ´Ï´Ù.
#kldload ng_ether
#/usr/local/sbin/mpd
mpd°¡ ½ÇÇàµÇ¸é foregound·Î ½ÇÇàµÇ¹Ç·Î ¸ðµç ¸Þ¼¼Áö°¡ stdoutÀ¸·Î Ãâ·ÂµË´Ï´Ù. ¸¸ÀÏ
ng_ether Ä¿³Î¸ðµâÀ» ·ÎµåÇÏÁö ¾ÊÀ¸¸é "can't create pppoe peer to fxp0:,orphans: No
such file or directory"¶ó´Â ¸Þ¼¼Áö°¡ stdoutÀ¸·Î Ãâ·ÂµË´Ï´Ù.
Á¤»óÀûÀÎ ¿¬°áÀÌ µÇÁö ¾ÊÀ¸¸é ^C ·Î ½ÇÇàÀ» ÁßÁöÇÑ ÈÄ ¼³Á¤ÆÄÀϵîÀ» °Ë»çÇÏ°í ´Ù½Ã ½ÇÇàÇØ¼ Á¤»óÀûÀÎ ¿¬°áÀÌ µÇ´Â°ÍÀ»
È®ÀÎÇÕ´Ï´Ù. Á¤»óÀûÀ¸·Î Á¢¼ÓÀÌ µÈ´Ù¸é ´ÙÀ½°ú °°Àº ¸Þ¼¼Áö°¡ /var/log/mpd.log¿¡ »ý¼ºµË´Ï´Ù.
Feb 26 18:07:02 monster mpd: mpd: pid 539, version 3.12
(root@monster.kt-is.co.kr 07:52 26-Feb-2003)
Feb 26 18:07:02 monster mpd: [PPPoE0] ppp node is "mpd539-PPPoE0"
Feb 26 18:07:02 monster mpd: [PPPoE0] using interface ng0
Feb 26 18:07:02 monster mpd: [PPPoE0] IPCP: peer address cannot be zero
Feb 26 18:07:02 monster mpd: [PPPoE0] IFACE: Open event
Feb 26 18:07:02 monster mpd: [PPPoE0] IPCP: Open event
Feb 26 18:07:02 monster mpd: [PPPoE0] IPCP: state change Initial -->
Starting
Feb 26 18:07:02 monster mpd: [PPPoE0] IPCP: LayerStart
Feb 26 18:07:02 monster mpd: [PPPoE0] bundle: OPEN event in state CLOSED
Feb 26 18:07:02 monster mpd: [PPPoE0] opening link "PPPoE0"...
Feb 26 18:07:02 monster mpd: [PPPoE0] link: OPEN event
Feb 26 18:07:02 monster mpd: [PPPoE0] LCP: Open event
Feb 26 18:07:02 monster mpd: [PPPoE0] LCP: state change Initial -->
Starting
Feb 26 18:07:02 monster mpd: [PPPoE0] LCP: LayerStart
Feb 26 18:07:02 monster mpd: [PPPoE0] device: OPEN event in state DOWN
Feb 26 18:07:02 monster mpd: [PPPoE0] exec: /sbin/ifconfig fxp0 up
Feb 26 18:07:03 monster mpd: [PPPoE0] device is now in state OPENING
Feb 26 18:07:03 monster mpd: [PPPoE0] rec'd command 9 from "[13]:"
Feb 26 18:07:03 monster mpd: [PPPoE0] rec'd command 11 from "[13]:"
Feb 26 18:07:03 monster mpd: [PPPoE0] connection successful
Feb 26 18:07:03 monster mpd: [PPPoE0] device: UP event in state OPENING
Feb 26 18:07:03 monster mpd: [PPPoE0] device is now in state UP
Feb 26 18:07:03 monster mpd: [PPPoE0] link: UP event
Feb 26 18:07:03 monster mpd: [PPPoE0] link: origination is local
Feb 26 18:07:03 monster mpd: [PPPoE0] LCP: Up event
Feb 26 18:07:03 monster mpd: [PPPoE0] LCP: state change Starting -->
Req-Sent
Feb 26 18:07:03 monster mpd: [PPPoE0] LCP: phase shift DEAD -->
ESTABLISH
Feb 26 18:07:03 monster mpd: [PPPoE0] LCP: SendConfigReq #1
Feb 26 18:07:03 monster mpd: MRU 1492
Feb 26 18:07:03 monster mpd: MAGICNUM 9b96017c
Feb 26 18:07:03 monster mpd: [PPPoE0] LCP: rec'd Configure Request #82
link 0 (Req-Sent)
Feb 26 18:07:03 monster mpd: MAGICNUM 4df3f406
Feb 26 18:07:03 monster mpd: MRU 1500
Feb 26 18:07:03 monster mpd: AUTHPROTO PAP
Feb 26 18:07:03 monster mpd: [PPPoE0] LCP: SendConfigAck #82
Feb 26 18:07:03 monster mpd: MAGICNUM 4df3f406
Feb 26 18:07:03 monster mpd: MRU 1500
Feb 26 18:07:03 monster mpd: AUTHPROTO PAP
Feb 26 18:07:03 monster mpd: [PPPoE0] LCP: state change Req-Sent -->
Ack-Sent
Feb 26 18:07:03 monster mpd: [PPPoE0] LCP: rec'd Configure Ack #1 link
0 (Ack-Sent)
Feb 26 18:07:03 monster mpd: MRU 1492
Feb 26 18:07:03 monster mpd: MAGICNUM 9b96017c
Feb 26 18:07:03 monster mpd: [PPPoE0] LCP: state change Ack-Sent -->
Opened
Feb 26 18:07:03 monster mpd: [PPPoE0] LCP: phase shift ESTABLISH -->
AUTHENTICATE
Feb 26 18:07:03 monster mpd: [PPPoE0] LCP: auth: peer wants PAP, I want
nothing
Feb 26 18:07:03 monster mpd: [PPPoE0] PAP: using authname "½ÅûÇÑ ID"
Feb 26 18:07:03 monster mpd: [PPPoE0] PAP: sending REQUEST
Feb 26 18:07:03 monster mpd: [PPPoE0] LCP: LayerUp
Feb 26 18:07:03 monster mpd: [PPPoE0] PAP: rec'd ACK #1
Feb 26 18:07:03 monster mpd: [PPPoE0] LCP: authorization successful
Feb 26 18:07:03 monster mpd: [PPPoE0] LCP: phase shift AUTHENTICATE
--> NETWORK
Feb 26 18:07:03 monster mpd: [PPPoE0] setting interface ng0 MTU to 1492
bytes
Feb 26 18:07:03 monster mpd: [PPPoE0] up: 1 link, total bandwidth 64000
bps
Feb 26 18:07:03 monster mpd: [PPPoE0] IPCP: Up event
Feb 26 18:07:03 monster mpd: [PPPoE0] IPCP: state change Starting
--> Req-Sent
Feb 26 18:07:03 monster mpd: [PPPoE0] IPCP: SendConfigReq #1
Feb 26 18:07:03 monster mpd: IPADDR 0.0.0.0
Feb 26 18:07:03 monster mpd: COMPPROTO VJCOMP, 16 comp. channels,
no comp-cid
Feb 26 18:07:03 monster mpd: [PPPoE0] IPCP: rec'd Configure Request
#123 link 0 (Req-Sent)
Feb 26 18:07:03 monster mpd: IPADDR 211.196.201.39
Feb 26 18:07:03 monster mpd: 211.196.201.39 is OK
Feb 26 18:07:03 monster mpd: [PPPoE0] IPCP: SendConfigAck #123
Feb 26 18:07:03 monster mpd: IPADDR 211.196.201.39
Feb 26 18:07:03 monster mpd: [PPPoE0] IPCP: state change Req-Sent
--> Ack-Sent
Feb 26 18:07:03 monster mpd: [PPPoE0] IPCP: rec'd Configure Reject #1
link 0 (Ack-Sent)
Feb 26 18:07:03 monster mpd: COMPPROTO VJCOMP, 16 comp. channels,
no comp-cid
Feb 26 18:07:03 monster mpd: [PPPoE0] IPCP: SendConfigReq #2
Feb 26 18:07:03 monster mpd: IPADDR 0.0.0.0
Feb 26 18:07:03 monster mpd: [PPPoE0] IPCP: rec'd Configure Nak #2 link
0 (Ack-Sent)
Feb 26 18:07:03 monster mpd: IPADDR 218.145.203.71
Feb 26 18:07:03 monster mpd: 218.145.203.71 is OK
Feb 26 18:07:03 monster mpd: [PPPoE0] IPCP: SendConfigReq #3
Feb 26 18:07:03 monster mpd: IPADDR 218.145.203.71
Feb 26 18:07:03 monster mpd: [PPPoE0] IPCP: rec'd Configure Ack #3 link
0 (Ack-Sent)
Feb 26 18:07:03 monster mpd: IPADDR 218.145.203.71
Feb 26 18:07:03 monster mpd: [PPPoE0] IPCP: state change Ack-Sent
--> Opened
Feb 26 18:07:03 monster mpd: [PPPoE0] IPCP: LayerUp
Feb 26 18:07:03 monster mpd: 218.145.203.71 ->
211.196.201.39
Feb 26 18:07:03 monster mpd: [PPPoE0] IFACE: Up event
Feb 26 18:07:03 monster mpd: [PPPoE0] setting interface ng0 MTU to 1492
bytes
Feb 26 18:07:03 monster mpd: [PPPoE0] exec: /sbin/ifconfig ng0
218.145.203.71 211.196.201.39 netmask 0xffffffff -link0
Feb 26 18:07:03 monster mpd: [PPPoE0] exec: /sbin/route add 0.0.0.0
211.196.201.39
Feb 26 18:07:03 monster mpd: [PPPoE0] IFACE: Up event
Á¦ÀÏ ¸¶Áö¸·ÀÇ "IFACE: Up
event"¸¦ ÁÖÀÇÇØ¼ º¸½Ã±â ¹Ù¶ø´Ï´Ù. ÀÌÁ¦ ifconfig¸¦ ½ÇÇàÇØ º¸¸é netgraph interface ng0°¡
»ý¼ºµÇ¾ú½À´Ï´Ù.
#ifconfig -a
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet6
fe80::290:27ff:fe35:6c4c%fxp0 prefixlen 64 scopeid 0x1
ether 00:90:27:35:6c:4c
media: Ethernet autoselect
(100baseTX <full-duplex>)
status: active
fxp1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.1.1 netmask
0xffffff00 broadcast 192.168.1.255
inet6
fe80::2d0:b7ff:fe2c:a06c%fxp1 prefixlen 64 scopeid 0x2
ether 00:d0:b7:2c:a0:6c
media: Ethernet autoselect
(100baseTX <full-duplex>)
status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen
64 scopeid 0x3
inet 127.0.0.1 netmask
0xff000000
ng0:
flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu
1492
inet 218.145.203.71 -->
211.196.201.39 netmask 0xffffffff
inet6
fe80::290:27ff:fe35:6c4c%ng0 prefixlen 64 scopeid 0x4
¼Óµµ°¡ ºü¸¥ ftp siteµî¿¡¼ ¿ë·®ÀÌ Å« ÆÄÀÏÀ» ¹ÞÀ¸¸é¼ top(1)À» ÀÌ¿ëÇØ¼ ½Ã½ºÅÛÀÇ ºÎÇϸ¦
È®ÀÎÇÕ´Ï´Ù. ppp(8)¸¦ »ç¿ëÇÒ¶§¿Í mpd¸¦ »ç¿ë½ÃÀÇ ºÎÇϸ¦ ºñ±³ÇØ º¸¸é Ä¿³Î¸ðµå PPPoEÀÇ ÀåÁ¡À» ½Ç°¨ÇÒ ¼ö ÀÖ½À´Ï´Ù.
mpd´Â À¯Àú¸ðµå
ppp(8)¿Í ´Þ¸® rc.conf¿¡¼ ÁöÁ¤ÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀÌ ¾ø½À´Ï´Ù.
ÇÊ¿äÇÒ °æ¿ì À̸¦ Áö¿øÇϵµ·Ï script¸¦ ÀÛ¼ºÇÏ¸é µÇ°ÚÁö¸¸ ÇöÀç·Î¼´Â /etc/rc.local ¶Ç´Â
/usr/local/etc/rc.d/mpd.sh¿¡ ÁöÁ¤ÇÏ´Â °ÍÀÌ °¡Àå Æí¸®ÇÕ´Ï´Ù. /etc/rc.conf¿¡´Â ´ÙÀ½°ú °°ÀÌ
ÁöÁ¤ÇÕ´Ï´Ù.
...
defaultrouter="NO"
ifconfig_fxp0=up
ifconfig_fxp1="inet 192.168.1.1 netmask 255.255.255.0"
ppp_enable="NO"
...
rc.local¿¡´Â ´ÙÀ½°ú °°ÀÌ ¼³Á¤ÇÕ´Ï´Ù.
#!/bin/sh
#
# kernel mode PPPoE setup
#
if [ -x /usr/local/sbin/mpd -a -f /usr/local/etc/mpd/mpd.conf ]; then
/sbin/kldload ng_ether
echo -n " mpd";
/usr/local/sbin/mpd -b
fi
mpdÀÇ ¸ðµç ¼³Á¤ÀÌ ¿Ï·áµÇ¸é
¸®ºÎÆ®
Çϰí mpd°¡ Á¤»óÀûÀ¸·Î µ¿ÀÛÇϰí ÀÖ´ÂÁö È®ÀÎÇÕ´Ï´Ù. ¾Æ¿ï·¯ ½Ã½ºÅÛÀÇ network ¶ÇÇÑ µ¿ÀÛÇÏ´ÂÁö È®ÀÎÇÕ´Ï´Ù. PPPoE
Client¸¦ gateway·Î ÁöÁ¤Çؼ ¹æÈº®°ú NAT¸¦ »ç¿ëÇÏ·Á¸é ´ÙÀ½ÀýÀÇ ¹æÈº®°ú NAT¿ÍÀÇ ¿¬µ¿À» ÂüÁ¶Çϼ¼¿ä.
FreeBSD¿¡¼´Â
ipfilter¿Í
ipfw ±×¸®°í Á¦°¡ OpenBSD¿¡¼ Æ÷ÆÃÇÑ pfÀÇ ¼¼°³ÀÇ ¹æÈº®ÀÌ
Áö¿øµË´Ï´Ù. ¸ðµÎ ÀåÁ¡°ú ´ÜÁ¡ÀÌ ÀÖ°í, Ä¿³Î¸ðµå PPPoE¿Í ÇÔ²² »ç¿ëÇÒ ¼ö Àֱ⠶§¹®¿¡ »ç¿ëÇÏ´Â ºÐÀÇ ÃëÇâ¿¡ µû¶ó¼ ¼±ÅÃÇϽøé
µË´Ï´Ù.(FreeBSD pf´Â FreeBSD 4.x¿¡¼ »ç¿ëÇÒ
¼ö ¾ø½À´Ï´Ù.) º»Àý¿¡¼´Â pf¿Í ipfilter¸¦ À§ÁÖ·Î ÇØ¼ ¼³¸íÇϵµ·Ï ÇϰڽÀ´Ï´Ù. ipfwÀÇ °æ¿ìµµ ÀÌ¿Í
À¯»çÇÕ´Ï´Ù. ipfilter¿Í ipfwÀÇ »ç¿ë¹ýÀº HandbookÀ̳ª manÆäÀÌÁö ¿¡¼ ÂüÁ¶¹Ù¶ø´Ï´Ù. pfÀÇ »ç¿ë¹ýÀº ´ÙÀ½À» ÂüÁ¶¹Ù¶ø´Ï´Ù.
Ä¿³Î¸ðµå PPPoE¸¦ »ç¿ëÇÏ´Â
FreeBSD½Ã½ºÅÛÀ» gateway·Î »ç¿ëÇϱâ À§Çؼ´Â rc.conf¿¡ ´ÙÀ½À» ¼³Á¤ÇØ¾ß ÇÕ´Ï´Ù.
...
gateway_enable="YES"
...
¶Ç´Â sysctlÀ» ÀÌ¿ëÇØ¼ OID¸¦ ¼³Á¤Çϵµ·Ï ÇÕ´Ï´Ù.
#sysctl net.inet.ip.forwarding=1
pf ¿¡¼´Â ´ÙÀ½ÀÇ ¹æÈº® ·êÀ»
»ç¿ëÇÒ °ÍÀÔ´Ï´Ù. ·êÀ» °£´ÜÈ÷ Çϱâ À§Çؼ ¹æÈº®¿¡¼´Â ³»ºÎ´Ü¿¡¼´Â ¼ºñ½º¸¦ ÇÏÁö ¾Ê´Â °ÍÀ» °¡Á¤ÇÏ¿´°í, ¸ðµç ·ê¿¡´Â
stateful inspection À» Çϵµ·Ï ¼³Á¤Çß½À´Ï´Ù. ¼³Á¤ÆÄÀÏÀº /etc/pf.conf¿¡ ÁöÁ¤Çϵµ·Ï ÇÕ´Ï´Ù. ¹æÈº®
·ê¼Â¿¡¼ »ç¿ëÇÏ´Â interface´Â ng0ÀΰͿ¡ À¯ÀÇÇϽñ⠹ٶø´Ï´Ù. xDSL°ú ¿¬°áµÈ fxp0¸¦ »ç¿ëÇϰųª À¯Àú¸ðµå
ppp(8)ó·³ tun0µîÀ» »ç¿ëÇÏÁö ¾Êµµ·Ï ÁÖÀÇÇϽʽÿä. À¯µ¿ IP¸¦ »ç¿ëÇÒ °æ¿ì interface¿¡ ÇÒ´çµÈ IP°¡ º¯°æµÇ¹Ç·Î
inbound packetÀÇ source IP°¡ ÇöÀç ÀÚ½ÅÀÇ IP·Î ÁöÁ¤µÇ¾î ¿Ã°æ¿ì À̸¦ ¸·±âÀ§Çؼ´Â IPº¯µ¿½Ã ¸¶´Ù »õ·Î
¹æÈº®·êÀ» Àû¿ëÇØ¾ß ÇÕ´Ï´Ù. 3.5 ½ÃÀÛ script¿¡ÀÇ Àû¿ëÀ» ÂüÁ¶ÇϽʽÿä.
(ÁÖÀÇ: º»ÀýÀÇ ¹æÈº® ·êÀº ´Ü¼øÇÑ PPPoE ½ÃÇè¿ëÀ̹ǷÎ
À̸¦ ½ÇÁ¦ ÀÚ½ÅÀÌ »ç¿ëÇÏ´Â networkȯ°æ¿¡ Àû¿ëÇÏ·Á¸é ¸¹Àº ºÎºÐÀ» ¼öÁ¤ÇØ¾ß ÇÕ´Ï´Ù. À̱ÛÀº ¹æÈº® ·êÀÇ ¼³Á¤¹æ¹ýÀÌ ¾Æ´Ï¶ó
PPPoE gateway¿ÍÀÇ ¿¬µ¿¿¡ ÁßÁ¡À» µÎ°í Àֱ⠶§¹®¿¡ °¡Àå ´Ü¼øÇÑ ·êÀ» ¼±ÅÃÇß½À´Ï´Ù.)
3.2.1 pf ·ê¼Â
#
ExtIF="ng0"
IntIF="fxp1"
INTERNAL="192.168.1.0/24"
table <badbost> const {0.0.0.0/8, 169.254.0.0/16, 192.0.2.0/24, \
224.0.0.0/4, 240.0.0.0/4, 10.0.0.0/8, \
172.16.0.0/12, 192.168.0.0/16, 255.255.255.255, \
127.0.0.1/8}
# hosts that can use this system as a gateway
table <allowhost>
const {192.168.1.1, 192.168.1.2, 192.168.1.6, \
192.168.1.21, 192.168.1.7, 192.168.1.12}
set loginterface $ExtIF
scrub in all
scrub out all random-id max-mss
1440
# NAT
nat on $ExtIF inet from $INTERNAL
to any ($ExtIF)
block
out log on
$ExtIF all
block
in log on
$ExtIF all
block return-rst out log on $ExtIF proto tcp all
block return-rst in log on $ExtIF proto tcp all
block return-icmp out log on $ExtIF proto udp all
block return-icmp in log on $ExtIF proto udp all
# allow lo0 interface packet
pass in quick on lo0 all
pass out quick on lo0 all
# allow internal network traffic
pass in on $IntIF from any to <allowhost>
pass out on $IntIF from <allowhost> to any
block in quick log on
$ExtIF from <badhost> to any
#
# block nmap's fingerprinting attempt(FIN, URG, PSH)
block in quick on $ExtIF inet proto tcp from any to any flags FUP/FUP
#
# block MSN(messenger.hotmail.com)
block out log quick proto tcp from any to 207.46.104.20
block out log quick proto tcp from any to any port 1863
# create states
pass out log on $ExtIF inet proto tcp all flags S/SA keep state
pass out log on $ExtIF inet proto {udp, icmp} all keep state
3.2.2 ipfilter ·ê¼Â
ipfilter¿¡¼´Â ´ÙÀ½ÀÇ ·êÀ» »ç¿ëÇÒ
°ÍÀÔ´Ï´Ù. ³»ºÎ´Ü¿¡ ´ëÇÑ filteringÀ» ÇÏÁö ¾Ê´Â´Ù´Â°Í°ú MSNÀ» blockÇÏÁö ¾Ê´Â°Í ¿Ü¿¡´Â ±â´ÉÀûÀ¸·Î pfÀÇ ·ê°ú
ºñ½ÁÇÕ´Ï´Ù. ¼³Á¤ÆÄÀÏÀÇ À§Ä¡´Â /etc/ipf.rulesÀÔ´Ï´Ù.
#
# Block and log everything by default
#
block
out log on ng0 all
block
in log on ng0 all
block return-rst in log on ng0 proto tcp all
block return-icmp in log on ng0 proto udp all
# pass lo0 interface traffic
#
pass in quick on lo0
pass out quick on lo0
#
# pass fxp1 interface(internal traffic)
pass out quick on fxp1
pass in quick on fxp1
#
# block spoofed address
block in log quick on ng0 from 192.168.0.0/16 to any
block in log quick on ng0 from 172.16.0.0/12 to any
block in log quick on ng0 from 10.0.0.0/8 to any
block in log quick on ng0 from 127.0.0.0/8 to any
block in log quick on ng0 from 0.0.0.0/8 to any
block in log quick on ng0 from 169.254.0.0/16 to any
block in log quick on ng0 from 192.0.2.0/24 to any
block in log quick on ng0 from 204.152.64.0/23 to any
block in log quick on ng0 from 224.0.0.0/3 to any
block in log quick on ng0 from any to 255.255.255.255
#
# allow incoming WWW/FTP/Mail/DNS Services
#
# create states for local hosts
pass out quick on ng0 proto tcp from any to any flags S keep state
pass out quick on ng0 proto udp from any to any keep state
pass out quick on ng0 proto icmp from any to any keep state
¸¸ÀÏ ³»ºÎ´Ü¿¡¼ ¼ºñ½º¸¦ ÇÑ´Ù¸é ÇØ´ç ¼ºñ½º¿¡ ÇØ´çÇÏ´Â ºÎºÐÀ» Ãß°¡ÇÏ¸é µÇ°Ú½À´Ï´Ù. ¿¹¸¦µé¾î À¥¼ºñ½º¸¦
ÇÑ´Ù¸é ´ÙÀ½°ú °°Àº ºÎºÐÀ» Ãß°¡ÇÕ´Ï´Ù.
pass in on ng0 proto tcp from any to any port = 80 flags S/SA keep state
NAT´Â Switching Hub¿¡
¿¬°áµÈ 192.168.1.X¸¦ »ç¿ëÇÏ´Â ³»ºÎ´ÜÀÇ ¸ðµç ½Ã½ºÅÛ¿¡ ´ëÇØ¼ ¼öÇàÇϵµ·Ï ÇÕ´Ï´Ù. pf¿Í ipfilter´Â À¯Á®¿µ¿ª¿¡¼
NAT¸¦ ¼öÇàÇÏ´Â natd(8)¿Í ´Þ¸® Ä¿³Î¿µ¿ª¿¡¼ ¸ðµç ÀÏÀ» ¼öÇàÇÕ´Ï´Ù. pf´Â NAT±â´ÉÀÌ Çϳª·Î ÅëÇյǾî Àֱ⠶§¹®¿¡
ipfilter¿Í natd°°Àº º°µµÀÇ ¼³Á¤ÆÄÀÏÀÌ ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù. ipfilterÀÇ NATÁ¶ÀÛÀº ipnat(8)¿¡ ÀÇÇØ¼
¼öÇàµÇ°í NAT ¼³Á¤ÆÄÀÏÀº /etc/ipnat.rulesÀÔ´Ï´Ù.
#
# Simple NAT rules for ipfilter
#
map ng0
192.168.1.0/24 -> 0/32
À§´Â ng0¿¡ ´ëÇØ¼ NAT¸¦ ¼öÇàÇϸç 192.168.1.XÀÇ ¸ðµç IPÁÖ¼Ò¸¦ ng0¿¡ ÇÒ´çµÈ ÁÖ¼Ò·Î º¯È¯Çϵµ·Ï
ÇÕ´Ï´Ù. mapÀÌ ÀϾ´Â interface°¡ ng0ÀÓÀ» À¯ÀÇÇϱ⠹ٶø´Ï´Ù. pf´Â ÀÌ¹Ì ¹æÈº®·ê¿¡¼ NAT¸¦ ÁöÁ¤Çß½À´Ï´Ù.
rc.conf¿¡¼ gateway="YES"·Î ÁöÁ¤ÇÑ ÈÄ ¸®ºÎÆ® ÇÏÁö ¾Ê¾Ò´Ù¸é sysctlÀ» ÀÌ¿ëÇØ¼ OID net.inet.ip.forwardingÀ» ÁöÁ¤Çß´ÂÁö È®ÀÎÇÕ´Ï´Ù. ±×¸®°í ipfilter¸¦ Ä¿³Î¸ðµâ·Î ·ÎµåÇϵµ·Ï ¼³Á¤Çß´Ù¸é ipfilter¸¦ ¸ÕÀú ·ÎµåÇϵµ·Ï ÇÕ´Ï´Ù.
pf¸¦ »ç¿ëÇÒ °æ¿ì:
#sysctl
net.inet.ip.forwarding=1
#kldload pflog
#kldload pfsync
#ifconfig pflog0 up
#ifconfig pfsync0 up
#/sbin/pflogd
#kldload pf
#pfctl -Fa -e -f /etc/pf.conf
ipfilter¸¦ »ç¿ëÇÒ °æ¿ì:
#sysctl
net.inet.ip.forwarding=1
#kldload ipl
#ipf -Fa -FS -f /etc/ipf.rules
#ipnat -CF -f
/etc/ipnat.rules
À߸øµÈ ¸í·ÉÀ̳ª ÀԷ½Ǽö°¡ ÀÖ´Ù¸é
¿À·ù°¡ ³ ¶óÀιøÈ£°¡ Ãâ·ÂµÇ´Ï ÇÊ¿äÇÒ °æ¿ì ¼öÁ¤ÇÏ¸é µË´Ï´Ù. networkÀÌ µ¿ÀÛÇÏ´ÂÁö pingÀ» ÀÌ¿ëÇØ¼
www.kr.freebsd.org·Î ICMP echo request¸¦ Àü¼ÛÇØ º¾´Ï´Ù.
#ping www.kr.freebsd.org
PING daemon.kr.freebsd.org (211.176.62.31): 56 data bytes
64 bytes from 211.176.62.31: icmp_seq=0 ttl=55 time=25.515 ms
64 bytes from 211.176.62.31: icmp_seq=1 ttl=55 time=24.914 ms
64 bytes from 211.176.62.31: icmp_seq=2 ttl=55 time=25.789 ms
64 bytes from 211.176.62.31: icmp_seq=3 ttl=55 time=26.602 ms
64 bytes from 211.176.62.31: icmp_seq=4 ttl=55 time=25.496 ms
^C
--- daemon.kr.freebsd.org ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 24.914/25.663/26.602/0.549 ms
´ÙÀ½À¸·Î ¹æÈº®·ê¿¡¼ ÁöÁ¤ÇÑ ICMP¿¡´ëÇÑ state°¡ ¸¸µé¾î Á³´ÂÁö pf¿¡¼´Â "pfctl -ss"·Î
ipfilter¿¡¼´Â "ipfstat -t"µîÀ¸·Î È®ÀÎÇÕ´Ï´Ù. ipfilter¿¡¼´Â NAT°¡ Á¤»óÀûÀ¸·Î ¼öÇàµÇ¾ú´ÂÁö È®ÀÎÇϱâ
À§Çؼ´Â "ipnat -l"À» ÀÌ¿ëÇØ¾ß ÇÕ´Ï´Ù. pf¿¡¼´Â "pfctl -ss"¿¡¼ °°ÀÌ Ç¥½ÃµË´Ï´Ù.
¿©±â ±îÁö ¸ðµç°ÍÀÌ Á¦´ë·Î µÇ¾ú´Ù¸é Ä¿³Î¸ðµå PPPoE¿Í ¹æÈº®, NAT¿ÍÀÇ ¿¬µ¿Àº ¼º°øÀûÀÔ´Ï´Ù.
Ä¿³Î¸ðµå PPPoE ÇÁ·Î±×·¥ÀÎ
mpd´Â ÇöÀç rc script¿¡¼ °ø½ÄÀûÀ¸·Î Áö¿øµÇÁö ¾Ê½À´Ï´Ù. ÀÌ ¶§¹®¿¡ rc.conf¿¡¼ ¾î¶²½ÄÀ¸·Î ¼³Á¤ÇÒÁö´Â ÀüÀûÀ¸·Î
»ç¿ëÀÚ¿¡°Ô ´Þ·ÁÀÖ½À´Ï´Ù. ipfilter³ª ipfwÀÇ °æ¿ì´Â rc script¿¡¼ Áö¿øÇÏÁö¸¸ ÀÌ °æ¿ì¿¡µµ ¹®Á¦´Â ÀÖ½À´Ï´Ù.
mpd¸¦ /etc/rc.localÀ̳ª /usr/local/etc/rc.d/mpd.shµîÀ¸·Î ¸¸µé¾î¼ ½ÇÇàÇϱâ Àü ±îÁö´Â
mpd¿¡¼
»ç¿ëÇÏ´Â netgraph interfaceÀÎ ng0°¡ »ý¼ºµÇ¾î ÀÖÁö ¾Ê´Ù´Â °ÍÀÔ´Ï´Ù. µû¶ó¼ rc.conf¿¡¼ pf, ipfw³ª
ipfilter¸¦ »ç¿ëÇÏ·Á°í Çϸé ng0°¡ ¾ÆÁ÷ »ý¼ºµÇÁö ¾ÊÀº »óÅÂÀ̱⠶§¹®¿¡ °æ°í¸Þ¼¼Áö°¡ Ãâ·ÂµË´Ï´Ù.
rc script¸¦ ´ë´ëÀûÀ¸·Î ¼öÁ¤ÇÏÁö ¾Ê°í¼ ÀÌ ¹®Á¦¸¦ ¿øÃµÀûÀ¸·Î ÇØ°áÇϱâ´Â ¾î·Á¿ï °ÍÀ¸·Î »ý°¢µË´Ï´Ù. ÇöÀç·Î¼´Â
/etc/rc.localÀ̳ª /usr/local/etc/rc.d/mpd.shµî¿¡¼ mpd ½ÇÇà ÈÄ ¹æÈº®°ú NAT·êÀ» ¼³Á¤ÇÏ´Â
°ÍÀÌ ÃÖ¼±Ã¥À¸·Î º¸ÀÔ´Ï´Ù. ¶Ç ÇϳªÀÇ ¹®Á¦Á¡Àº mpd°¡ ¾ðÁ¦ Á¢¼ÓÀÌ ÀÌ·ç¾îÁö´ÂÁö ÇÏ´Â ¹®Á¦ÀÔ´Ï´Ù. mpd¸¦ ½ÇÇàÇÑ´Ù°í ÇØ¼ Áï½Ã
Á¢¼ÓÀÌ ÀÌ·ç¾î Áö´Â°ÍÀº ¾Æ´Ï°í ¸î ÃÊ ¶Ç´Â ¼ö½ÊÃÊÀÇ ½Ã°£ÀÌ ÇÊ¿äÇÕ´Ï´Ù. ¶ÇÇÑ À¯µ¿ IP¸¦ »ç¿ëÇϱ⠶§¹®¿¡ ¾ðÁ¦µçÁö ÇöÀç »ç¿ëÁßÀÎ
¹æÈº®ÀÇ
IP°¡ º¯°æµÉ ¼ö ÀÖ½À´Ï´Ù. ppp(8)¿Í ¸¶Âù°¡Áö·Î mpd¿¡¼µµ ¿¬°áÀÌ µÈ °æ¿ì¿¡ ½ÇÇàÇÒ script¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖµµ·Ï Çϰí
ÀÖ½À´Ï´Ù. À̸¦ À§Çؼ mpd.conf¿¡¼ ÁÖ¼®Ã³¸®µÈ ºÎºÐÀ» Á¦°ÅÇϰí mpd.linkup script¸¦ ÁöÁ¤Çϵµ·Ï ÇÕ´Ï´Ù.
...
set ipcp yes
vjcomp
---- (16)
set ipcp ranges 0.0.0.0/0
0.0.0.0/0
---- (17)
set iface up-script
/usr/local/etc/mpd/mpd.linkup
---- (18)
#set iface down-script
/usr/local/etc/mpd/mpd.linkdown ---- (19)
open
iface
---- (20)
mpd.linkupÆÄÀÏÀº
/usr/local/etc/mpd¿¡ »õ·Î ¸¸µì´Ï´Ù. mpd´Â interface°¡ upµÇ¸é up-script¿¡¼ ÁöÁ¤µÈ
mpd.linkupÀ» ´ÙÀ½°ú °°Àº½ÄÀ¸·Î È£ÃâÇÕ´Ï´Ù.
mpd.linkup interface inet local-ip remote-ip authname
interface´Â ng0, ng1µîÀ¸·Î ÁöÁ¤µË´Ï´Ù. local-ip´Â »õ·ÎÀÌ ÇÒ´çµÈ local IPÁÖ¼ÒÀ̰í,
remote-ip´Â »õ·ÎÀÌ ÇÒ´çµÈ PPP ¿¬°áÀÇ »ó´ë¹æ ÁÖ¼ÒÀÔ´Ï´Ù. script°¡ È£ÃâµÉ ¶§ »õ·ÎÀÌ ÇÒ´çµÈ local-ip°¡
argument·Î Àü¼ÛµÇ±â ¶§¹®¿¡ cpp(1)¸¦ ÀÌ¿ëÇØ¼ ¹æÈº® ·ê¿¡ ÁöÁ¤µÈ variable¿¡ ´ëÇÑ substitionµµ
°¡´ÉÇÕ´Ï´Ù. ¿ì¸®ÀÇ °æ¿ì ´ÙÀ½°ú °°Àº Á¤µµ¸¸ À־ ÃæºÐÇÕ´Ï´Ù.
#!/bin/sh
#
# mpd startup scrip for pf
/sbin/pfctl -Fa -e -f /etc/pf.conf
# mpd startup script for
ipfw
#/bin/sh /etc/ipfw.conf
#kill -HUP
`/usr/bin/sed 1q /var/run/natd.pid`
# mpd startup script for
ipfilter
#/sbin/ipf -Fa -f /etc/ipf.rules
#/sbin/ipnat -CF -f /etc/ipnat.rules
pf°¡ ¾Æ´Ñ ipfw, ipfilter¸¦ »ç¿ëÇÑ´Ù¸é ÇØ´ç ºÎºÐÀÇ ÁÖ¼®À» Á¦°ÅÇϵµ·Ï ÇÕ´Ï´Ù. rc.local¿¡´Â ipfilter¶Ç´Â ipfw¿Í ¿¬µ¿ÀÌ ÇÊ¿äÇϱ⠶§¹®¿¡ Ä¿³Î¿¡¼ ¹æÈº®À» Áö¿øÇÏÁö ¾Êµµ·Ï Çß´Ù¸é ¹æÈº® Ä¿³Î¸ðµâÀ» ¸ÕÀú ·ÎµåÇϵµ·Ï ÇÕ´Ï´Ù. pf¶ó¸é ´ÙÀ½°ú °°ÀÌ ÇÒ ¼ö ÀÖ½À´Ï´Ù.
#
# rc.local
#
# kernel mode PPPoE setup
#
# First, load pf kernel module
#
if [ -f
/boot/kernel/pf.ko]; then
/sbin/kldload pflog
/sbin/kldload pfsync
/sbin/ifconfig pflog0 up
/sbin/ifconfig pfsync0 up
/sbin/pflogd
/sbin/kldload pf
echo
'pf module loaded.'
fi
#
# Then, invoke mpd
#
if [ -x /usr/local/sbin/mpd -a -f /usr/local/etc/mpd/mpd.conf ]; then
/sbin/kldload ng_ether
echo -n " mpd";
/usr/local/sbin/mpd -b
fi
ipfilter¶ó¸é ´ÙÀ½°ú °°ÀÌ ÇÒ ¼ö ÀÖ½À´Ï´Ù.
#
# rc.local
#
# kernel mode PPPoE setup
#
# First, load ipfilter if required
#
if ! /sbin/sysctl net.inet.ipf.fr_pass > /dev/null 2>&1; then
if /sbin/kldload ipl; then
echo 'IP-filter module loaded.'
/sbin/ipmon -Ds
else
echo 'Warning: IP-filter module failed to load.'
fi
else
/sbin/ipmon -Ds
fi
#
# Then, invoke mpd
#
if [ -x /usr/local/sbin/mpd -a -f /usr/local/etc/mpd/mpd.conf ]; then
/sbin/kldload ng_ether
echo -n " mpd";
/usr/local/sbin/mpd -b
fi
ÇÊ¿äÇÏ´Ù¸é ipfilter¿¡¼ »ý¼ºÇÑ ¹æÈº®°ú NAT state¸¦ ipfs¸¦ ÀÌ¿ëÇØ¼ º¹±¸Çϰí ÀúÀåÇÏ´Â ºÎºÐÀ» Ãß°¡ÇÒ ¼ö µµ
ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ ¹æ¹ýÀº /etc/rc.networkÀ» ÂüÁ¶¹Ù¶ø´Ï´Ù.
ipfw¸¦ »ç¿ëÇÑ´Ù¸é /etc/rc.local¿¡ ´ÙÀ½°ú °°ÀÌ Ãß°¡ ÇÕ´Ï´Ù.
#
# rc.local
#
# kernel mode PPPoE setup
#
# First, load ipfw if required
#
if ! /sbin/ipfw -q flush > /dev/null 2>&1; then
if /sbin/kldload ipfw; then
echo 'ipfw module loaded.'
/bin/sh /etc/ipfw.conf
/sbin/natd -f /etc/natd.conf
else
echo 'Warning: ipfw module failed to load.'
fi
fi
#
# Then, invoke mpd
#
if [ -x /usr/local/sbin/mpd -a -f /usr/local/etc/mpd/mpd.conf ]; then
/sbin/kldload ng_ether
echo -n " mpd";
/usr/local/sbin/mpd -b
fi
ipfw(8)¿¡¼ »ç¿ëÇÏ´Â ¹æÈº®·êÀº /etc/ipfw.conf¿¡ natd(8)ÀÇ ·êÀº /etc/natd.conf¿¡
ÀÖ´Ù°í °¡Á¤ÇÏ¿´½À´Ï´Ù. ipfilter¿Í ¸¶Âù°¡Áö·Î /etc/rc.networkÀ» ÂüÁ¶ÇÏ¿© Á» ´õ º¹ÀâÇϰí ÀÚ½ÅÀÌ »ç¿ëÇÏ´Â
½Ã½ºÅÛ¿¡ ¸Â°Ô ¼³Á¤ÇÒ ¼ö µµ ÀÖÀ» °Í ÀÔ´Ï´Ù.
¸¶Áö¸·À¸·Î /etc/rc.conf¿¡´Â /etc/rc.local¿¡ ÀÖ´Â ¼³Á¤À» ÀÌ¿ëÇÒ °ÍÀ̱⠶§¹®¿¡ ipfiler³ª
ipfw°¡ ½ÇÇàµÇÁö ¾Êµµ·Ï ´ÙÀ½°ú °°ÀÌ ¼³Á¤Çϵµ·Ï ÇÕ´Ï´Ù.
...
defaultrouter="NO"
ifconfig_fxp0=up
ifconfig_fxp1="inet 192.168.1.1 netmask 255.255.255.0"
gateway_enable="YES"
ipfilter_enable="NO"
ipnat_enable="NO"
ipmon_enable="NO"
ipfs_enable="NO"
firewall_enable="NO"
natd_enable="NO"
ppp_enable="NO"
...
¸ðµç ¼³Á¤ÀÌ ¿Ï·áµÇ¸é ½Ã½ºÅÛÀ» ¸®ºÎÆ®ÇÑ ÈÄ ÇÊ¿äÇÑ Ä¿³Î¸ðµâÀÌ ¸ðµÎ ·ÎµåµÇ¾ú´ÂÁö networkÀº Á¤»óÀûÀ¸·Î µÇ´ÂÁö
È®ÀÎÇÕ´Ï´Ù.
PPPoE
gateway¸¦ ´ã´çÇÏ´Â FreeBSD¿¡¼´Â ¾Æ¹«·± ¹®Á¦°¡ ¾øÀÌ networkÀÌ µ¿ÀÛÇÏ´Â°Í Ã³·³ º¸À̴µ¥ IP
192.168.1.X¸¦ »ç¿ëÇÏ´Â ½Ã½ºÅÛ¿¡¼´Â Á¢¼ÓÇÏ´Â »çÀÌÆ®¿¡ µû¶ó¼ ¹®Á¦°¡ ¹ß»ýÇÏ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù. ÀÌ´Â Path MTU
¹®Á¦¿¡ ±âÀÎÇÏ´Â °ÍÀÔ´Ï´Ù. µÎ°³ÀÇ ½Ã½ºÅÛÀÌ ¼·Î ´Ù¸¥ ¿©·¯°³ÀÇ networkÀ» ÅëÇÏ¿© ¿¬°áµÉ ¶§ µÎ ½Ã½ºÅÛ »çÀÌÀÇ Path
MTU´Â ¼·Î°£ÀÇ µ¥ÀÌÅÍ linkÁß °¡Àå ÀÛÀº MTU¿¡ ÀÇÇØ¼ °áÁ¤µË´Ï´Ù. ÀÌ Path MTU ´Â °íÁ¤µÈ °ªÀÌ ¾Æ´Ï°í
routing¿¡ ÀÇÇØ¼ °áÁ¤µÇ´Â path¿¡ ´Þ·ÁÀÖ½À´Ï´Ù. ¶ÇÇÑ inbound¿Í outbound ÆÐŶÀÌ ¼·Î ´Ù¸¥ route¸¦
°¡Áú
¼ö Àֱ⠶§¹®¿¡ µÎ ½Ã½ºÅÛ°£ÀÇ Path MTU´Â ¹æÇâ¿¡ µû¶ó¼ ´Ù¸¦ ¼öµµ ÀÖ½À´Ï´Ù.
Path MTU Discovery´Â ½Ã½ºÅÛ¿¡¼ Path MTU¸¦ °áÁ¤Çϱâ À§Çؼ »ç¿ëÇÏ´Â ¹æ¹ýÀ¸·Î RFC
1191¿¡ ¸í½ÃµÇ¾î ÀÖ½À´Ï´Ù. ÇöÀç FreeBSD¸¦ Æ÷ÇÔÇÑ ´ëºÎºÐÀÇ ½Ã½ºÅÛµéÀº Path MTU Discovery¸¦ ¼öÇàÇÕ´Ï´Ù.
±×·¯³ª Path MTU Discovery´Â ¼ºñ½º ½Ã½ºÅÛÀÇ ¼³Á¤°ú ISPÀÇ routerÀÇ ¼³Á¤¿¡ µû¶ó¼ µ¿ÀÛÇÏÁö ¾ÊÀ» ¼ö
ÀÖ½À´Ï´Ù. Path MTU Discovery´Â MSSº¸´Ù Å« ÆÐŶÀÌ Àü¼ÛµÇ¸é IP headerÀÇ DF bit°¡ ¼³Á¤µÈ ICMP
unreachable(ICMP fragment required)À» Àü¼ÛÀÚ¿¡°Ô º¸³»°Ô µÇ°í Àü¼ÛÀÚ´Â À̰æ¿ì ÆÐŶÀ» º¸´Ù
ÀÛÀº Å©±â·Î ³ª´©¾î¼(fragmentation) ´Ù½Ã Àü¼ÛÇÏ°Ô µË´Ï´Ù.
¸¸ÀÏ ISPÀÇ router°¡ À߸ø ¼³Á¤µÇ°Å³ª ¶Ç´Â ¹æÈº® µÞ´Ü¿¡¼ ¾ÈÀüÇÑ °ü¸®¸¦ ÇÑ´Ù´Â ¸ñÀûÀ¸·Î ICMP¸¦ ¸ðµÎ
¸·¾Æ¹ö¸± °æ¿ì Àü¼ÛÀÚ°¡ "ICMP unreachable"¶ó´Â ICMP ÆÐŶÀ» ¹ÞÁö ¸øÇÏ°Ô µË´Ï´Ù. À߸øµÈ ¼³Á¤À» Çϰí ÀÖ´Â
°ü¸®ÀÚ´Â ÀÌ ¹®Á¦¸¦ ¾Ë±â°¡ ¾î·Æ°í PPPoE »ç¿ëÀÚÀÇ °æ¿ìµµ Á¢¼ÓÀº µÇÁö¸¸ ½ÇÁ¦ µ¥ÀÌÅͰ¡ ¿À´Ù°¡ ¸ØÃ߱⠶§¹®¿¡ ¿øÀÎÀ» ¾Ë±â°¡
¾î·Æ½À´Ï´Ù. ÀÌ·± ¹®Á¦ÀÇ ¿øÀÎÀº À߸øµÈ ¹æÈº® ¼³Á¤ ¶Ç´Â router¹®Á¦Àε¥, ISPÀÇ °æ¿ì´Â ¸ðµç protocolÀ» Áö¿øÇؾß
ÇÏ´Â ÀÔÀåÀ̱⠶§¹®¿¡ router¿¡¼ ƯÁ¤ protocol À» ¸·´Â °æ¿ì´Â ã±â Èûµì´Ï´Ù.
ÇöÀç·Î´Â ICMP protocolÀº º¸¾È»ó À§ÇèÇϰí ping¿Ü¿¡´Â ¾²ÀÌÁö ¾Ê´Â´Ù´Â À߸øµÈ Áö½ÄÀ¸·Î ¹æÈº®¿¡¼ ¸ðµç
ICMP ÆÐŶÀ» ¸·¾Æ¹ö¸° º¸¾È°ü¸®ÀÚµéÀÇ À߸øµÈ ¼³Á¤ÀÌ °¡Àå Å« ¿øÀÎÀ¸·Î º¸ÀÔ´Ï´Ù.
½ÇÁ¦·Î ¹æÈº®ÀÌ ¼³Ä¡µÇ¾î ÀÖÀ»°Í
°°Àº ±¹Á¤¿ø ȨÆäÀÌÁö¿¡ ´ëÇØ¼ ½ÃÇèÇØ º¸´Ï PPPoE»ó¿¡¼
MSS¹®Á¦¸¦ °¡Áö°í ÀÖ¾ú½À´Ï´Ù. ±¹Á¤¿ø ȨÆäÀÌÁö¿¡ ´ëÇÑ tcpdump°á°ú´Â ´ÙÀ½°ú °°½À´Ï´Ù. MSS°¡ 1460·Î ¿äûµÇ¾î Á¢¼ÓÀÌ
µÇÁö ¾Ê½À´Ï´Ù.(±¹Á¤¿øÀÇ ½Ã½ºÅÛÀº fragmentationÀÌ ÇÊ¿äÇÏ´Ù´Â ICMP fragmentation required¸¦ ¹ÞÁö
¸øÇß½À´Ï´Ù.)
#tcpdump -n -i ng0 'tcp[13] & 2 != 0'
tcpdump: listening on ng0
21:58:15.646122 61.82.76.235.49560 > 168.126.27.90.80: S
186429103:186429103(0) win 65535 <mss
1460,nop,wscale1,nop,nop,timestamp 4208156 0> (DF)
21:58:15.671026 168.126.27.90.80 > 61.82.76.235.49560: S
467678666:467678666(0) ack 186429104 win 10136
<nop,nop,timestamp 432712352 4208156,nop,wscale 0,mss 1460> (DF)
ÀÌÀÇ ÇØ°áÃ¥À¸·Î´Â PPPoE Client¸¦ gateway·Î »ç¿ëÇÏ´Â ½Ã½ºÅÛÀÇ MSS¸¦ °Á¦ÀûÀ¸·Î ´õ ÀÛ°Ô ÁÙ¿©ÁÖ´Â
¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. ±×·¯³ª ÀÌ´Â gateway µÞ´ÜÀÇ ½Ã½ºÅÛ¸¶´Ù ¼³Á¤À» ´Ù½Ã ÇØ¾ßÇϰí Windows ½Ã½ºÅÛµéÀº Á¾·ù¿¡ µû¶ó¼ ¼³Á¤
À§Ä¡°¡ ´Ù¸£±â ¶§¹®¿¡ º¯°æÇϱⰡ ¾î·Á¿î ¹®Á¦°¡ ÀÖ½À´Ï´Ù. FreeBSDÀÇ FAQ¿¡´Â ¼³
Á¤ÇÏ´Â
¹æ¹ýÀÌ ³ª¿Í ÀÖÁö¸¸ ´õ ÁÁÀº ¹æ¹ýÀº PPPoE gateway¿¡¼ ¸ðµç 󸮸¦ ÀÚµ¿ÀûÀ¸·Î ÇÏ´Â °ÍÀÔ´Ï´Ù.
ÃÖ±ÙÀÇ À¯Àú¸ðµå ppp(8)¿¡´Â "enable tcpmssfixup" ¸í·ÉÀÌ ±âº»ÀûÀ¸·Î µ¿ÀÛÇϱ⠶§¹®¿¡
À¯Àú¸ðµå ppp(8)¸¦ »ç¿ëÇÑ´Ù¸é ÀÌ ºÎºÐÀº ÇØ´çµÇÁö ¾ÊÁö¸¸ À¯Àú¸ðµå¿¡¼ ¿¹Àü FreeBSD¸¦ »ç¿ëÇÒ °æ¿ì¿¡´Â portsÀÇ
tcpmssd(/usr/ports/net/tcpmssd)¸¦ ¼³Ä¡Çϸé MSS ¹®Á¦¸¦ ÇØ°áÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇöÀç mpdÀÇ °¡Àå Å«
¾àÁ¡Àº ÀÌ mssfixupÀÌ Á¦´ë·Î µ¿ÀÛÇÏÁö ¾Ê´Â´Ù´Â °ÍÀÔ´Ï´Ù.(ºÎºÐÀûÀ¸·Î´Â µ¿ÀÛÇÏ´ÂÁö ¸ð¸£°ÚÁö¸¸ ÀúÀÇ °æ¿ì´Â Á¦´ë·Î µ¿ÀÛÇÏÁö
¾Ê¾Ò½À´Ï´Ù.)
mpd¸¦ ÀÌ¿ëÇÑ Ä¿³Î¸ðµå PPPoE¿¡¼´Â ³»ºÎ´ÜÀÇ °¢ ½Ã½ºÅÛ¿¡¼ MTU¸¦ °Á¦ÀûÀ¸·Î Á¦ÇÑÇϰųª pf¸¦ »ç¿ëÇÑ´Ù¸é
scrub rule¿¡¼ mss¸¦ ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù. ÃÖ±ÙÀÇ ipfilterÀÇ °æ¿ì¿¡´Â mssclamp¶ó´Â Ű¿öµå¸¦ Áö¿øÇϹǷΠÀ̸¦
ÀÌ¿ëÇØ¾ß ÇÕ´Ï´Ù. º¸´Ù ÀÚ¼¼ÇÑ Path MTU Discovery¿¡ °üÇÑ ¹®Á¦´Â ´ÙÀ½ÀÇ URL¶Ç´Â W.
Richard StevensÀÇ TCP/IP Illustrated,Volume IÀ» ÂüÁ¶Çϱ⠹ٶø´Ï´Ù.
ÃÖ±ÙÀÇ ipfilter¿¡ Ãß°¡µÈ
mssclamp¸¦ /etc/ipnat.rules¿¡ ´ÙÀ½°ú °°ÀÌ ÁöÁ¤ÇÕ´Ï´Ù. pf´Â scrub rule¿¡¼ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
#
# Simple NAT rules
#
map ng0 192.168.1.0/24
-> 0/32 mssclamp 1440
mssclamp¿¡ »ç¿ëÇÒ °ª 1440Àº mpd.conf¿¡¼ ÁöÁ¤ÇÑ MTU - 52(1492 - 52)ÀÇ °ªÀÔ´Ï´Ù.¸¸ÀÏ Á¦´ë·Î
µ¿ÀÛÇÏÁö ¾Ê´Â ´Ù¸é ´õ ÀÛÀº °ªÀ¸·Î º¯°æÇϵµ·Ï ÇØ º¾´Ï´Ù. º¯°æÀÌ µÇ¸é »õ·Î¿î NAT·êÀ» ·ÎµåÇÕ´Ï´Ù.
#ipnat -CF -f /etc/ipnat.rules
¼º°øÀûÀ¸·Î NAT·êÀÌ ¼³Á¤µÇ¸é PPPoE Client¸¦ gateway·Î »ç¿ëÇÏ´Â ½Ã½ºÅÛ¿¡¼ Á¤»óÀûÀÎ Á¢¼ÓÀÌ µÇ´ÂÁö È®ÀÎÇÕ´Ï´Ù.
±¹Á¤¿ø ȨÆäÀÌÁö¿¡ ´ëÇÑ tcpdump°á°ú´Â ´ÙÀ½°ú °°½À´Ï´Ù. MSS°¡ ÀÌÁ¦´Â 1440·Î ¿äûµÇ¾î Á¢¼ÓÀÌ Á¦´ë·Î ÀÌ·ç¾î ÁüÀ» ¾Ë
¼ö ÀÖ½À´Ï´Ù.
#tcpdump -n -i ng0 'tcp[13] & 2 != 0'
tcpdump: listening on ng0
22:02:09.696309 61.82.76.235.49561 > 168.126.27.90.80: S
3336787163:3336787163(0) win 65535 <mss 1440,nop,wscale
1,nop,nop,timestamp 4231560 0> (DF)
22:02:09.721561 168.126.27.90.80 > 61.82.76.235.49561: S
524121234:524121234(0) ack 3336787164 win 9996 <nop,nop,timestamp
432735758 4231560,nop,wscale 0,mss
1440> (DF)
22:02:10.150193 61.82.76.235.49562 > 168.126.27.90.80: S
2059662856:2059662856(0) win 65535 <mss 1440,nop,wscale
1,nop,nop,timestamp 4231606 0> (DF)
22:02:10.213039 168.126.27.90.80 > 61.82.76.235.49562: S
524251102:524251102(0) ack 2059662857 win 9996 <nop,nop,timestamp
432735804 4231606,nop,wscale 0,mss
1440> (DF)
22:02:10.393746 61.82.76.235.49563 > 168.126.27.90.80: S
2639386047:2639386047(0) win 65535 <mss 1440,nop,wscale
1,nop,nop,timestamp 4231630 0> (DF)
22:02:10.418834 168.126.27.90.80 > 61.82.76.235.49563: S
524475714:524475714(0) ack 2639386048 win 9996 <nop,nop,timestamp
432735828 4231630,nop,wscale 0,mss
1440> (DF)
FreeBSD 5.0¿¡¼´Â pf¿Í
ALTQ¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ADSLÀº ¾Ë·ÁÁø´ë·Î up-link¿Í down-link»çÀÌÀÇ ¼Óµµ Â÷À̰¡ ¸¹ÀÌ ³³´Ï´Ù. Çѱ¹Åë½Å
ADSLÀÇ °æ¿ì up-link´Â 64,000bps·Î °íÁ¤µÇ¾î ÀÖ½À´Ï´Ù. ´ëºÎºÐÀÇ ÀÛ¾÷¿¡¼ ADSLÀÇ ¼Óµµ´Â ¸¸Á·ÇÒ ¸¸ ÇÏÁö¸¸
uploadÁß ¿©·¯°³ÀÇ download¸¦ ½ÃµµÇϸé upload trafficÀ¸·Î ÀÎÇØ¼ download ¼Óµµ°¡ ±Þ°ÝÈ÷ °¨¼ÒÇÏ´Â
¹®Á¦°¡ ¹ß»ýÇÕ´Ï´Ù. È¥ÀÚ ADSL ¶óÀÎÀ» »ç¿ëÁßÀ̶ó¸é º° ¹®Á¦°¡ ¾Æ´Ï°ÚÁö¸¸ ¿©·¯´ëÀÇ ½Ã½ºÅÛÀÌ ADSL·Î ¿¬°áµÈ
½Ã½ºÅÛÀ»
gateway·Î»ç¿ëÇÒ °æ¿ì ¹®Á¦°¡ µË´Ï´Ù. pf¿¡¼´Â TCP ACK packet¿¡ ³ôÀº priority¸¦ ÁÖ¾î¼
uploadÁß¿¡µµ
download ¼Óµµ°¡ ÀúÇϵǴ °ÍÀ» ¸·À» ¼ö ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ ¼³Á¤ ¹æ¹ýÀº ¿©±â¸¦ ÂüÁ¶¹Ù¶ø´Ï´Ù.
pf¿¡¼´Â mutiple
router°£ÀÇ load balacingÀ» Áö¿øÇÕ´Ï´Ù. ¸¸ÀÏ ¿©·¯°³ÀÇ ADSL¶óÀÎÀ» °¡Áö°í ÀÖÀ» °æ¿ì À̸¦
FreeBSD¿¡¼ È¿°úÀûÀ¸·Î ÀÌ¿ëÇϱ⿡´Â ºÒ°¡´ÉÇß¾ú½À´Ï´Ù.(ÀüÅëÀûÀ¸·Î *BSD´Â multiple default route¸¦
Áö¿øÇÏÁö ¾Ê¾Ò½À´Ï´Ù.) pf¿¡¼´Â ¼Ò½ºÀÇ address¸¦ random, source-hash, round-robin ½ÄÀ¸·Î
ÁöÁ¤ÇÏ¿© È¿À²ÀûÀÎ ºÎÇÏ ºÐ»êÀÌ °¡´ÉÇÕ´Ï´Ù. ½ÇÁ¦ »ç¿ë¹ýÀº ¿©±â¸¦
ÂüÁ¶Çϼ¼¿ä.
ƯÁ¤ ÇÁ·Î·¥À» ÀÌ¿ëÇÏ¸é »ó´ë¹æÀÇ
½Ã½ºÅÛÀÌ NAT¸¦ »ç¿ëÇϰí ÀÖ´ÂÁö °øÀÎ IP¸¦ »ç¿ëÇϰí ÀÖ´ÂÁö ¾Ë ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¹æ¹ýÀº ISP¿¡¼ »ç¿ëÇÒ ¼ö µµ ÀÖ°í
¾ÇÀÇÀûÀÎ
»ç¿ëÀÚ°¡ Á¢¼ÓÀÚÀÇ º¸´Ù ÀÚ¼¼ÇÑ Á¤º¸¸¦ ¾Ë±â À§Çؼ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù. pf¿¡¼´Â NAT¸¦ ŽÁö¸¦ ¹«·ÂÈ ½ÃŰ´Â
random-id optionÀ» Áö¿øÇÕ´Ï´Ù.
°í°¡ÀÇ »ó¿ë¹æÈº®¿¡¼¸¸ º¼ ¼ö ÀÖ´Â
±â´ÉÀ¸·Î pf¿¡¼ µÞ´ÜÀÇ ´Ù¸¥ ½Ã½ºÅÛÀ» ´ë½ÅÇÏ¿© TCP Threeway HandshakingÀ» ¼öÇàÇÑ ÈÄ ´Ù½Ã Á¢¼ÓÀ»
replayÇÏ´Â TCP SYN Proxy¸¦ Áö¿øÇÕ´Ï´Ù. ÀÌ ±â´ÉÀº pf 1.5.1ºÎÅÍ Áö¿øµË´Ï´Ù.
mpd´Â Áö¼ÓÀûÀ¸·Î °³¼±µÇ°í ÀÖÁö¸¸
¾ÆÁ÷µµ ¸¹Àº ºÎºÐÀÌ ºÎÁ·ÇÑ »óÅÂÀÔ´Ï´Ù. ƯÈ÷ HOWTO Çü½ÄÀÇ ¹®¼ºÎÀç·Î ¸¹Àº »ç¿ëÀÚµéÀÌ ½Çüµµ ¸ð¸£°í Àִ°ÍÀº ¾ÈŸ±î¿î
ÀÏÀÔ´Ï´Ù. mpd¸¦ ÀÌ¿ëÇÑ Ä¿³Î¸ðµå PPPoEÀÇ ¼º´ÉÀº ´ë´ÜÇÑ ¸Å·ÂÀÌÁö¸¸ º£À̽º ½Ã½ºÅÛ¿¡ Æ÷ÇԵǾî ÀÖÁö¾Ê±â ¶§¹®¿¡ ¼³Ä¡½ÃÀÇ
¹®Á¦¿Í
ÇÔ²² , rc scriptÀÇ ¹ÌÁö¿ø, MSS fixup¹®Á¦µîÀÌ ´ÜÁ¡À¸·Î »ý°¢µË´Ï´Ù.
¾î¶»°Ô »ý°¢Çϸé "ÀÌ·¸°Ô º¹ÀâÇÏ°Ô Ä¿³Î¸ðµå PPPoE¿Í pf/ipf/ipfw¸¦ »ç¿ëÇØ¾ß Çϴ°¡?"¶ó´Â
Àǹ®À» °¡Áú ¼ö ÀÖ½À´Ï´Ù. ¹°·Ð ¾Æ´Õ´Ï´Ù. ´ëºÐÀÇ °æ¿ì xDSLÀÇ ÃÖ°í 2 - 3 MbpsÀÇ ´À¸° ¼Óµµ´Â À¯Àú¸ðµå ppp(8)¸¦
»ç¿ëÇÏ´Â ±¸ÇüÀÇ ½Ã½ºÅÛ¿¡¼µµ ¼º´É»óÀÇ ¹®Á¦´Â ´À³¥ ¼ö ¾ø½À´Ï´Ù. ¶ÇÇÑ °íÁ¤ IP¸¦ »ç¿ëÇÏ´Â xDSLÀÇ °æ¿ì¿¡´Â
Ä¿³Î¸ðµå/À¯Àú¸ðµå/PPPoE µîÀÇ ¸ðµç ¹®Á¦¸¦ ÀØ¾î ¹ö¸± ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¸ °íÁ¤ IPÀÇ °æ¿ì °¡°ÝÀÌ Á¶±Ý ´õ ºñ½Ñ ´ÜÁ¡ÀÌ
ÀÖ°í,
ISP¿¡¼ ¼³Á¤µÈ bandwidth°¡ À¯µ¿ IP¿¡ ºñÇØ¼ ´õ ³·°Ô ¼³Á¤µÇ¾î ÀÖ½À´Ï´Ù. Á¦°¡ ÀÌ·± º¹ÀâÇÑ ÀÏ·ÃÀÇ ¼³Á¤À» ÇÑ ÀÌÀ¯´Â
Àü¿ë Çϵå¿þ¾î °øÀ¯±â¿¡ ºñÇØ¼ FreeBSD½Ã½ºÅÛÀº Àú·ÅÇÑ °¡°ÝÀ¸·Î º¹ÀâÇÏ°í ´Ù¾çÇÑ ÀÏÀ» ÇÒ ¼ö Àֱ⠶§¹®¿¡, PPPoEÀÇ
Áö¿øÀ¸·Î ÀÎÇØ¼ ºÒÇÊ¿äÇÑ ½Ã½ºÅÛÀÇ ÀÚ¿øÀ» ³¶ºñÇÏÁö ¾Ê´Â°ÍÀÌ ´Ù¸¥ ¼ºñ½º¸¦ È¿À²ÀûÀ¸·Î Çϴµ¥ ¹Ù¶÷Á÷ ÇÏ´Ù°í »ý°¢Çϱ⠶§¹®ÀÔ´Ï´Ù.
mpd¸¦ »ç¿ëÇÏ¸é¼ ¹ß»ýÇÏ´Â ¹®Á¦³ª pf¿ÍÀÇ ¿¬µ¿½Ã ¹®Á¦°¡ ÀÖ´Â ºÐµéÀº <questions at kr.freebsd.org>·Î ¹®ÀÇÇϱ⠹ٶø´Ï´Ù.
W. Richard Stevens TCP/IP
Illustrated, Volume I, II
FreeBSD
HandbookÀÇ PPPoE
OpenBSD pf Home Page
mpd Home Page
OpenBSD pf FAQ
ipfilter HOWTO
$Id: pppoe.html,v 1.2 2003-07-05 12:08:29+09 yongari Exp $