다음 이전 차례

6. Network Technology Specific Information.

다음의 하위 부분들은 특정 네트워크 기술에 대해 명시한 것이다. 이 부분에 포 함된 정보는 다른 타입의 네트워크 기술에 반드시 적용되는 것은 아니다.

6.1 ARCnet

ARCNET 디바이스는 'arc0s', 'arc1e', 'arc2e' 등으로 이름붙여진다. 커널에 의 해 처음으로 발견되는 카드는 'eth0'에 할당되며 나머지는 그들이 발견되는 순 서에 따라 차례대로 할당된다. 마지막의 문자는 이더넷 인캡슐레이션 패킷을 선 택했는지, RFC1051 패킷 포맷을 사용했는지를 알려준다.

커널 컴파일 옵션:

Network device support ---> [*] Network device support <*> ARCnet support [ ] Enable arc0e (ARCnet "Ether-Encap" packet format) [ ] Enable arc0s (ARCnet RFC1051 packet format)

한번이라도 이더넷 카드의 지원을 위해 커널을 적절히 만들어 본적이 있다면 이 카드의 설정은 쉬울것이다.

전형적으로 다음과 같은것을 사용할 것이다:

     # ifconfig arc0e 192.168.0.1 netmask 255.255.255.0 up
        # route add 192.168.0.0 netmask 255.255.255.0 arc0e
 
자세한 정보는 /usr/src/linx/Documentation/networking/arcnet-hardware.txt 파일을 참고하라.

ARCNet 지원은 Avery Pennarun, apenwarr@foxnet.net에 의해서 개발되었다.

6.2 Appletalk(AF_APPLETALK)

Appletalk 지원은 특별한 디바이스를 사용하지 않는데, 이것이 기존의 네트워크 디바이스를 사용하기 때문이다. 이것의 중요한 사용은 리눅스 머신과 애플 컴퓨 터가 프린터나 디스크등의 자원을 공유하기 위해서이다. 추가의 소프트웨어가 필요하며 이것은 netatalk라고 불린다. Wesley Craig netatalk@umich.edu가 미 시간 대학의 'Research Systems Unix Groups'이란 팀을 대표했으며 그들은 neta talk 패키지를 개발해 내었는데, 이것은 Appletalk 프로토콜 스택과 유용한 유 틸리티를 제공하는 소프트웨어를 제공한다. netatalk 패키지는 리눅스 배포본에 의해 제공되거나 아니면 미시간 대학에 있는 홈사이트에서 ftp 전송을 받을수있 다.

< terminator.rs.itd.umich.edu/unix/netatalk/>

이 패키지를 설치하기 위해서는 다음과 같이 하라.

     # cd /usr/src
        # tar xvfz .../netatalk-1.4b2.tar.Z
        - 여기서 'Makefile'을 수정하고 싶을수도 있는데, 특히 파일들이 어디  
    
에 설치될 것인가를 정의해주는 DESTDIR 변수를 바꾸어 주기 위해 그 럴 것이다. 디폴트는 /usr/local/atalk로 되어있는데 매우 안전하다.
        # make 
        - as root:
        # make install

Appletalk 소프트웨어의 설정.

이것이 동작하게 하기위해 가장 먼저 해야할일은 /etc/services 파일에 새로운 엔트리를 추가하는 것이다. 추가할 엔트리는 다음과 같다:

    rtmp    1/ddp   # Routing Table Maintenance Protocol
       nbp     2/ddp   # Name Binding Protocol
       echo    4/ddp   # AppleTalk Echo Protocol
       zip     6/ddp   # Zone Information Protocol
다음은 /usr/local/atalk/etc 디렉토리에(혹은 패키지를 설치한 디렉토리에) ap pletalk 설정파일을 만들어 주는 것이다.

처음으로 만들어줘야 하는 파일은 /usr/local/atalk/etc/atalkd.conf 파일이다. 처음에는 이 파일은 애플 머신이 있는 네트워크를 지원하는 네트워크 디바이스 의 이름을 지정하는 하나의 라인만이 필요할뿐이다.

     eth0
 
Appletalk 데몬은 나머지 세부사항들을 실행뒤에 추가할것이다.

Appletalk를 경유한 리눅스 파일시스템의 탐험.

네트워크상의 애플머신이 공유하도록 리눅스 파일시스템을 네트워크로 export 할수도 있다.

이것을 위해서는 /usr/local/atalk/etc/AppleVolumes.system 파일을 설정해야 한다. /usr/local/atalk/etc/AppleVolumes.default라 불리는 다른 설정 파일도 있는데 이것은 완전히 같은 포맷을 가지고 있으며, 게스트 권한을 가지고 접속 한 사용자가 어떤 파일 시스템을 받을 것인가를 기술한다.

이 파일의 설정에 대한 모든 세부사항과 어떤 다양한 옵션이 있는가는 afpd 맨 페이지에서 찾을수 있다.

다음과 같은 간단한 예를 볼수있다:

     /tmp Scratch 
        /home/ftp/pub "Public Area"
 
이것은 /tmp 파일시스템을 AppleShare Volume의 'Scratch'로, ftp public 디렉 토리를 AppleShare Volume의 'Public Area'로 export 할것이다. Volume의 이름 은 강제적인 것이 아니고 데몬이 몇가지를 선택하며, 어쨋든 그들을 명시하지 말아라.

Appletalk 와 리눅스 프린터 공유하기.

아주 간단하게 리눅스 프린터를 애플 머신과 공유할수 있다. 여러분은 Apple Pr inter Access Protocol Daemon인 papd를 실행할 필요가 있다. 이 프로그램을 운 영하면 이것은 애플 머신으로 부터 요청을 받아들이고 로컬 라인 프린터 데몬으 로 프린트 잡을 스풀할것이다.

이 데몬의 설정을 위해서는 /usr/local/atalk/etc/papd.conf 파일을 수정할 필 요가 있다. 정의에 넣어준 이름은 Appletalk naming 프로토콜과 함께 등록될것 이다.

다음과 같은 간단한 예를 볼수있다:

     TricWriter:\
            :pr=lp:op=cg:
 
이것은 Appletalk 네트워크에서 가능한 'TricWriter'란 이름의 프린터를 만들며 들어오는 job은 lpd를 사용하는 'lp'(/etc/printcap에 정의된 바와 같이) 프린 터로 프린트 될것이다. 'op=cg' 엔트리는 리눅스 유저 'cg'가 프린터의 오퍼레 이터임을 말해준다.

Appletalk 소프트웨어 시작하기.

ok, 이제 여러분은 기본 설정을 테스트할 준비가 되었다. netatalk 패키지와 함 께 제공되며 잘 동작하는 rc.atalk 파일이 있다. 그러므로 여러분은 다음만 해 주면 된다.

     # /usr/local/atalk/etc/rc.atalk
  
모든 시작하고 잘 돌아갈것이다. 아무런 에러메세지도 나지 않을것이고, 각 스 테이지가 시작할때 이 소프트웨어는 콘솔로 메세지를 보낼것이다.

appletalk 소프트웨어의 테스트.

이 소프트웨어가 적절하게 동작하는가를 테스트하기 위해서는 애플머신으로 달 려가서, Apple 메뉴를 풀다운하고, Chooser를 선택한뒤, AppleShare를 클릭해 라. 그러면 리눅스 박스가 보일것이다.

appletalk 소프트웨어의 주의할점.

  1. IP 네트워크를 설정하기 전에 appletalk 지원을 시작해야 할지도 모른다. Appletalk 프로그램을 시작하는데 문제가 있다면, 혹은 그것은 시작한뒤에 IP 네트워크에 문제가 생겼다면, /etc/rc.d/rc.inet1 파일을 실행하기 전에 Appletalk 프로그램을 시작해 보아라.
  2. afpd(Apple Filing Protocol Daemon) 지독하게 하드디스크를 잡아먹는다. 마 운트 포인트 아래에 이것은 몇개의 디렉토리를 만든다. 이것은 .AppleDouble 디렉토리를 만들어서 resource fork를 저장할 수 있다. 그러므로 '/'를 익스 포팅(exporting)하기 전에 두번 생각하라. 나중에 정리하는데 많은 시간이 걸릴것이다.
  3. afpd 프로그램을 맥으로부터 클리어 텍스트 패스워드를 기대한다. 보안이 문제가 될 수 있으므로 인터넷에 연결된 머신에서 이 데몬을 운영할때는 신중하라. 누군가가 못된짓을 한다면 여러분 자신을 비난해야 한다.
  4. netstat, ifconfig등 기존의 분석툴은 Appletalk를 지원하지 않는다. 필요하 다면 /proc/net 디렉토리에서 정보를 얻을수 있다.

그외의 정보.

리눅스에서 Aplletalk를 설정하는 방법에 대한 더 자세한 기술은 thehamptons.c om < thehamptons.com/anders/netatalk/>의 Anders Brownworth Linux Net atalk-HOWTO 페이지를 참고하라.

6.3 ATM

리눅스에 Asynchronous Transfer Mode를 지원하기 위한 프로젝트를 Werner Alme sberger < werner.almesberger@lrc.di.epfl.ch>가 관리중이다. 프로젝트의 상황 에 대한 현재 정보는 다음에서 얻을수 있다.< www.epfl.ch/linux-atm>

6.4 AX25 (AF_AX25)

AX.25 디바이스는 커널 2.0.*에서 'sl0', 'sl1' 등이고, 커널 2.1.*에서 'ax0', 'ax1' 등이다.

Kernel Compile Options: Networking options ---> [*] Amateur Radio AX.25 Level 2

AX25, Netrom, Rose 프로토클은 AX25-HOWTO 에서 다루어 진다. 이 프로토콜은 패킷 라디오 실험의 세계 아마추어 라디오 오퍼레이터에 의해 사용된다.

이 프로토콜의 implementation의 대부분의 작업은 Jonathon Naylor, jsn@cs.not.ac.uk에 의해 이루어졌다.

6.5 DECNet.

DECNet의 지원은 현재도 계속 작업중이다. 이후의 2.1.* 커널에서는 볼수도 있 겠다.

6.6 EQL - multiple line traffic equaliser

EQL 디바이스 이름은 'eql'이다. 표준의 커널소스로는 한 머신당 하나의 EQL 디 바이스만을 갖는다. EQL은 tcp/ip를 운송하는 싱글 로지컬 링크로서의 PPP, sli p, plip등의 다중 point to point 활용의 수단을 제공한다. 여러개의 저속 라인 을 쓰는 것이 종종 한개의 고속 라인을 쓰는것보다 더 싸다.

Kernel Compile Options: Networking options ---> [*] Amateur Radio AX.25 Level 2

이 메카니즘을 지원하기 위해서는 라인의 다른 끝에 있는 머신도 EQL을 지원해 야 한다. Linux, Livingstone, Portmaster 그리고 새로운 다이얼인 서버가 호환 능력을 제공한다.

EQL을 설정하기 위해서는 다음에서 구할수 있는 eql 툴이 있어야 한다. sunsite.unc.edu < sunsite.unc.edu/pub/linux/system/Serial/eql-1.2.tar.gz>

설정은 대단히 수월하다. eql 인터페이스를 설정하면서 시작한다. eql 인터페이 스는 다른 네트워크 인터페이스와 비슷하다. 다음과 같이 ifconfig 유틸리티를 이용하여 IP 어드레스와 myu를 설정한다.

 ifconfig eql 192.168.10.1 mtu 1006
    route add default eql
  
다음으로 사용할 각 라인을 수동으로 초기화해줄 필요가 있다. 이것은 point to point 디바이스의 조합으로 나타난다. 커넥션을 어떻게 초기화할것인가 하는것 은 라인의 종류에 따라 달라지며, 더 자세한 정보는 적절한 부분을 참고하기 바 란다.

마지막으로 EQL 디바이스와 시리얼 링크를 연결할 필요가 있으며, 이것은 'ensl aving'이라고 불리고 보이는 바와 같이 eql_enslave 명령으로 이루어진다.

     eql_enslave eql sl0 28800
        eql_enslave eql ppp0 14400
  
여러분이 eql_enslave에 제공하는 'estimated speed' 파라메터는 직접적으로는 아무것도 하지 않을 것이다. 이것은 EQL 드라이버에 의해 디바이스가 얼만큼의 데이터그램을 받을것인가를 결정하기 위해 사용된다. 그러므로 여러분은 이 값 을 사용함으로써 균형을 적절히 조절할수 있다.

EQL 디바이스로 부터 라인의 연결을 끊기 위해서는 다음과 같이 eql_emancipate 명령을 사용한다.

     eql_emancipate eql sl0
  
라우트가 실제의 시리얼 디비이스 대신에 eql 디바이스를 참조하는 것을 제외하 면 다른 point to point 링크로 라우팅을 추가할수도 있다. 전형적으로 다음과 같이 하용하겠지:
     route add default eql0
  
EQL 드라이버는 Simon Janes simon@ncm.com에 의해 개발되었다.

6.7 이더넷.

이더넷 디바이스의 이름은 'eth0', 'eth1' ,'eth2' 등이다. 커널에 의해 첫번째 로 발견되는 카드는 'eth0'에 할당되며 나머지는 발견되는 발견되는 순서대로 할당된다.

리눅스 상에서 이더넷 카드의 동작법을 알고싶다면 Ethernet-HOWTO를 참고하라.

이더넷 카드를 지원하도록 커널을 만들어 보았다면 이 설정은 쉬울것이다.

대체로 다음과 같이 나타날것이다.

 # ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up
    # route add 192.168.0.0 netmask 255.255.255.0 eth0
  
대부분의 이더넷 드라이버는 Donald Becker, becker@CESDIS.gsfc.nasa.gov에 의 해 개발되었다.

6.8 FDDI

FDDI의 디바이스 네임은 'fddi0', 'fddi1', 'fddi2' 등이다. 커널에 의해 처음 으로 발견되는 디바이스는 'fddi0'에 할당되고, 나머지는 발견되는 순서대로 할 당된다.

Lawrence V. Stefani, stefani@lkg.dec.com는 Digital Equipment Corporation FDDI EISA 그리고 PCI 카드를 개발했다.

Kernel Compile Options: Network device support ---> [*] FDDI driver support [*] Digital DEFEA and DEFPA adapter support

FDDI 드라이버를 지원하는 커널을 만들고 설치했다면, FDDI 인터페이스의 설정 은 이더넷 인터페이스의 설정과 거의 동일하다. 적절한 FDDI 인터페이스의 이름 을 ifconfig과 route 명령에 명시해야 한다.

6.9 Frame Relay

DLCI 인캡슐레이션 디바이스를 위한 프레임 릴레이의 디바이스 이름은 'dlci00' , 'dlci01' 등이며, FRAD를 위한 것은 'sdla0', 'sdla1'등이다.

프레임 릴레이는 돌발적인 또는 간헐적인 데이커 커뮤니케이션 트래픽에 적용하 기 위해 설계된 새로운 네트워킹 기술이다. Frame Relay Access Device(FRAD)를 사용해 프레임 릴레이 네트워크에 접속할수 있다. 리눅스 프레임 릴레이는 RFC- 1490에 기술된대로 프레임 릴레이 상에서 IP를 지원한다.

Kernel Compile Options: Network device support ---> <*> Frame relay DLCI support (EXPERIMENTAL) (24) Max open DLCI (8) Max DLCI per device <*> SDLA (Sangoma S502/S508) support

Mike McLagan, mike. mclagan@linux.org가 프레임 릴레이의 지원과 설정툴을 개 발했다.

현재 지원되는 유일한 프레임 릴레이는 Sangoam Technology의 S502A, S502E, S5 08이다.

커널의 재설치후에 FRAD와 DLCI를 설정하기 위해서는 ftp.invlogic.com에서 얻 을수 있는 프레임 릴레이 설정툴이 필요하다. <ftp://ftp.invlogic.com/pub/linux/fr/frad-0.15.tgz>. 컴파일과 설치는 매우 수월하나, top 레벨의 Makefile이 없으므로 수동으로 해주어야 한다.

     # cd /usr/src
        # tar xvfz .../frad-0.15.tgz
        # cd frad-0.15
        # for i in common dlci frad; do cd $i; make clean; make; cd ..;done
        # mkdir /etc/frad
        # install -m 644 -o root -g bin/*.sfm /etc/frad
        # install -m 700 -o root -g root frad/fradcfg /sbin
        # install -m 700 -o root -g root dlci/dlcicfg /sbin
  
툴을 설치한뒤에 /etc/frad/router.conf 파일을 만들 필요가 있다. 이 템플릿을 이용할수도 있으며, 이것은 예제 파일의 수정 버전이다.
# /etc/frad/router.conf
  # This is a template configuration for frame relay.
  # All tags are included. The default values are based on the code
  # supplied with the DOS drivers for the Sangoma S502A card.
  #
  # A '#' anywhere in a line constitutes a comment
  # Blanks are ignored (you can indent with tabs too)
  # Unknown [] entries and unknown keys are ignored
  #
[Devices]
  Count=1                 # number of devices to configure
  Dev_1=sdla0             # the name of a device
  #Dev_2=sdla1            # the name of a device
# Specified here, these are applied to all devices, and can be overriden 
for
  # each individual board.
  #
  Access=CPE
  Clock=Internal
  KBaud=64
  Flags=TX
  #
  # MTU=1500              # Maximum transmit IFrame length, default is 4096
  # T391=10               # T391 value    5 - 30, default is 10
  # T392=15               # T392 value    5 - 30, default is 15
  # N391=6                # N391 value    1 - 255, default is 6
  # N392=3                # N392 value    1 - 10, default is 3
  # N393=4                # N393 value    1 - 10, default is 4
# Specified here, these set the defaults for all boards
  # CIRfwd=16             # CIR forward   1 - 64
  # Bc_fwd=16             # Bc forward    1 - 512
  # Be_fwd=0              # Be forward    0 - 511
  # CIRbak=16             # CIR backward  1 - 64
  # Bc_bak=16             # Bc backward   1 - 512
  # Be_bak=0              # Be backward   0 - 511
#
  #
  # Device specific configuration
  #
  #
#
  # The first device is a Sangoma S502E
  #
  [sdla0]
  Type=Sangoma            # Type of the device to configure, currently only
                          # SANGOMA is recognised
  #
  # These keys are specific to the 'Sangoma' type
  #
  # The type of Sangoma board - S502A, S502E, S508
  Board=S502E
  #
  # The name of the test firmware for the Sangoma board
  # Testware=/usr/src/frad-0.10/bin/sdla_tst.502
  #
  # The name of the FR firmware
  # Firmware=/usr/src/frad-0.10/bin/frm_rel.502
  #
  Port=360                # Port for this particular card
  Mem=C8                  # Address of memory window, A0-EE, depending on c
ard
  IRQ=5                   # IRQ number, do not supply for S502A
  DLCIs=1                 # Number of DLCI's attached to this device
  DLCI_1=16               # DLCI #1's number, 16 - 991
  # DLCI_2=17
  # DLCI_3=18
  # DLCI_4=19
  # DLCI_5=20
  #
  # Specified here, these apply to this device only,
  # and override defaults from above
  #
  # Access=CPE            # CPE or NODE, default is CPE
  # Flags=TXIgnore,RXIgnore,BufferFrames,DropAborted,Stats,MCI,AutoDLCI
  # Clock=Internal        # External or Internal, default is Internal
  # Baud=128              # Specified baud rate of attached CSU/DSU
  # MTU=2048              # Maximum transmit IFrame length, default is 4096
  # T391=10               # T391 value    5 - 30, default is 10
  # T392=15               # T392 value    5 - 30, default is 15
  # N391=6                # N391 value    1 - 255, default is 6
  # N392=3                # N392 value    1 - 10, default is 3
  # N393=4                # N393 value    1 - 10, default is 4
#
  # The second device is some other card
  #
  # [sdla1]
  # Type=FancyCard        # Type of the device to configure.
  # Board=                # Type of Sangoma board
  # Key=Value             # values specific to this type of device
#
  # DLCI Default configuration parameters
  # These may be overridden in the DLCI specific configurations
  #
  CIRfwd=64               # CIR forward   1 - 64
  # Bc_fwd=16             # Bc forward    1 - 512
  # Be_fwd=0              # Be forward    0 - 511
  # CIRbak=16             # CIR backward  1 - 64
  # Bc_bak=16             # Bc backward   1 - 512
  # Be_bak=0              # Be backward   0 - 511
#
  # DLCI Configuration
  # These are all optional. The naming convention is
  # [DLCI_D<devicenum>_<DLCI_Num>]
  #
[DLCI_D1_16]
  # IP=
  # Net=
  # Mask=
  # Flags defined by Sangoma: TXIgnore,RXIgnore,BufferFrames
  # DLCIFlags=TXIgnore,RXIgnore,BufferFrames
  # CIRfwd=64
  # Bc_fwd=512
  # Be_fwd=0
  # CIRbak=64
  # Bc_bak=512
  # Be_bak=0
[DLCI_D2_16]
  # IP=
  # Net=
  # Mask=
  # Flags defined by Sangoma: TXIgnore,RXIgnore,BufferFrames
  # DLCIFlags=TXIgnore,RXIgnore,BufferFrames
  # CIRfwd=16
  # Bc_fwd=16
  # Be_fwd=0
  # CIRbak=16
  # Bc_bak=16
  # Be_bak=0
  
/etc/frad/router.conf 파일을 만들었으면, 실제 디바이스를 설정하는 일만 남 았다. 이것은 보통의 네트워크 디바이스 설정보다 조금 복잡하며, DLCI 인캡슐 레이션 디바이스 전에 FRAD 디바이스를 가져와야 함을 기억해야 한다.
 # Configure the frad hardware and the DLCI parameter
    /sbin/fradcfg /etc/frad/router.conf || exit 1
    /sbin/dlcicfg file /etc/frad/router.conf 
    # Bring up the FRAD device
    ifconfig sdla0 up
    #
    # Configure the DLCI encapsulation interface and routing
    ifconfig dlci00 192.168.10.1 pointopoint 192.168.10.2 up
    route add 192.168.10.0 netmask 255.255.255.0 dlci00
    #
    ifconfig dlci01 192.168.11.1 pointopoint 192.168.11.2 up
    route add 192.168.11.0 netmask 255.255.255.0 dlci00
    #
    route add default dev dlci00
    #
 

6.10 IP 어카운팅.

리눅스 커널의 IP 어카운팅 feature는 몇몇 네트워크 사용 데이터를 수집하고 분석할수 있게 해준다. 수집된 데이터는 그것이 마지막으로 리셋된 이후에 몇개 의 패킷과 축적된 몇개의 바이트로 이루어진다. 여러분은 자신의 목적에 맞게 각 figure를 분류하는 다양한 룰을 명시할수 있다.

Kernel Compile Options: Networking options ---> [*] IP: accounting

커널을 컴파일하고 설치한뒤에 IP 어카운팅을 설정하기 위해서는 ipfwadm 명령 을 사용할 필요가 있다. 선택할수 있는 IP 어카운팅의 분류방법은 많이 있다. 나는 사용하기 좋은 간단한 예제를 하나 선택했으며, 더 자세한 정보를 원하면 ipfwadm 맨페이지를 읽어보기 바란다.

시나리오: PPP로 인터넷에 연결된 이더넷 네트워크가 있다. 이더넷 상에는 쪅가 지 서비스를 제공하는 머신이 있고, telnet, rogin, ftp, www 등에 의해 발생하 는 트래픽을 알고싶어 한다.

아마도 다음과 같이 보이는 명령어 셋을 사용할것이다.

    #
       # Flush the accounting rules
       ipfwadm -A -f
       #
       # Add rules for local ethernet segment
       ipfwadm -A in -a -P tcp -D 44.136.8.96/29 20
       ipfwadm -A out -a -P tcp -S 44.136.8.96/29 20
       ipfwadm -A in -a -P tcp -D 44.136.8.96/29 23
       ipfwadm -A out -a -P tcp -S 44.136.8.96/29 23
       ipfwadm -A in -a -P tcp -D 44.136.8.96/29 80
       ipfwadm -A out -a -P tcp -S 44.136.8.96/29 80
       ipfwadm -A in -a -P tcp -D 44.136.8.96/29 513
       ipfwadm -A out -a -P tcp -S 44.136.8.96/29 513
       ipfwadm -A in -a -P tcp -D 44.136.8.96/29
       ipfwadm -A out -a -P tcp -D 44.136.8.96/29
       ipfwadm -A in -a -P udp -D 44.136.8.96/29
       ipfwadm -A out -a -P udp  -D 44.136.8.96/29
       ipfwadm -A in -a -P icmp -D 44.136.8.96/29
       ipfwadm -A out -a -P icmp -D 44.136.8.96/29
       #
       # Rules for default
       ipfwadm -A in -a -P tcp -D 0/0 20
       ipfwadm -A out -a -P tcp -S 0/0 20
       ipfwadm -A in -a -P tcp -D 0/0 23
       ipfwadm -A out -a -P tcp -S 0/0 23
       ipfwadm -A in -a -P tcp -D 0/0 80
       ipfwadm -A out -a -P tcp -S 0/0 80
       ipfwadm -A in -a -P tcp -D 0/0 513
       ipfwadm -A out -a -P tcp -S 0/0 513
       ipfwadm -A in -a -P tcp -D 0/0
       ipfwadm -A out -a -P tcp -D 0/0
       ipfwadm -A in -a -P udp -D 0/0
       ipfwadm -A out -a -P udp  -D 0/0
       ipfwadm -A in -a -P icmp -D 0/0
       ipfwadm -A out -a -P icmp -D 0/0
       #
       # List the rules
       ipfwadm -A -l -n
       #
 
마지막의 명령은 각 어카운팅 룰을 리스팅하고 수집된 토달 정보를 보여준다.

IP 어카운팅을 분석할때 주의해야 할 중요한 점은 매치하는 모든 룰에 대한 토 탈이 증가될것이라는 점인데, 그러므로 다른 figure를 얻기 위해서는 적절한 수 학적 처리를 해야할 필요가 있다. 예를 들어서 얼마나 많은 데이터가 ftp, teln et, rlogin, www의 데이터가 아닌 것인지를 알고 싶다면, 모든 포트에 매치되는 룰에서 개별적인(ftp, telnet, rlogin, www의) 토탈을 빼겠다.

# ipfwadm -A -l -n
  IP accounting rules
   pkts bytes dir prot source               destination          ports
      0     0 in  tcp  0.0.0.0/0            44.136.8.96/29       * -> 20
      0     0 out tcp  44.136.8.96/29       0.0.0.0/0            20 -> *
      0     0 in  tcp  0.0.0.0/0            44.136.8.96/29       * -> 23
      0     0 out tcp  44.136.8.96/29       0.0.0.0/0            23 -> *
     10  1166 in  tcp  0.0.0.0/0            44.136.8.96/29       * -> 80
     10   572 out tcp  44.136.8.96/29       0.0.0.0/0            80 -> *
    242  9777 in  tcp  0.0.0.0/0            44.136.8.96/29       * -> 513
    220 18198 out tcp  44.136.8.96/29       0.0.0.0/0            513 -> *
    252 10943 in  tcp  0.0.0.0/0            44.136.8.96/29       * -> *
    231 18831 out tcp  0.0.0.0/0            44.136.8.96/29       * -> *
      0     0 in  udp  0.0.0.0/0            44.136.8.96/29       * -> *
      0     0 out udp  0.0.0.0/0            44.136.8.96/29       * -> *
      0     0 in  icmp 0.0.0.0/0            44.136.8.96/29       *
      0     0 out icmp 0.0.0.0/0            44.136.8.96/29       *
      0     0 in  tcp  0.0.0.0/0            0.0.0.0/0            * -> 20
      0     0 out tcp  0.0.0.0/0            0.0.0.0/0            20 -> *
      0     0 in  tcp  0.0.0.0/0            0.0.0.0/0            * -> 23
      0     0 out tcp  0.0.0.0/0            0.0.0.0/0            23 -> *
     10  1166 in  tcp  0.0.0.0/0            0.0.0.0/0            * -> 80
     10   572 out tcp  0.0.0.0/0            0.0.0.0/0            80 -> *
    243  9817 in  tcp  0.0.0.0/0            0.0.0.0/0            * -> 513
    221 18259 out tcp  0.0.0.0/0            0.0.0.0/0            513 -> *
    253 10983 in  tcp  0.0.0.0/0            0.0.0.0/0            * -> *
    231 18831 out tcp  0.0.0.0/0            0.0.0.0/0            * -> *
      0     0 in  udp  0.0.0.0/0            0.0.0.0/0            * -> *
      0     0 out udp  0.0.0.0/0            0.0.0.0/0            * -> *
      0     0 in  icmp 0.0.0.0/0            0.0.0.0/0            *
      0     0 out icmp 0.0.0.0/0            0.0.0.0/0            *
  #
 

6.11 IP 알리아싱.

하나의 네트워크에 여러개의 IP 어드레스를 설정할 수 있는 몇가지 응용 프로그 램이 있는데 이것은 꽤 쓸만하다. 인터넷 서비스 제공자는 고객에게 제공하는 w ww이나 ftp에 이 'customized'를 제공한다.

Kernel Compile Options: Networking options ---> .... [*] Network aliasing .... <*> IP: aliasing support

IP 알리아스 기능을 포함하여 커널을 컴파일하고 설치한 뒤의 설정은 매우 간단 하다. 알리아스는 실제 네트워크 디바이스와 연관된 가상 네트워크 디바이스로 추가된다. 간간한 이름짓기 규약은 이 디바이스에 <devname>:<virtual dev num> , 예를들어 eth0:0, ppp0:10의 형태로 적용된다.

예로써, 두개의 서로다른 IP 서브넷을 동시에 지원하는 이더넷 네트워크를 가지 고 있다고 가정하고 두개 모두로의 다이렉트 억세스를 할수있다면 다음과 같이 사용할수 있다.

     #   
        # ifconfig eth0:0 192.168.1.1 netmask 255.255.255.0 up
        # route add -net 192.168.1.0 netmask 255.255.255.0 eth0:0
        #
        # ifconfig eth0:1 192.168.10.1 netmask 255.255.255.0 up
        # route add -net 192.168.10.0 netmask 255.255.255.0 
        #
  
알리아스를 지우려면 그것의 이름뒤에 간단히 '-'를 추가하면 된다.
     # ifconfig eth0:0- 0
  
이 알리아스에 관련된 모든 라우트가 자동으로 지워질것이다.

6.12 IP 파이어월

IP 파이어월과 파이어월 관련 이슈는 firewall-howto에서 깊이 다루어진다. IP 파이어월링은 필터링과 지정된 IP로부터의 데이터그램만 허용하는 등의 방법으 로 허가되지 않은 네트워크 억세스로부터 머신을 보호해준다. 세가지 클래스의 룰이 있는데, incoming filtering, outgoing filtering, forwarding filtering 등이다. Incoming 룰은 네트워크 디바이스로부터 받아들이는 데이터그램에 적용 된다. Outgoing 룰은 네트워크 디바이스에 의해 전송되는 데이터그램에 적용된 다. Filterling 룰은 예를들어 라우팅된 데이터그램과 같이 이 머신을 향하지 않지만 받아들이는 데이터그램에 적용된다.

Kernel Compile Options: Networking options ---> [*] Network firewalls .... [*] IP: forwarding/gatewaying .... [*] IP: firewalling [ ] IP: firewall packet logging

IP 파이어월 룰의 설정은 ipfwadm 명령을 통해서 이루어진다. 이미 언급했다시 피, 보안은 내 전문분야가 아니며 내가 여러분이 사용할수 있는 예제를 제공한 다 하더라도, 보안이 자신에거 중요하다면 여러분 스스로가 연구하고 개발해야 한다.

IP 파이어월을 사용하는 가장 흔한 경우는 허가되지 않은 네트워크 외부로부터 의 억세스를 막기위하여 리눅스머신을 라우터나 파이어월 게이트웨이로 이용하 는 경우일 것이다.

다음의 설정은 Arnt Gulbrandsen, < agulbra@troll.no>의 기고에 근거한 것이다.

아래의 예는 이 다이어그램에 그려진것과 같은 리눅스 파이어월/라우터 머신의 파이어월 설정을 설명하고 있다.

       -                                   -
        \                                  | 172.16.37.0
         \                                 |   /255.255.255.0
          \                 ---------      |
           |  172.16.174.30 | Linux |      |
       NET =================|  f/w  |------|    ..37.19
           |    PPP         | router|      |  --------
          /                 ---------      |--| Mail |
         /                                 |  | /DNS |
        /                                  |  --------
       -                                   -
 
다음의 명령은 보통 rc 파일에 들어있어서 시스템이 부팅될때마다 자동으로 실 행될것이다. 최대한의 보안을 위해서 이것은 네트워크 설정이 끝난뒤에 그러나 네트워크가 완전히 준비되기 전에, (파이어월이 리부팅하는 동안에 누군가가 억 세스 권한을 얻는것을 막기위해서는), 수행되어야 한다.
#!/bin/sh
 
# Flush the 'Forwarding' rules table
 # Change the default policy to 'accept'
 #
 /sbin/ipfwadm -F -f
 /sbin/ipfwadm -F -p accept
 #
 #.. and for 'Incoming'
 #
 /sbin/ipfwadm -I -f
 /sbin/ipfwadm -I -p accept
 
# First off, seal off the PPP interface
 # I'd love to use '-a deny' instead of '-a reject -y' but then it
 # would be impossible to originate connections on that interface too.
 # The -o causes all rejected datagrams to be logged. This trades
 # disk space against knowledge of an attack of configuration error.
 #
 /sbin/ipfwadm -I -a reject -y -o -P tcp -S 0/0 -D 172.16.174.30
 
# Throw away certain kinds of obviously forged packet packets right away.
 # Nothing should come from multicast/anycast/broadcast addresses.
 #
 /sbin/ipfwadm -F -a deny -o -S 224.0/3 -D 172.16.37.0/24
 #
 # and nothing coming from the loopback network should ever be
 # seen on a wire
 /sbin/ipfwadm -F -a deny -o -S 127.0/8 -D 172.16.37.0/24
 
# accept incoming SMTP and DNS connections, but only 
 # to the Mail/Name Server
 #
 /sbin/ipfwadm -F -a accept -P tcp -S 0/0 -D 172.16.37.19 25 53
 #
 # DNS uses UDP as well as TCP, so allow that too
 # for question to our name server
 #
 /sbin/ipfwadm -F -a accept -P udp -S 0/0 -D 172.16.37.19 53
 #
 # but not "answers" coming to dangerous ports like NFS and
 # Larry McVoy's NFS extension. If you run squid, add its port here.
 #
 /sbin/ipfwadm -F -a deny -o -P udp -S 0/0 53 \
        -D 172.16.37.0/24 2049 2050
 
# answers to other user port are okay
 #
 /sbin/ipfwadm-F -a accept -P udp -S 0/0 53 \
        -D 172.16.37.0/24 53 1024:65535
 
# Reject incoming connections to identd
 # We use 'reject' here so that the connecting host is told 
 # straight away not to bother continuing, otherwise we'd experience
 # delays while ident timed out.
 #
 /sbin/ipfwadm -F -a reject -o -P tcp -S 0/0 -D 172.16.37.0/24 113
 
# Accept some common service connections from the 192.168.64 and 
 # 192.168.65 networks, they are friends that we trust.
 #
 /sbin/ipfwadm -F -a accept -P tcp -S 192.168.64.0/23 \
        -D 172.16.37.0/24 20:23
 
# accept and pass thruough anything originating inside 
 #
 /sbin/ipfwadm -F -a accept -P tcp -S 172.16.37.0/24 -D 0/0
 
# deny most other incoming TCP connections, and log them
 # (append 1:1023 if you have problems with ftp not working)
 # 
 /sbin/ipfwadm -F -a deny -o -y - tcp -S 0/0 -D 172.16.37.0/24
 
# ... for UDP too
 #
 /sbin/ipfwadm -F -a deny -o -P udp -S 0/0 -D 172.16.37.0/24
  
훌륭한 파이어월을 설정하는 것은 조금 복잡하다. 이 예는 여러분에게 합리적인 시작점이 될것이다. ipfwadm의 맨페이지는 이 툴을 사용하는 방법에 있어서 도 움을 제공해 줄것이다. 만약 파이어월을 설정하고자 한다면, 믿을만 하다고 생 각하는 소스로 부터 많은 어드바이스를 얻고 네트워크 외부에서 테스크를 해보 기 바란다.

6.13 IPX (AF_IPX)

IPX 프로토콜은 대개 노벨 네트웨어의 로컬 에리어 네트워크 환경에서 활용된 다. 리눅스는 이 프로토콜의 지원을 포함하고 있으며, IPX의 네트워크 엔드포인 트(endpoint) 또는 라우터로 설정될것이다.

Kernel Compile Options: Networking options ---> [*] The IPX protocol [ ] Full internal IPX network

IPX 프로토콜과 NCPFS는 IPX-HOWTO에서 깊이 다루어진다.

6.14 IPv6

여러분이 막 IP 네트워크를 이해하기 시작했다고 생각할때 룰은 변경된다! IPv6 는 인터넷 프로토콜의 버전 6에 대한 간단한 기록이다. IPv6는 인터넷 사회의 할당할 어드레스가 부족하다는 우려를 극복하기 위해서 개발되었다. IPv6 어드 레스는 32byte(128bit)의 길이이다. IPv6는 다른 변경사항을 포함하고 있는데 대개는 간소화에 관한것이고 이것이 IPv4에 비해 IPv6를 다루기 쉽게 만들어 준 다.

리눅스는 2.1.* 커널에 IPv6를 지원하고 있지만 완전한것은 아니다.

신세대의 인터넷 기술을 실험하고 싶다면, 또는 이것이 필요하다면, www.terra. net에서 구할수있는 IPv6-FAQ를 읽어보기 바란다. < www.terra.net/ipv6/>.

나머지는 7월 23일 까지 올립니다. 이 문서에 대한 버그 리포트는 sudoer@nownuri.net으로 해주시기 바랍니다.


다음 이전 차례