Ä¿³Î¸ðµå PPPoE¿Í pf/ipfilter/ipfw¿ÍÀÇ ¿¬µ¿

À̱ÛÀº Ä¿³Î¸ðµå 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¿¡¼­´Â º°µµÀÇ ºÎ°¡ºñ¿ëÀ» û±¸Çϰųª ¼­ºñ½ºÀÇ ÁߴܵîÀÇ Á¶Ä¡¸¦ ÃëÇÒ ¼ö µµ ÀÖ½À´Ï´Ù. ÀÌ ¹æ¹ýÀ» »ç¿ëÇÏ´Ù°¡ ¹ß»ýÇÒ ¼ö ÀÖ´Â Á¤½ÄÀû/¹°ÁúÀûÀÎ ¸ðµç ¹®Á¦´Â À̸¦ »ç¿ëÇÏ´Â »ç¿ëÀÚ¿¡°Ô ÀüÀûÀ¸·Î ´Þ·Á ÀÖ½À´Ï´Ù.)

1. °³¿ä

  Ä¿³Î¸ðµå PPP´Â FreeBSDÀÇ °ø½Ä ¹®¼­¿¡µµ Á¦´ë·Î ¼³¸íµÇ¾î ÀÖÁö ¾Ê¾Æ¼­ ¸¹Àº ºÐµéÀÌ ±× ½Çü¿Í ÀåÁ¡À» ¸ð¸£°í ÀÖ½À´Ï´Ù.±¹³»ÀÇ xDSL¿¡¼­ »ç¿ëÇÏ´Â PPPoE´Â ´ëºÎºÐÀÇ »ç¿ëÀÚµéÀÌ À¯Àú¸ðµå PPPoE ClientÀÎ ppp(8)¸¦ »ç¿ëÇϰí ÀÖ½À´Ï´Ù. À¯Àú¸ðµå PPPoE´Â °³¹ßÀÇ Æí¸®ÇÔ°ú µð¹ö±ëÀÇ ÀåÁ¡ÀÌ ÀÖÀ¸³ª Ä¿³Î°ú »ç¿ëÀÚ ¿µ¿ª°£ÀÇ µ¥ÀÌÅÍ Àü¼Û(copyin(9), copyout(9))À¸·Î ÀÎÇØ¼­ ¸¹Àº ºÎÇϸ¦ °¡Áö°í ÀÖ½À´Ï´Ù. °³ÀÎ »ç¿ëÀÚ°¡ ´Ü¼øÇÑ PPPoE Client·Î »ç¿ëÇϱ⿡´Â ¾ÆÁ÷ xDSLÀÇ ¼Óµµ°¡ ºü¸£Áö ¾Ê±â  ¶§¹®¿¡ º° ¹®Á¦°¡ ¾øÁö¸¸, ¹æÈ­º®°ú NAT¸¦ °áÇÕÇÏ¿© PPPoE Client¸¦ gateway·Î »ç¿ëÇÒ °æ¿ì È¿À²ÀûÀΠ󸮿¡ ¾î·Á¿òÀÌ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù. ÀÌ ±ÛÀº Ä¿³Î¸ðµå»ó¿¡¼­ µ¿ÀÛÇÏ´Â PPPoE¸¦ ±¸¼ºÇÏ¿© ±¸ÇüÀÇ ´À¸° ½Ã½ºÅÛÀ¸·Îµµ ¹æÈ­º®ÀÇ stateful inspection°ú NAT¸¦ °áÇÕÇÑ »óÅ¿¡¼­µµ ÃÖÀûÀÇ ¼º´ÉÀ» ³¾ ¼ö ÀÖ´Â ¹æ¹ýÀ» ¼³¸íÇÕ´Ï´Ù.

2. Ä¿³Î¸ðµå PPPoE¼³Á¤

<±×¸² 1>Àº Ä¿³Î¸ðµå PPPoE¼³Á¤¿¡ »ç¿ëÇÒ netowrk±¸¼ºµµ ÀÔ´Ï´Ù.

                                                                                    [FreeBSD mpd]
[ÀüÈ­±¹ÀÇ DSLSM]<--------------->|xDSL¸ðµ© |<----------------->| NIC       NIC |<------------->[HUB]<------------------>
                  ÀüÈ­¼±                                                UTP   |fxp0       fxp1 |  UTP                   192.168.1.X
                                                                                 À¯µ¿ IP    192.168.1.1

  FreeBSD¿¡¼­ xDSL¸ðµ©°ú´Â NIC¸¦ ÅëÇØ¼­ UTP Cable·Î ¿¬°áµË´Ï´Ù. FreeBSD¿¡¼­´Â ¸¶Ä¡ ethernet»ó¿¡¼­ Åë½ÅÇÏ´Â °Íó·³ º¸ÀÔ´Ï´Ù. ½ÇÁ¦·Î´Â PPP¶ó´Â protocolÀ» »ç¿ëÇÏ°Ô µÇ´Âµ¥ À̸¦ ethernet»óÀ¸·Î encapsulationÇØ¼­ º¸³»°Ô µË´Ï´Ù. PPPoE Client´Â µÎ°³ÀÇ NIC¸¦ °¡Áø FreeBSD¿¡¼­ ´ã´çÇÏ°Ô µÇ¸ç µÎ°³ÀÇ NICÁß fxp0´Â xDSL¸ðµ©°ú ¿¬°áµÇ°í fxp1Àº ³»ºÎÀÇ Switching Hub¿Í ¿¬°áµË´Ï´Ù. ¸¸ÀÏ fxp¿ÜÀÇ ´Ù¸¥ NIC¸¦ »ç¿ëÇÒ °æ¿ì °¢ interfaceÀÇ µð¹ÙÀ̽º¸¦ ´Ù¸¥ À̸§À¸·Î ÁöÁ¤ÇÏ¸é µÇ°Ú½À´Ï´Ù. FreeBSD´Â Switching Hub¿¡ ¿¬°áµÈ ³»ºÎ¿¡¼­ 192.168.1.X ÀÇ IP¸¦ »ç¿ëÇÏ´Â ½Ã½ºÅÛµéÀ» ¼­ºñ½ºÇÏ´Â gateway·Î µ¿ÀÛÇϸç FreeBSD¿¡¼­´Â ¹æÈ­º®±â´É°ú ÇÔ²² NAT¸¦ ¼öÇàÇÏ°Ô µË´Ï´Ù.¹°·Ð ÀÌ FreeBSD½Ã½ºÅÛÀº DHCP¼­¹ö, Caching DNS, Proxy¼­¹ö, NFS ¼­ºñ½º µîµµ °°ÀÌ ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.

2.1 ¼³Á¤¿¡ ÇÊ¿äÇÑ ÇÁ·Î±×·¥

 ÀÌ ±ÛÀº FreeBSD 4.7°ú FreeBSD 5.0»ó¿¡¼­ mpd 3.12·Î ½ÃÇèÇÏ¿´½À´Ï´Ù.

2.2 Ä¿³Î¸ðµå PPPoEÁ¦¾î ÇÁ·Î±×·¥ mpd¼³Ä¡

  Ä¿³Î¸ðµå 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·Î ¼³Ä¡µÇ¹Ç·Î ÇÊ¿äÇÒ °æ¿ì ÂüÁ¶ÇÏ¸é µÇ°Ú½À´Ï´Ù.

2.3 mpd ¼³Á¤

  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ºÎºÐÀ» ÂüÁ¶Çϱ⠹ٶø´Ï´Ù.)

2.3.1 mpd.confÀÇ ¼³Á¤

  Çѱ¹Åë½Å 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

2.3.2 mpd.links ¼³Á¤

  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 µîÀ¸·Î º¯°æÇϽʽÿä.

2.3.3 mpd.secret ¼³Á¤

  mpd.confÀÇ (11)¿¡¼­ ÁöÁ¤ÇÑ ¼³Á¤¿¡¼­ »ç¿ëÇÒ linkÀÇ ID¿Í ºñ¹Ð¹øÈ£¸¦ ÁöÁ¤ÇÕ´Ï´Ù.

#
# mpd.secret
#
½ÅûÇÑID                 "ºñ¹Ð¹øÈ£"          ----- (1)


(1)Àº 2.3.1ÀÇ mpd.confÀÇ (11)¿¡¼­ ÁöÁ¤ÇÑ IDÀÔ´Ï´Ù.
ID¿Í ºñ¹Ð¹øÈ£´Â ÃÖ¼Ò Çϳª ÀÌ»óÀÇ Åǹ®ÀÚ·Î ±¸ºÐµÇ¾î¾ß ÇÕ´Ï´Ù.

2.3.4 syslog.conf ¼³Á¤

  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ÀÌ ÀϾµµ·Ï ¼³Á¤ ÇÕ´Ï´Ù.

2.3.5 mpdÀÇ ±¸µ¿ ¹× ¿¬°á È®ÀÎ

  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ÀÇ ÀåÁ¡À» ½Ç°¨ÇÒ ¼ö ÀÖ½À´Ï´Ù.

2.3.6 rc.confÀÇ ¼³Á¤

   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"
...

2.3.7 rc.localÀÇ ¼³Á¤

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

2.3.8 ¸®ºÎÆ® ¹× mpdµ¿ÀÛ È®ÀÎ

 mpdÀÇ ¸ðµç ¼³Á¤ÀÌ ¿Ï·áµÇ¸é ¸®ºÎÆ® Çϰí mpd°¡ Á¤»óÀûÀ¸·Î µ¿ÀÛÇϰí ÀÖ´ÂÁö È®ÀÎÇÕ´Ï´Ù. ¾Æ¿ï·¯ ½Ã½ºÅÛÀÇ network ¶ÇÇÑ µ¿ÀÛÇÏ´ÂÁö È®ÀÎÇÕ´Ï´Ù. PPPoE Client¸¦ gateway·Î ÁöÁ¤Çؼ­ ¹æÈ­º®°ú NAT¸¦ »ç¿ëÇÏ·Á¸é ´ÙÀ½ÀýÀÇ ¹æÈ­º®°ú NAT¿ÍÀÇ ¿¬µ¿À» ÂüÁ¶Çϼ¼¿ä.


3. ¹æÈ­º®°ú NAT¿ÍÀÇ ¿¬µ¿

 FreeBSD¿¡¼­´Â ipfilter¿Í ipfw ±×¸®°í Á¦°¡ OpenBSD¿¡¼­ Æ÷ÆÃÇÑ pfÀÇ ¼¼°³ÀÇ ¹æÈ­º®ÀÌ Áö¿øµË´Ï´Ù. ¸ðµÎ ÀåÁ¡°ú ´ÜÁ¡ÀÌ ÀÖ°í, Ä¿³Î¸ðµå PPPoE¿Í ÇÔ²² »ç¿ëÇÒ ¼ö Àֱ⠶§¹®¿¡ »ç¿ëÇÏ´Â ºÐÀÇ ÃëÇâ¿¡ µû¶ó¼­ ¼±ÅÃÇÏ½Ã¸é µË´Ï´Ù.(FreeBSD pf´Â FreeBSD 4.x¿¡¼­ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.) º»Àý¿¡¼­´Â pf¿Í ipfilter¸¦ À§ÁÖ·Î ÇØ¼­ ¼³¸íÇϵµ·Ï ÇϰڽÀ´Ï´Ù. ipfwÀÇ °æ¿ìµµ ÀÌ¿Í À¯»çÇÕ´Ï´Ù. ipfilter¿Í ipfwÀÇ »ç¿ë¹ýÀº HandbookÀ̳ª manÆäÀÌÁö ¿¡¼­ ÂüÁ¶¹Ù¶ø´Ï´Ù. pfÀÇ »ç¿ë¹ýÀº ´ÙÀ½À» ÂüÁ¶¹Ù¶ø´Ï´Ù.

3.1 gateway ¼³Á¤

 Ä¿³Î¸ðµå PPPoE¸¦ »ç¿ëÇÏ´Â FreeBSD½Ã½ºÅÛÀ» gateway·Î »ç¿ëÇϱâ À§Çؼ­´Â rc.conf¿¡ ´ÙÀ½À» ¼³Á¤ÇØ¾ß ÇÕ´Ï´Ù.

...
gateway_enable="YES"
...

¶Ç´Â sysctlÀ» ÀÌ¿ëÇØ¼­ OID¸¦ ¼³Á¤Çϵµ·Ï ÇÕ´Ï´Ù.
#sysctl net.inet.ip.forwarding=1

3.2 »ç¿ëÇÒ ¹æÈ­º® ·ê¼Â

  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

3.3 NAT·ê¼Â

 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¸¦ ÁöÁ¤Çß½À´Ï´Ù.

3.4 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¿ÍÀÇ ¿¬µ¿Àº ¼º°øÀûÀÔ´Ï´Ù.

3.5 ½ÃÀÛ script¿¡ÀÇ Àû¿ë

  Ä¿³Î¸ðµå 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Àº Á¤»óÀûÀ¸·Î µÇ´ÂÁö È®ÀÎÇÕ´Ï´Ù.

3.6 PPPoE¿Í Path MTU Discovery ¹®Á¦

   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À» ÂüÁ¶Çϱ⠹ٶø´Ï´Ù.

3.6.1 ipfilter¿¡¼­ NAT½Ã mssclamp¼³Á¤

ÃÖ±ÙÀÇ 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)

4. pf¸¦ ÀÌ¿ëÇÑ À¯¿ëÇÑ ±â´É

4.1 pf/ALTQ¸¦ ÀÌ¿ëÇÑ Uplink Staturation ¹æÁö

  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 ¼Óµµ°¡ ÀúÇϵǴ °ÍÀ» ¸·À» ¼ö ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ ¼³Á¤ ¹æ¹ýÀº ¿©±â¸¦ ÂüÁ¶¹Ù¶ø´Ï´Ù.

4.2 Multiple route°£ÀÇ Load balancing ¼³Á¤

  pf¿¡¼­´Â mutiple router°£ÀÇ load balacingÀ» Áö¿øÇÕ´Ï´Ù. ¸¸ÀÏ ¿©·¯°³ÀÇ  ADSL¶óÀÎÀ» °¡Áö°í ÀÖÀ» °æ¿ì À̸¦ FreeBSD¿¡¼­ È¿°úÀûÀ¸·Î ÀÌ¿ëÇϱ⿡´Â ºÒ°¡´ÉÇß¾ú½À´Ï´Ù.(ÀüÅëÀûÀ¸·Î *BSD´Â multiple default route¸¦ Áö¿øÇÏÁö ¾Ê¾Ò½À´Ï´Ù.) pf¿¡¼­´Â ¼Ò½ºÀÇ address¸¦ random, source-hash, round-robin ½ÄÀ¸·Î ÁöÁ¤ÇÏ¿© È¿À²ÀûÀÎ ºÎÇÏ ºÐ»êÀÌ °¡´ÉÇÕ´Ï´Ù. ½ÇÁ¦ »ç¿ë¹ýÀº ¿©±â¸¦ ÂüÁ¶Çϼ¼¿ä.

4.3 NATŽÁö defeat

  ƯÁ¤ ÇÁ·Î·¥À» ÀÌ¿ëÇÏ¸é »ó´ë¹æÀÇ ½Ã½ºÅÛÀÌ NAT¸¦ »ç¿ëÇϰí ÀÖ´ÂÁö °øÀÎ IP¸¦ »ç¿ëÇϰí ÀÖ´ÂÁö ¾Ë ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¹æ¹ýÀº ISP¿¡¼­ »ç¿ëÇÒ ¼ö µµ ÀÖ°í ¾ÇÀÇÀûÀÎ »ç¿ëÀÚ°¡  Á¢¼ÓÀÚÀÇ º¸´Ù ÀÚ¼¼ÇÑ Á¤º¸¸¦ ¾Ë±â À§Çؼ­ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù. pf¿¡¼­´Â NAT¸¦ ŽÁö¸¦ ¹«·ÂÈ­ ½ÃŰ´Â random-id optionÀ» Áö¿øÇÕ´Ï´Ù.

4.4 TCP SYN Proxy

  °í°¡ÀÇ »ó¿ë¹æÈ­º®¿¡¼­¸¸ º¼ ¼ö ÀÖ´Â ±â´ÉÀ¸·Î pf¿¡¼­ µÞ´ÜÀÇ ´Ù¸¥ ½Ã½ºÅÛÀ» ´ë½ÅÇÏ¿© TCP Threeway HandshakingÀ» ¼öÇàÇÑ ÈÄ ´Ù½Ã Á¢¼ÓÀ» replayÇÏ´Â TCP SYN Proxy¸¦ Áö¿øÇÕ´Ï´Ù. ÀÌ ±â´ÉÀº pf 1.5.1ºÎÅÍ Áö¿øµË´Ï´Ù.

5. mpd¿Í FreeBSD¿¡ ´ëÇÑ °³ÀÎÀûÀÎ »ý°¢

 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>·Î ¹®ÀÇÇϱ⠹ٶø´Ï´Ù.


6. Âü°íÀÚ·á

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 $