À̱ÛÀº FreeBSD¿¡¼ ÀϹÝÀûÀÎ route ¼³Á¤À¸·Î Áö¿øµÇÁö ¾Ê´Â Multiple-route¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀ»
¼³¸íÇÕ´Ï´Ù. Multiple-route´Â
network ¼³Á¤¿¡¼ µ¿½Ã¿¡ ¿©·¯°³ÀÇ default route¸¦ »ç¿ëÇϴ°ÍÀ» ¸»ÇÕ´Ï´Ù. ¿¹¸¦µé¸é 2°³ ¶Ç´Â ±× ÀÌ»óÀÇ
ADSL¶óÀÎÀ» µ¿½Ã¿¡ »ç¿ëÇØ¼ network ¼Óµµ¸¦ Çâ»ó½ÃŰ°í ½Í°Å³ª, Àü¿ë¼±°ú ADSL °°ÀÌ »ç¿ëÇÏ¸é¼ Æ¯Á¤ »ç¿ëÀÚ ¶Ç´Â ƯÁ¤
¼ºñ½º´Â ADSL·Î¸¸ º¸³»°Å³ª Çϴ°ÍÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù. KAME
Project¿¡¼´Â ÀÌ ºÎºÐ¿¡ ´ëÇÑ ½ÇÇèÀûÀÎ patch°¡ ÀÖÁö¸¸ ¾ÆÁ÷ ¸¹Àº ¹®Á¦°¡ Àִ°ÍÀ¸·Î ¾Ë°í ÀÖ½À´Ï´Ù.
À̱ÛÀº FreeBSD pf¸¦
»ç¿ëÇØ¼ È¿°úÀûÀ¸·Î ¿©·¯°³ÀÇ route¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÕ´Ï´Ù.
Ä¿³Î¸ðµå PPPoE¿Í
pf/ipfilter/ipfw¿ÍÀÇ ¿¬µ¿¿¡¼ ¼Ò°³ÇÑ Ä¿³Î¸ðµå PPPoE¸¦ »ç¿ëÇÕ´Ï´Ù. ±×¸®°í Ä¿³Î¸ðµå PPPoEÀÇ ¼³Á¤Àº
Ưº°ÇÑ °æ¿ì°¡ ¾Æ´Ï¸é ´Ù½Ã ¼³¸íÇÏÁö ¾Ê¾Ò½À´Ï´Ù. ADSLÀÇ ¼³Á¤°ú mpdÀÇ »ç¿ë¹ýÀº Ä¿³Î¸ðµå PPPoE¿Í
pf/ipfilter/ipfw¿ÍÀÇ ¿¬µ¿À» ¸ÕÀú ÂüÁ¶Çϱ⠹ٶø´Ï´Ù. <±×¸² 1>Àº º» ±Û¿¡¼ »ç¿ëÇÒ network±¸¼ºµµ
ÀÔ´Ï´Ù.
[FreeBSD mpd]
[Àüȱ¹ÀÇ DSLSM]<--------------->|xDSL¸ðµ© |<----------------->|
NIC NIC
|<------------->[HUB]<------------------>
Àüȼ±
UTP |fxp1 fxp0 |
UTP
192.168.10.X
À¯µ¿ IP 192.168.10.2
|
[Àüȱ¹ÀÇ
DSLSM]<--------------->|xDSL¸ðµ©|<--------------------------+
UTP À¯µ¿ IP
fxp2
<±×¸² 1>
ÀÌ ±ÛÀº FreeBSD 5.1°ú
FreeBSD pf
1.58»ó¿¡¼ mpd 3.13À¸·Î ½ÃÇèÇÏ¿´½À´Ï´Ù.
mpd¿¡¼´Â ´ÙÀ½°ú °°ÀÌ
Ãß°¡µÇ´Â ADSL¶óÀο¡ ´ëÇÑ ºÎºÐÀ» Ãß°¡Çϵµ·Ï ÇÕ´Ï´Ù.
<mpd.conf>
#
# Kernel mode PPPoE mpd.conf
# $FreeBSD$
#
default:
load PPPoE1 -- (1)
load PPPoE2 -- (2)
# 1st line, fxp1
PPPoE1:
new -i ng0 PPPoE1 PPPoE1
set iface addrs 1.1.1.1
2.2.2.2
set iface route default
set iface disable on-demand
set iface idle 0
set bundle disable bw-manage
set bundle disable multilink
set bundle authname ktis0002
set link no acfcomp protocomp
set link disable pap chap
set link accept pap chap
set link mtu 1492
set ipcp yes vjcomp
set ipcp ranges 0.0.0.0/0
0.0.0.0/0
set iface up-script
/usr/local/etc/mpd/mpd.linkup1
set iface down-script
/usr/local/etc/mpd/mpd.linkdown1
open iface
#
# Additional links
# 2nd line, fxp2
PPPoE2:
new -i ng1 PPPoE2 PPPoE2
set iface addrs 1.1.1.1
2.2.2.2
# route was set by first line
#
set iface route default -- (3)
set iface disable on-demand
set iface idle 0
set bundle disable bw-manage
set bundle disable multilink
set bundle authname ktis0001
set link no acfcomp protocomp
set link disable pap chap
set link accept pap chap
set link mtu 1492
set ipcp yes vjcomp
set ipcp ranges 0.0.0.0/0
0.0.0.0/0
set iface up-script
/usr/local/etc/mpd/mpd.linkup2
set iface down-script
/usr/local/etc/mpd/mpd.linkdown2
open iface
¿©·¯ ¶óÀÎÀ» »ç¿ëÇϱâ À§Çؼ´Â (1),
(2)ó·³ load ¸í·ÉÀ» ÀÌ¿ëÇØ¼ Ãß°¡ÀûÀÎ Á¢¼Ó¶óÀÎÀ» ·ÎµåÇϵµ·Ï ÇÕ´Ï´Ù. (3)Àº PPPoE1¿¡¼ default route°¡
¼³Á¤µÇ±â ¶§¹®¿¡ ¼³Á¤ÇÏÁö ¾Ê¾Ò½À´Ï´Ù.
mpd.links¿¡µµ Ãß°¡µÇ´Â ¶óÀÎÀ» Á¤ÀÇÇϵµ·Ï
ÇÕ´Ï´Ù.
<mpd.links>
#
# mpd.links
#
PPPoE1:
set link type pppoe
set pppoe iface fxp1
PPPoE2:
set link type pppoe
set pppoe iface fxp2
mpd.secret¿¡µµ Ãß°¡µÇ´Â ID¿Í password¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
<mpd.secret>
#
# mpd.secret
#
your_id1 your_password1
your_id2 your_password2
mpdÀǹ®Á¦ÀÎÁö ¾Æ´Ï¸é Á¢¼Ó½Ã timing»óÀÇ
¹®Á¦ÀÎÁö È®½ÇÇÏÁö ¾ÊÁö¸¸ Ä¿³Î¸ðµå
PPPoE¿Í pf/ipfilter/ipfw¿ÍÀÇ ¿¬µ¿Ã³·³ ÇϳªÀÇ script·Î´Â µÎ¹øÂ°ÀÇ Á¢¼ÓÀÌ Á¦´ë·Î Á¢¼Ó¼³Á¤ÀÌ
µÇÁö ¾Ê´Â °æ¿ì°¡ °¡²û ¹ß»ýÇß½À´Ï´Ù. ±×·¡¼ °¢°¢ÀÇ up/down script¸¦ ±¸¼ºÇß½À´Ï´Ù.
<mpd.linkup1>
#!/bin/sh
#
# mpd startup script for PF
#
/usr/bin/touch /tmp/.mpd-linkup1
if [ -f /tmp/.mpd-linkup1 ] && [ -f /tmp/.mpd-linkup2 ]; then
/sbin/pfctl -Fa -f /etc/pf.conf
fi
<mpd.linkdown1>
#!/bin/sh
/bin/rm -f /tmp/.mpd-linkup1
#!/bin/sh
#
# mpd startup script for PF
#
/usr/bin/touch /tmp/.mpd-linkup2
if [ -f /tmp/.mpd-linkup1 ] && [ -f /tmp/.mpd-linkup2 ]; then
/sbin/pfctl -Fa -f /etc/pf.conf
fi
<mpd.linkdown2>
#!/bin/sh
/bin/rm -f /tmp/.mpd-linkup2
logÆÄÀϼ³Á¤À̳ª mpd½ÇÇà½ÃÀÇ ¹®Á¦´Â Ä¿³Î¸ðµå PPPoE¿Í pf/ipfilter/ipfw¿ÍÀÇ ¿¬µ¿À»
ÂüÁ¶ÇϽñ⠹ٶø´Ï´Ù.
»ç¿ëÇÒ ·ê¼ÂÀº network¼³Á¤°ú
Á¤Ã¥¿¡ µû¶ó¼ ´Ù¸£Áö¸¸ ¿©±â¼´Â °£´ÜÇÑ °æ¿ì¸¦ °í·ÁÇϰڽÀ´Ï´Ù.
1. À¥°°Àº public ¼ºñ½º´Â ÇÏÁö ¾Ê´Â´Ù.
2. port scanÀ» Çã¿ëÇÏÁö ¾Ê´Â´Ù.
3. ³»ºÎ »ç¿ëÀÚÁß Æ¯Á¤ÇÑ È£½ºÆ®¸¸ ÀÌ ½Ã½ºÅÛÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù.
4. ¸ðµç messenger·ùÀÇ ¼ºñ½º¸¦ ÇÏÁö ¾Ê´Â´Ù.
5. ¿ÜºÎ·Î ³ª°¡´Â ¸ðµç trafficÀº round-robin½ÄÀ¸·Î 2°³ÀÇ ADSL¶óÀÎÀ»
ÀÌ¿ëÇÑ´Ù.
6. NAT ŽÁö¸¦ ¹«·ÂÈ ½ÃŲ´Ù.
7. pf¿¡¼ MSS¸¦ Á¶Á¤Çϵµ·Ï ÇÑ´Ù.
8. ¿ÜºÎ·Î ³ª°¡´Â ¸ðµç packetÀº state¸¦ »ý¼ºÇϵµ·Ï ÇÑ´Ù.
#
# $FreeBSD$
# PF rule set for mpd on FreeBSD
#
# Network Configuration
#
#
# Kernel mode PPPoE with mpd
# -----------[FreeBSD PF]---------------[S/W Hub]------[192.168.10.0/24]
# ADSL1 fxp1 | fxp0(192.168.10.2)
#
|
# ---------------+
# ADSL2 fxp2
#
# ADSL #1
extif0="ng0"
extgw0="xxx.xxx.xxx.xxx" -- (1)
# ADSL #2
extif1="ng1"
extgw1="yyy.yyy.yyy.yyy" -- (2)
ExtIF="{" $extif0 $extif1 "}"
IntIF="fxp0"
ME="192.168.10.2"
INTERNAL="192.168.10.0/24"
tcp_winmx="{4661, 6699, 7950, 7951, 7952}"
udp_winmx="{6257}"
icq="{64.12.161.185, 64.12.200.89, 205.188.153.249, 205.188.179.233,
64.12.161.153}"
oscar="{64.12.161.153, 64.12.161.185, 64.12.200.89, 205.188.153.249,
205.188.179.233}"
yahoo="{216.136.233.128}"
table <badhost> 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.10.1, 192.168.10.2,
192.168.10.6, \
192.168.10.21, 192.168.10.7, 192.168.10.12}
set loginterface $IntIF
# Clean up fragmented and abnormal packets, defeat NAT detection too
# max-mss is needed due to mpd's poor MSS handling
scrub in all
scrub out all random-id max-mss 1440
#
# NAT section
#
nat on $extif0 inet from
$INTERNAL to any -> ($extif0)
nat on $extif1 inet from
$INTERNAL to any -> ($extif1)
# Remember default rule for non-matching packets are passed!!!
block
out log on
$ExtIF all
block
in log on
$ExtIF all
block
out log on
$IntIF all
block
in log on
$IntIF 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 quick on $IntIF from
<allowhost> to $ME -- (3)
pass out quick on $IntIF from $ME
to <allowhost> -- (4)
pass in on
$IntIF route-to \
{ ($extif0 $extgw0), ($extif1 $extgw1) } round-robin \
from <allowhost> to any keep state -- (5)
#
# block spoofing attack
#
block in quick log on $ExtIF from <badhost> to any
#
# block port scan
block in log quick on $ExtIF inet proto tcp from any to any flags
FUP/FUP
block in log quick on $ExtIF inet proto tcp all flags SF/SFRA
block in log quick on $ExtIF inet proto tcp all flags /SFRA
#
#
# send ICMP reset on NetBIOS and auth
#
block return-rst in log quick on $ExtIF proto tcp from any to any port
{113, 137, 139}
# block WinMX
block out log quick inet proto tcp from any to any port $tcp_winmx
block out log quick inet proto udp from any to any port $udp_winmx
# block
MSN(messenger.hotmail.com)
block out log quick proto tcp from any to { 207.46.104.20, 64.4.13.0/24
}
block out log quick proto tcp from any to any port {1863, 5060, 5061}
block out log quick proto udp from any to any port 5060
# block ICQ(login.icq.com)
block out log quick proto tcp from any to $icq
block out log quick proto tcp from any to any port 5190
# block AIM(login.oscar.aol.com)
block out log quick proto tcp from any to $oscar
# port 5190 already blocked by ICQ
#block out log quick proto tcp from any to any port 5190
# block Yahoo(cs.yahoo.com)
block out log quick proto tcp from any to $yahoo
block out log quick proto tcp from any to port 5050
#
# all traffic to extif0 should go gateway #0
# all traffic to extif1 should go gateway #1
pass
out on $extif1 route-to ($extif0 $extgw0) from $extif0 to any --
(6)
pass
out on $extif0 route-to ($extif1 $extgw1) from $extif1 to any --
(7)
#
#
# general pass out rules for all external interfaces
pass out on $extif0 inet proto tcp all flags S/SA keep state
pass out on $extif0 inet proto {udp, icmp} all keep state
pass out on $extif1 inet proto tcp all flags S/SA keep state
pass out on $extif1 inet proto {udp, icmp} all keep state
(1), (2)´Â °¢°¢ÀÇ interface¿¡
ÇÒ´çµÈ gateway IP addressÀÔ´Ï´Ù. mpd¿¡¼ Á¢¼ÓÀÌ µÈ ÈÄ ¼³Á¤µÇ´Â gateway address¸¦
ÁöÁ¤Çϵµ·ÏÇÕ´Ï´Ù.
¹®Á¦´Â À¯µ¿ IP¸¦ »ç¿ëÇÏ´Â ADSL¿¡¼´Â IP°¡ º¯°æµÉ ¼ö ÀÖ°í ÀÌ¿¡ µû¶ó¼ gatewayµµ º¯°æµÉ ¼ö ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù. º¸´Ù
Á¤È®ÇÑ ¹æ¹ýÀº Á¢¼Ó½Ã ½ÇÇàÇÏ´Â script¿¡¼ ÇÒ´çµÈ gateway·Î ÁöÁ¤Çϵµ·Ï Çϴ°ÍÀÌ ÇÊ¿äÇÕ´Ï´Ù. ÀÌ °æ¿ì ¿ÜºÎ
script¿Í awk(1), perl(1)À» ÀÌ¿ëÇÑ Ã³¸®°¡ ÇÊ¿äÇÕ´Ï´Ù. ±×·¯³ª ½ÇÁ¦·Î gateway°¡ º¯°æµÇ´Â °æ¿ì´Â °ÅÀÇ
¾ø½À´Ï´Ù.(Àü ¾ÆÁ÷ Çѹøµµ °Ý¾îº¸Áö ¸øÇß½À´Ï´Ù.)
´ëºÎºÐÀÇ °æ¿ì °íÁ¤µÈ gateway address¸¦ »ç¿ëÇÏ´õ¶óµµ º° ¹®Á¦°¡ ¾øÀ»°ÍÀ¸·Î »ý°¢ÇÕ´Ï´Ù. ÀÚ½ÅÀÌ »ç¿ëÇÏ´Â gateway
address´Â mpd°¡ ÇϳªÀÇ link¸¦ ÀÌ¿ëÇϵµ·Ï ¼³Á¤Çؼ È®ÀÎÇÏ¸é µË´Ï´Ù.
(3), (4)´Â ³»ºÎ networkÀÇ ½Ã½ºÅÛ Áß Æ¯Á¤ È£½ºÆ®°¡ ÀÌ ½Ã½ºÅÛ($ME)À¸·Î Á¢¼ÓÇÏ´Â °æ¿ì¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
¸¸ÀÏ
(3), (4)°¡ ¾ø´Ù¸é (5)¿¡ ÀÇÇØ¼ ¸ðµç trafficÀÌ ¿ÜºÎ·Î Àü¼ÛµË´Ï´Ù. Áï ¿ÜºÎ¿¡¼ sshµîÀ¸·Î ÀÌ È£½ºÆ®·Î Á¢¼ÓÇÒ
¼ö ¾ø½À´Ï´Ù.
(5)´Â °¡Àå ÇÙ½ÉÀûÀÎ ºÎºÐÀ¸·Î ¿ÜºÎ·Î ³ª°¡´Â trafficÀ» µÎ°³ÀÇ gateway·Î round-robin ¹æ½ÄÀ¸·Î ³ª´©¾î¼
º¸³»°Ô µË´Ï´Ù. round-robin¿Ü¿¡µµ bitmask, random, source-hashµîÀÌ ¿Ã ¼ö ÀÖ½À´Ï´Ù.
À̸¦
ÀÌ¿ëÇϸé ÀϹÝÀûÀÎ pf·ê¿¡ ´Ù¾çÇÑ Á¦¾àÀ» °¡Çؼ ¿øÇÏ´Â °á°ú¸¦ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. round-robinÀÇ °æ¿ì ÇÑ ½Ã½ºÅÛ¿¡¼
Á¢¼ÓÇÏ´õ¶óµµ ¿©·¯°³ÀÇ route¸¦ µ¿½Ã¿¡ ÀÌ¿ëÇϱ⠶§¹®¿¡ ºÎÇϸ¦ ºÐ»êÇÏ´Â °¡Àå È¿°úÀûÀÎ ¹æ¹ýÁßÀÇ Çϳª·Î »ý°¢µË´Ï´Ù. ¸¸ÀÏ
port¿¡ Á¦¾àÀ» °¡ÇÏ¸é ¼ºñ½ºº°·Î »ç¿ëÇÏ´Â ADSL¶óÀÎÀ» °áÁ¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
(6),(7)Àº $extif0¿Í $extif1·Î Àü¼ÛµÈ packetÀÌ ÁöÁ¤µÈ gateway¸¦ »ç¿ëÇϵµ·Ï ÁöÁ¤ÇÕ´Ï´Ù. ¸¸ÀÏ ISP¿¡¼ °°Àº gateway¸¦ ÇÒ´çÇÏ°Ô µÇ¸é (5)ÀÇ
route-to°¡ µ¿ÀÛÇÏÁö ¾Ê½À´Ï´Ù. ADSL½Åû½Ã ¹Ýµå½Ã ´Ù¸¥ gateway¸¦ ÇÒ´çÇϵµ·Ï ÇϽʽÿä.
4. ¿¡¼´Â 2°³ÀÇ ADSLÀ»
»ç¿ëÇϴ°ÍÀ» °¡Á¤Çß½À´Ï´Ù. ±×·¯³ª 4.¿¡ »ç¿ëµÈ ·ê¼ÂÀº ÀϹÝÀûÀ̱⠶§¹®¿¡ interfaceÀ̸§°ú gatewayÁÖ¼Ò¸¸
º¯°æÇÏ¸é °°Àº ·ê¼ÂÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
µÎ°³ÀÇ ADSL¶óÀÎÀ» »ç¿ëÇÒ°æ¿ì ifconfig(8)¿¡¼ ´ÙÀ½°ú °°Àº ³»¿ëÀ» º¼ ¼ö ÀÖ½À´Ï´Ù.
monster# ifconfig -a
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.10.2 netmask
0xffffff00 broadcast 192.168.10.255
inet6
fe80::207:e9ff:fe08:4585%fxp0 prefixlen 64 scopeid 0x1
ether 00:07:e9:08:45:85
media: Ethernet autoselect
(100baseTX <full-duplex>)
status: active
fxp1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
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
fxp2: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet6
fe80::290:27ff:fee9:24ef%fxp2 prefixlen 64 scopeid 0x3
ether 00:90:27:e9:24:ef
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 0x4
inet 127.0.0.1 netmask
0xff000000
pflog0: flags=141<UP,RUNNING,PROMISC> mtu 33208
pfsync0: flags=41<UP,RUNNING> mtu 1896
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST>
mtu 1492
inet 211.xxx.xxx.xxx -->
xxx.xxx.xxx.xxx netmask 0xffffffff
inet6
fe80::207:e9ff:fe08:4585%ng0 prefixlen 64 scopeid 0x7
ng1: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST>
mtu 1492
inet 61.yyy.yyy.yyy -->
yyy.yyy.yyy.yyy netmask 0xffffffff
inet6
fe80::207:e9ff:fe08:4585%ng1 prefixlen 64 scopeid 0x8
netgraph node ng0,
ng1¸ðµÎ IP address¸¦ ÇÒ´ç¹Þ¾Ò°í, »ó´ëÆíÀÇ ÁÖ¼Ò°¡ °¢°¢ xxx.xxx.xxx.xxx, yyy.yyy.yyy.yyy·Î
¼³Á¤µÈ°ÍÀ» ¾Ë ¼ö ÀÖ½À´Ï´Ù. ¼³Á¤ÀÌ ¿Ï·áµÇ¸é ÀÌ ½Ã½ºÅÛÀ»
gateway·Î ÀÌ¿ëÇØ¼ Á¢¼ÓÇØ º¸±â ¹Ù¶ø´Ï´Ù. ¿¹Àüº¸´Ù ºü¸¥ ¼Óµµ¸¦ ü°¨ÇÒ ¼ö ÀÖ½À´Ï´Ù. Á¤¸» ¿©·¯°³ÀÇ ¶óÀÎÀ» »ç¿ëÇÏ´ÂÁö´Â
traceroute(8)¸¦ »ç¿ëÇØ¼ ¾î¶² route¸¦ ÀÌ¿ëÇÏ´ÂÁö È®ÀÎÇØ º¸±â ¹Ù¶ø´Ï´Ù. ¶Ç´Â ADSL¸ðµ©ÀÇ LED¸¦ º¸¼Åµµ ¾Ë
¼ö ÀÖ½À´Ï´Ù. µÎ ¶óÀθðµÎ Orange LED°¡ ±ô¹ÚÀÔ´Ï´Ù.
<ÁÖÀÇ>
ADSLÀÇ °æ¿ì µÎ°³ ¶Ç´Â ±× ÀÌ»óÀÇ ¶óÀÎÀ» »ç¿ë½Ã
°°Àº gateway address¸¦ ISP¿¡¼ ÇÒ´çÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì´Â µ¿ÀÛÇÏÁö ¾Ê½À´Ï´Ù. ¸¸ÀÏ µÎ°³ÀÇ
ADSL¶óÀÎÀÇ gateway address°¡ °°´Ù¸é ´Ù¸¥ gateway¸¦ »ç¿ëÇϵµ·Ï ISP¿¡ ¿äûÇϱ⠹ٶø´Ï´Ù.
round-robinÀº trafficÀÇ Æ¯¼º¿¡ °ü°è¾øÀÌ Á¢¼Ó½Ã¸¶´Ù ÀÌ¿ë °¡´ÉÇÑ route¸¦ ¼øÂ÷ÀûÀ¸·Î
¼±ÅÃÇÕ´Ï´Ù. ´ëºÎºÐÀÇ °æ¿ì round-robin¹æ½ÄÀº ¹®Á¦°¡ ¾øÁö¸¸ Á¢¼Ó½Ã µÎ°³ÀÌ»óÀÇ connectionÀ» ÇÊ¿ä·ÎÇÏ´Â
ÇÁ·Î±×·¥¿¡°Ô´Â ¹®Á¦°¡ ÀÖ½À´Ï´Ù. ¿¹¸¦µé¸é ftpÀÇ °æ¿ì control connection°ú data connectionÀÇ µÎ°³¸¦
»ç¿ëÇÕ´Ï´Ù. ¸¸ÀÏ control connection°ú data connectionÀÌ ¼·Î ´Ù¸¥ route¸¦ ÅëÇÏ¿© Àü¼ÛµÇ¸é
NAT¿¡ ÀÇÇØ¼ control connection°ú data connectionÀÌ ¼·Î ´Ù¸¥ IP·Î º¯È¯µÇ¾î ftp¼¹ö·Î
Àü¼ÛµÇ°í ftp¼¹ö¿¡¼´Â À̸¦ ¹«½ÃÇÏ°Ô µË´Ï´Ù. ftp client¿¡¼´Â ¸í·ÉÀÌ ½ÇÆÐÇÒ °æ¿ì ÀÌÀü¿¡ ³»¸° ¸í·ÉÀ» ´Ù½Ã ¹Ýº¹Çϸé
¾Æ¸¶µµ round-robin¿¡ ÀÇÇØ¼ ´ÙÀ½¿¡´Â ¿Ã¹Ù¸¥ route¸¦ »ç¿ëÇÒ ¼ö µµÀÖ½À´Ï´Ù. ±×·¯³ª ÀÌ·±½ÄÀÇ network»ç¿ëÀº
ºÒÇÊ¿äÇÑ trafficÀ» ¹ß»ý½Ã۸ç, ´õ Áß¿äÇѰÍÀº ÀÌ·¯ÇÑ trafficÀº ±¹³»ÀÇ ADSLÀÌ Á¦ÇÑÇÏ´Â 64KbpsÀÇ ºñÇö½ÇÀûÀ¸·Î
´À¸° uplink¼Óµµ¿¡ Ä¡¸íÀûÀÎ ¿µÇâÀ» °¡Á®¿Í¼ network¼Óµµ¸¦ ÇöÀúÇÏ°Ô °¨¼Ò½Ãŵ´Ï´Ù.(TCP ÇÁ·ÎÅäÄÝÀº ¼Û½ÅÇÑ
packetÀÌ Á¦´ë·Î Àü¼ÛµÇ¾ú´ÂÁö ACK packetÀ» ¿ä±¸ÇÕ´Ï´Ù. Download¼Óµµ°¡ ºü¸£´Ù´Â°ÍÀº ÀÌ¿¡ ºñ·ÊÇØ¼ TCP
ACK packetÀÌ ºü¸¥ ¼Óµµ·Î »ó´ë¹æÀ¸·Î Àü¼ÛµÈ´Ù´Â°ÍÀ» ÀǹÌÇÕ´Ï´Ù. ACK packetÀÌ ¾î¶°ÇÑ ÀÌÀ¯·Î Á¦¶§¿¡ Àü¼ÛµÇÁö
¾ÊÀ¸¸é download¼Óµµµµ ÀÌ¿¡ µû¶ó¼ °ã°ÝÈ÷ °¨¼ÒÇÕ´Ï´Ù. ADSLÀº uplinkÀÇ bandwidth°¡
À۱⶧¹®¿¡ ¿©·¯°³ÀÇ connectionÀ» ¿ä±¸ÇÏ´Â ÀÛ¾÷À» ¼öÇàÇϸé uplink°¡ saturationµÇ´Â »óȲÀÌ ¹ß»ýÇÒ
°¡´É¼ºÀÌ ³ô½À´Ï´Ù. °Ô´Ù°¡ ±¹³»ÀÇ uplink¼Óµµ°¡ ³Ê¹« À۱⠶§¹®¿¡ ¾Æ¹«¸®
Àüȱ¹ÀÇ DSLAM¿¡¼ download¼Óµµ¸¦ 2MBÀÌ»óÀ¸·Î ÁöÁ¤Çصµ ±× ¼Óµµ¸¦ ¾òÀ» ¼ö ¾ø½À´Ï´Ù. ÇØ°áÃ¥À¸·Î´Â
downloadÁß¿¡´Â ´Ù¸¥ networkÀÛ¾÷À» ÇÏÁö ¾Ê°Å³ª ALTQ¸¦ ÀÌ¿ëÇØ¼ TCP ACK packet¿¡ priority¸¦
ºÎ¿©ÇÏ´Â ¹æ¹ý¿Ü¿¡´Â ¾ø½À´Ï´Ù.)
round-robinÀÇ µ¿ÀÛ¹æ½ÄÀÌ ¿î¿ëȯ°æ¿¡ ¸ÂÁö ¾Ê´Â´Ù¸é ³»ºÎ¿¡¼ »ç¿ëÇÏ´Â ½Ã½ºÅÛÀÇ IPº°·Î ƯÁ¤ gateway¸¦
»ç¿ëÇÏ´Â ¹æ¹ý(netmask,
source-hash)°ú ƯÁ¤ siteÀÇ °æ¿ì ÁöÁ¤µÈ gateway¸¸ »ç¿ëÇϵµ·Ï ÇÏ´Â ¹æ¹ýÀÌ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù. ¹°·Ð ÀÌ ¹æ¹ýÀº
round-robin¿¡ ºñÇØ¼ µÎ°³ÀÇ route¸¦ È¿°úÀûÀ¸·Î ÀÌ¿ëÇÏÁö´Â ¸øÇÕ´Ï´Ù.
ftp¸¦ Á¦¿ÜÇÑ ´ëºÎºÐÀÇ
¸ðµç ¼ºñ½º´Â ÇϳªÀÇ connectionÀ» »ç¿ëÇÏÁö¸¸ ´ÙÀ½°ú °°Àº °æ¿ì round-robinÀ» »ç¿ëÇÏ¸é ¹®Á¦°¡¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù.
FreeBSD pf´Â rc system¿¡¼ ¾ÆÁ÷
Áö¿øµÇÁö ¾Ê±â ¶§¹®¿¡ ´ÙÀ½°ú °°ÀÌ ¼³Á¤ÇÕ´Ï´Ù.
</etc/rc.conf>
......
defaultrouter="NO"
hostname="yourhostname"
ifconfig_fxp0="inet 192.168.10.2 netmask 255.255.255.0"
ifconfig_fxp1="up"
ifconfig_fxp2="up"
gateway_enable="YES"
......
</etc/rc.local>
#
# Load PF
#
#
# Load PF
#
if ! /sbin/kldstat |grep -w pflog.ko >/dev/null; then
/sbin/kldload pflog
/sbin/ifconfig pflog0 up
fi
if ! /sbin/kldstat |grep -w pfsync.ko >/dev/null; then
/sbin/kldload pfsync
/sbin/ifconfig pfsync0 up
fi
if [ ! -f /var/log/pflogd.pid ]; then
/sbin/pflogd
fi
if ! /sbin/kldstat |grep -w pf.ko >/dev/null; then
/sbin/kldload pf
fi
/sbin/pfctl -e
#
# Kernel mode PPPoE setup
#
/usr/bin/killall mpd
if [ -f /tmp/.mpd-linkup1 ]; then
/bin/rm -f /tmp/.mpd-linkup1
fi
if [ -f /tmp/.mpd-linkup2 ]; then
/bin/rm -f /tmp/.mpd-linkup2
fi
if [ -x /usr/local/sbin/mpd -a -f /usr/local/etc/mpd/mpd.conf ]; then
if ! /sbin/kldstat |grep -w ng_ether.ko
>/dev/null; then
/sbin/kldload ng_ether
fi
echo -n " mpd";
/usr/local/sbin/mpd -b
fi