출처 : http://www.solanara.net/solanara/hardware


하드웨어 호환 목록(HCL) - 윈디하나의 솔라나라

목차

하드웨어 호환성

솔라리스의 하드웨어 지원

오라클과 후지쯔에서 판매하는 모든 Sparc 및 x86 시스템은 솔라리스를 매우 잘 지원한다. 적어도 이들 시스템에서는 하드웨어와 관련된 이슈가 없다. 아래의 내용은 모두 x86에 해당되는 내용이다.
  • CPU
    • AMD와 Intel CPU 및 32Bit, 64Bit를 잘 지원한다. Via는 지원을 보장하지 않는다.
    • AMD의 PowerNow!, Intel의 Speedstep은 Solaris 10 x86 5/08 부터 지원한다.
    • Sun xVM을 제대로 지원하기 위해서는 AMD 옵테론 리비전 F 이상, VT확장이 지원되는 인텔 CPU가 필요하다. 2008년 여름 이후에 리비전되어 나온 CPU는 모두 이를 지원한다.
  • VGA
    • nVIDIA칩을 사용한 그래픽 카드는 최신 그래픽 카드까지, 3D(OpenGL)까지 잘 지원해준다. nVidia 유닉스 드라이버에서 드라이버를 받을 수 있다. 최신 GPU를 사용하는 경우 솔라리스에 번들된 드라이버보다 좋으니 반드시 설치하자.
    • Intel칩셋을 사용한 IGP는 최신 버전까지 잘 지원해 준다.
    • 2011.09 현재 샌디브릿지CPU에 있는 내장 그래픽 시스템을 지원하지 못한다.
    • ATI칩을 사용한 그래픽 카드는 Radeon HD 이전의 그래픽 카드까지만 잘 지원해준다. Radeon HD 그래픽 카드라면, 화면이 나오는 정도다.
    • 그 이외의 VGA 카드는 화면이 나오는 정도다. (가속기능을 사용 못한다)
  • Storage
    • 표준 ATA및 SATA장치와, Adaptec, LSI Logic, Intel 의 SCSI, SAS, RAID 장치는 (저가형 어댑터를 제외하고) 대부분 지원한다. 벤더 홈페이지에 별도의 드라이버를 등록해 놓고 있다.
    • 솔라리스 10 5/08 이상부터는 Intel ICH6/7/8/9, VIA vt8251의 SATA AHCI와 NCQ를 지원한다. ICH10의 AHCI는 솔라리스 10 9/10부터 지원한다. 솔라리스 10 8/11 부터는 AMD 칩셋을 포함해 대부분의 AHCI 드라이버를 지원한다. 자세한 사항은 ahci(7D)를 읽어보자.
    • 솔라리스는 하드웨어에서 디스크 스케줄링이 지원되어야 성능이 좋아진다. IDE 컨트롤러와 SATA HDD 보다는, AHCI 컨트롤러와 SATA HDD가 훨씬 좋다는 의미다. 물론 SAN이나 SCSI기반 장치를 사용하면 더욱 좋다.
  • NIC
    • Intel과 BroadCom, 3Com, Realtek의 NIC이면 대부분 지원된다. 그렇지만 마더보드에 임베드되어 나오는 것은 간혹 지원되지 않는 경우가 있다.
    • 네트워크 가상화를 위해서는 GLDv3(Generic LAN Driver v3)와 호환되는 NIC가 필요하다. 드라이버 이름이 bge, e1000g, xge, nge, rge이면 지원될 것이다.
      bge: BroadCom 기가비트 이더넷 장치
      e1000g, igb: Intel의 기가비트 이더넷 장치
      xge: Neterion의 10기가비트 이더넷 장치
      nge: nVIDIA의 기가비트 이더넷 장치
      rge: Realtek의 기가비트 이더넷 장치
      이외에도 최근에 나온 솔라리스 설치본에 번들된 드라이버는 대부분 GLDv3를 지원한다. 각각의 드라이버에 대해서는 man페이지를 참고하자.
    • Wi-Fi는 솔라리스 11부터 지원한다. NIC지원만 놓고 본다면 솔라리스 11이 더 많은 장치를 지원한다.
    • 솔라리스에 번들되지 않은 NIC는 Free NIC drivers for Solaris에 방문해보자. 대부분의 마더보드 내장 NIC를 지원해준다.
  • Audio
    • 솔라리스 10 이하에서는 오디오 지원이 거의 전무하다. AC 97, Intel High Definition Audio 호환 사운드카드라면 지원 하는 경우도 있다. 그냥 바이오스에서 끄는 것이 좋다고 생각한다.
    • 솔라리스 10 이하에서 반드시 필요하다면 Open Sound System드라이버를 사용하는 것을 고려해보자.
    • 솔라리스 11부터 Open Sound System 4 가 번들되어있다. 따라서 대부분의 오디오 기기를 지원한다.
  • Printers
    • Lexmark는 자사가 제조한 대부분의 프린터에 대해 솔라리스 프린터 드라이버를 제공하고 있다.
    • Xerox 의 비즈니스 프린터라면 대부분 잘 지원해준다.
    • HP 의 경우 JetDirect 및 PostScript Driver를 이용해 네트워크로 연결할 수 있다. 솔라리스용 JetDirect 드라이버를 HP홈페이지에서 구할 수 있다.
    • 윈도우에서 공유중인 프린터가 PostScript 명령을 해석할 수 있으면 연결할 수 있다.
    • 솔라리스 11부터 CUPS(The Common UNIX Printing System)를 지원한다. 솔라리스 10까지 사용되었던 LP 프린팅 시스템을 대체할 것이다. CUPS는 대부분의 네트워크 프린터에서 지원되기 때문에, 프린터 사용에 문제가 없을 것으로 본다.
  • 서버 제조사별
    • 당연하지만, 오라클(썬 마이크로 시스템즈)에서 판매하는 x86서버는 솔라리스를 지원한다.
    • HP 나 IBM 에서 판매하는 x86서버도 대부분 솔라리스를 지원한다. 벤더에 확인해보라.
    • HP의 경우 Oracle Solaris Supported Matrix에서 각 서버의 지원 사항을 확인할 수 있다.

HCL(Hardware Compatibility List)

Solaris SPARC/x86 에서 호환되는 장치에 대해 Oracle Solaris OS: Hardware Compatibility Lists에 가서 검색해볼 수 있다. 사용자가 직접 올린 코멘트도 볼 수 있다.

Solaris for x86 Device Support (추천)

Solaris on x86 Platforms Device Support에서는 솔라리스 버전및 릴리즈 별로 호환되는 장치의 목록에 대해 볼 수 있다.

시스템의 장치와 솔라리스와의 호환성 알아내기

Oracle Device Detection Tool

Oracle Device Detection Tool페이지에서 Oracle Device Detection Tool(sddtool_23.jnlp)을 다운로드 받는다. 자바로 되어있는 프로그램이라 자바 1.4.2 이상 지원되는 운영체제라면 모두 사용할 수 있다. 현재 사용하고 있는 시스템에서 솔라리스가 지원되는지 지원되지 않는지, 드라이버는 어디서 받을 수 있는지 알려준다.
솔라리스: prtconf -pv > hcl.txt
리눅스: lspci -vv -n > hcl.txt
윈도우: reg query hklm\system\currentcontrolset\enum\pci /s > hcl.txt
와 같은 커맨드를 실행시키면 hcl.txt가 생성된다. 이를 Oracle Device Detection Tool의 [파일 → 가져오기...] 에서 읽으면 아래와 비슷한 결과를 얻을 수 있다.


※ [atge]장치가 지원되지 않는 것으로 나와있으나, 아래의 주를 보면, 서드파티 드라이버를 다운로드 할 수 있는 주소가 나와있다.

PCI ID

※ PCIDatabase.com이나 The PCI ID Repository에 가서 PCI 장치ID값을 입력하면 장치의 제조사와 종류및 이름을 알려 준다. 대부분의 PCI장치는 등록되어있기 때문에, 거의 확실하게 알 수 있다. PCI장치 아이디(벤더ID와 장치ID)는 바이오스에서 부팅시 알려주며, 다음과 같이 알아낼 수 있다.

* 솔라리스 x86, x64
root@wl ~ # /usr/X11/bin/scanpci
...
pci bus 0x0002 cardnum 0x05 function 0x00: vendor 0x10b7 device 0x1700
 3Com Corporation 3c940 10/100/1000Base-T [Marvell]
...
root@wl ~ #
* 리눅스
root@wllinux ~ # /sbin/lspci
...
00:07.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
...
root@wllinux ~ # /sbin/lspci -n
...
00:07.0 0200: 10ec:8139 (rev 10)
...
root@wllinux ~ #
※ 솔라리스x86에서 각각의 PCI장치에 대해 붙어있는 드라이버의 이름을 보려면 아래와 같이 한다.
root@wl ~ # prtconf -D
...
            pci10b7,9055, instance #0 (driver name: elxl)
            pci8086,70, instance #0 (driver name: iprb)
...
root@wl ~ # 

장치보기

  • sysdef

    시스템의 모든 장치(Pseudo장치 포함)에 대해 알려준다. 주로 -d옵션과 같이 사용된다.
    root@wl ~ # sysdef -d
    Node 'i86pc', unit #-1
            Node 'scsi_vhci', unit #0
            Node 'isa', unit #0
                    Node 'i8042', unit #0
                            Node 'keyboard', unit #0
                            Node 'mouse', unit #0
                    Node 'fdc', unit #0
                            Node 'fd', unit #0
                    Node 'lp', unit #0
            Node 'pci', unit #0
                    Node 'pci8086,1237', unit #-1 (no driver)
                    Node 'pci8086,7000', unit #-1 (no driver)
                    Node 'pci-ide', unit #0
                            Node 'ide', unit #0
                                    Node 'cmdk', unit #0
                            Node 'ide', unit #1
                                    Node 'sd', unit #0
                    Node 'display', unit #0
                    Node 'pci8086,1e', unit #0
                    Node 'pci80ee,cafe', unit #0
                    Node 'pci8086,0', unit #-1 (no driver)
                    Node 'pci106b,3f', unit #0
                    Node 'pci8086,7113', unit #-1 (no driver)
                    Node 'pci8086,265c', unit #0
                    Node 'pci1000,8000', unit #0
                            Node 'sd', unit #10
                            Node 'sd', unit #9
            Node 'iscsi', unit #0
            Node 'pseudo', unit #0
                    Node 'zconsnex', unit #1
    ...
                    Node 'llc2', unit #0
            Node 'options', unit #0
            Node 'agpgart', unit #0
            Node 'objmgr', unit #0
            Node 'xsvc', unit #0
            Node 'acpi', unit #-1 (no driver)
            Node 'used-resources', unit #-1 (no driver)
            Node 'cpus', unit #0
                    Node 'cpu', unit #-1 (no driver)
    root@wl ~ #
    
  • prtconf

    시스템 설정 사항을 출력해준다.
    root@wl ~ # prtconf
    System Configuration:  Sun Microsystems  i86pc
    Memory size: 768 Megabytes
    System Peripherals (Software Nodes):
    
    i86pc
        scsi_vhci, instance #0
        isa, instance #0
            i8042, instance #0
                keyboard, instance #0
                mouse, instance #0
            fdc, instance #0
                fd, instance #0
            lp, instance #0
        pci, instance #0
            pci8086,1237 (driver not attached)
            pci8086,7000 (driver not attached)
            pci-ide, instance #0
                ide, instance #0
                    cmdk, instance #0
                ide, instance #1
                    sd, instance #0
            display, instance #0
            pci8086,1e, instance #0
            pci80ee,cafe, instance #0
            pci8086,0 (driver not attached)
            pci106b,3f, instance #0
            pci8086,7113 (driver not attached)
            pci8086,265c, instance #0
            pci1000,8000, instance #0
                sd, instance #10
                sd, instance #9
        iscsi, instance #0
        pseudo, instance #0
        options, instance #0
        agpgart, instance #0
        objmgr, instance #0
        xsvc, instance #0
        acpi (driver not attached)
        used-resources (driver not attached)
        cpus, instance #0
            cpu (driver not attached)
    root@wl ~ #
    
  • prtdiag

    시스템을 분석해 출력한다. x86보다는 스팍에서, 대형 서버에서 더 잘 출력해준다.
    root@wl ~ # prtdiag -v
    시스템 구성: Sun Microsystems  sun4u Sun Ultra 45 Workstation
    시스템 클록 주파수: 200 MHz
    메모리 크기: 1GB
    
    ==================================== CPUs ====================================
                   E$          CPU                    CPU
    CPU  Freq      Size        Implementation         Mask    Status      Location
    ---  --------  ----------  ---------------------  -----   ------      --------
    0    1600 MHz  1MB         SUNW,UltraSPARC-IIIi    3.4    on-line     MB/0
    
    ================================= IO 장치 =================================
    
    ============================== 메모리 구성 ==============================
    세그먼트 테이블:
    -----------------------------------------------------------------------
    기본 주소       크기       인터리브 계수 포함
    -----------------------------------------------------------------------
    0x200000000        1GB               1           BankIDs 0
    
    뱅크 테이블:
    -----------------------------------------------------------
               물리적 위치
    ID       ControllerID  GroupID   크기       인터리브 방식
    -----------------------------------------------------------
    0        0             1         1GB             0
    
    메모리 모듈 그룹:
    --------------------------------------------------
    ControllerID   GroupID  Labels         Status
    --------------------------------------------------
    0              1        MB/DIMM2
    0              1        MB/DIMM0
    
    =============================== usb 장치 ===============================
    
    Name          Port#
    ------------  -----
    mouse           1
    keyboard        2
    
    =============================== usb 장치 ===============================
    
    Name          Port#
    ------------  -----
    hub             7
    
    =============================== 환경 상태 ===============================
    팬 상태:
    -------------------------------------------
    Location             Sensor          Status
    -------------------------------------------
    F0                   cpu0-fan        okay
    F2                   pci-fan         okay
    F3                   system-fan3     okay
    F4                   system-fan4     okay
    
    온도 센서:
    -----------------------------------------
    Location       Sensor              Status
    -----------------------------------------
    MB/0           cpu0-sensor         okay
    MB             mb-sensor           okay
    MB             adt7462-sensor      okay
    MB             lm95221-sensor      okay
    MB             fire-sensor         okay
    MB             lsi1064-sensor      okay
    FIOB           front_panel-sensor  okay
    MB             psu-sensor          okay
    
    ================================= HW 개정 =================================
    ASIC Revisions:
    -------------------------------------------------------------------
    Path                   Device           Status             Revision
    -------------------------------------------------------------------
    /pci@1e,600000         pciex108e,80f0   okay               3
    /pci@1f,700000         pciex108e,80f0   okay               3
    
    시스템 PROM 개정:
    ----------------------
    OBP 4.21.6 2006/03/31 15:02 Sun Ultra 45 Workstation
    POST 4.21.6 2006/03/31 15:24
    root@wl ~ #
    
  • dmidecode

    x86 시스템의 DMI영역을 디코드해 보여주는 유틸리티다. 리눅스 배포판에는 기본으로 포함되어있지만, 솔라리스에서도 설치해 사용할 수 있다. dmidecode
    root@wl ~/src # wget http://download.savannah.gnu.org/releases/dmidecode/dmidecode-2.11.tar.bz2
    root@wl ~/src # tar xvfj dmidecode-2.11.tar.bz2
    root@wl ~/src # cd dmidecode-2.11
    root@wl ~/src/dmidecode-2.11 # vi Makefile
    CC      = /usr/sfw/bin/gcc
    root@wl ~/src/dmidecode-2.11 # /usr/sfw/bin/gmake
    root@wl ~/src/dmidecode-2.11 # cp dmidecode /usr/local/bin
    root@wl ~/src/dmidecode-2.11 # dmidecode
    # dmidecode 2.11
    SMBIOS 2.4 present.
    60 structures occupying 1782 bytes.
    Table at 0x000F0000.
    
    Handle 0x0000, DMI type 0, 24 bytes
    BIOS Information
            Vendor: Phoenix Technologies, LTD
            Version: ASUS M2A-VM HDMI ACPI BIOS Revision 5001
            Release Date: 02/04/2010
            Address: 0xE0000
            Runtime Size: 128 kB
            ROM Size: 1024 kB
    
    ...
    
    End Of Table
    

  • CPU 마이크로 코드 업데이트

    마이크로 업데이트
    특별한 문제가 없다면 굳이 마이크로 코드를 업데이트 할 필요 없다. 솔라리스에서도 기본적으로 제공해준다.
    ※ 인텔 프로세서 마이크로 코드 데이터 파일 업데이트
    우선 인텔 다운로드 사이트에서 Processor Microcode Data File로 검색해 최신의 마이크로 코드 파일(microcode-*.tgz)을 다운로드 받는다.
    root@wl ~ # tar xvfz microcode-20110915.tgz
    root@wl ~ # mv microcode.dat /platform/i86pc/ucode/intel-ucode.txt
    root@wl ~ # ucodeadm -i /platform/i86pc/ucode/intel-ucode.txt
    root@wl ~ # ucodeadm -u /platform/i86pc/ucode/intel-ucode.txt
    root@wl ~ # reboot
    
    ※ AMD 프로세서 마이크로 코드 데이터 파일 업데이트
    우선 AMD 다운로드 사이트(OSRC: Microcode)에서 최신의 마이크로 코드 파일(amd-ucode-latest.tar)을 받는다.
    root@wl ~ # tar xvf amd-ucode-latest.tar
    root@wl ~ # cd amd-ucode-2011-01-11
    root@wl ~/amd-ucode-2011-01-11 # mv microcode_amd.bin /platform/i86pc/ucode/amd-ucode.bin
    root@wl ~/amd-ucode-2011-01-11 # ucodeadm -i /platform/i86pc/ucode/amd-ucode.bin
    root@wl ~/amd-ucode-2011-01-11 # ucodeadm -u /platform/i86pc/ucode/amd-ucode.bin
    root@wl ~/amd-ucode-2011-01-11 # reboot
    
  • IRQ 충돌 확인

    부팅 도중 아래와 같은 메시지가 나오는 경우가 있다.
    root@wl ~ # cat /var/adm/messages
    ...
    Nov 14 xx:xx:xx wl unix: [ID 954099 kern.info] NOTICE: IRQ19 is being shared by drivers with different interrupt levels.
    Nov 14 xx:xx:xx wl This may result in reduced system performance.
    ...
    
    IRQ가 충돌된다는 의미다. 그리고 시스템 성능을 낮추는 결과를 가져온다. 필요 없는 장치를 제거하거나, BIOS에서 IRQ를 수동으로 조절해 해결할 수 있다.

    솔라리스의 IRQ 할당 내역은 아래와 같이 확인할 수 있다. 솔라리스의 APIC테이블을 조회해서 알아온다.
    root@wl ~ # mdb -k
    Loading modules: [ ... ]
    > ::interrupts
    IRQ  Vector IPL Bus   Type  CPU Share APIC/INT# ISR(s)
    ...
    19   0x83   9   PCI   Fixed 0   2     0x0/0x13  uhci_intr, ata_intr
    ...
    > Ctrl+D
    root@wl ~ # 
    
    uhci(7D)는 USB 1.x 컨트롤러 드라이버고, ata(7D)는 ATA/SATA 하드디스크 드라이버의 이름이다. uhci, ata 와같은 단어의 의미는 man페이지를 참조하면 된다. 만약 이런 시스템에서 USB장치와 하드디스크를 동시에 사용하면 시스템 성능이 느려질 수 있다. IRQ 충돌 해결은 서버의 바이오스에서 해결해 줘야 한다. IRQ를 강제로 할당할 수 있는 마더보드라면 시도해볼 수 있다.

    SPARC 에서는 이런 문제가 없다.

링크

HCL 관련

서드파티 드라이버 관련

Twitter RSS IconTexto 올바른 XHTML 1.0 Transitional 입니다 올바른 CSS입니다!

리눅스 iptables 사용법:
iptables는 리눅스를 설치하면 보통 기본적으로 설치되므로 
설치방법은 따로 설명하지 않으며 예제 위주로 간단히 사용법을 알아 보겠습니다.
아래 명령어는 모두 root권한으로 실행해야 됨을 미리 알려 드립니다.


1. 리눅스에서 부팅시 자동으로 iptables 서비스 시작하기:
  아래 2가지 방법 중에 하나로 보통 서비스를 자동실행하도록 등록한다.

1) 쉘창에서 3, 5 모드에서 재부팅시 자동으로 iptables 서비스가 시작되도록 하는 명령어

# chkconfig --level 35 iptables on 
--> 3: multi console 모드 , 5: X윈도우즈 모드 


2) ntsysv 에서 iptalbes 서비스 체크

# ntsysv


2. 먼저 iptables 의 옵션은 아래와 같다.
iptables 에는 3가지 chain 이 존재: INPUT, OUTPUT, FORWARD


1) 필터링 사슬 전체 조작 옵션

-N : 새로운 사슬 만들기
-L : 사슬의 규칙을 보여주기
-X : 비어 있는 사슬을 없애기
-P : 사슬의 규칙을 바꾸기
-F : 사슬에 있는 모든규칙을 지우기


2) 사슬의 규칙을 조작하는 옵션

-A : 사슬에 새로운 규칙을 추가하기(맨아래에 추가됨)
-I : 사슬에 규칙을 삽입하기(맨앞쪽에 삽입됨)
-R : 사슬에 있는 규칙을 다른 규칙과 교환하기
-D : 사슬에 있는 규칙을 없애기


3) 규칙을 정의하는데 필요한 하위옵션

-s : 출발지 주소
-d : 목적지 주소
--sport : 출발지(source) 포트번호
--dport : 목적지 포트번호
-p : 프로토콜(tcp, udp, icmp ..)
-i : 패킷이 들어오는 네트워크 인터페이스(inbound interface)
-o : 패킷이 나가는
-f : 분절된(fragment) packet
-j : 규칙을 지정(jump)


3. 기본정책을 ACCEPT로 설정하는 법:

# iptables -P INPUT ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -P FORWARD ACCEPT


4. 현재 자신의 방화벽 규칙을 볼 수 있는 명령:

# iptables --list 또는 iptables -L
처음으로 명령을 실행하면 아래와 같이 아무 정책도 설정되어 있지 않는 것을 볼 수 있다.


# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination        

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination        

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination        

Chain RH-Firewall-1-INPUT (0 references)


5. 규칙 추가 후에 저장하기 :

현재 규칙을 저장하는 명령어는 아래와 같다.
# /etc/rc.d/init.d/iptables save  
-> /etc/sysconfig/iptables 에 저장됨
(솔라리스의 경우 /etc/ipf/ipf.conf)

위 명령어로 저장후에 실제 저장된 파일을 확인해 보면 아래와 같이 아무 설정이 안된것을 알 수 있다.


# vi /etc/sysconfig/iptables
# Generated by iptables-save v1.3.5 on Thu Jun 25 18:25:02 2009
*filter
:INPUT ACCEPT [11:764]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [320:65885]
:RH-Firewall-1-INPUT - [0:0]
COMMIT
# Completed on Thu Jun 25 18:25:02 2009


이제 간단한 규칙을 추가해 보자. 
예를 들어 ip= 192.168.0.111 를 입력단에서 패킷을 drop하는 규칙을 추가하고 현재 정책을 확인한다.


# iptables -A INPUT -s 192.168.0.111 -j DROP
# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       all  --  192.168.0.111       anywhere           

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination        

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination        

Chain RH-Firewall-1-INPUT (0 references)

이제 저장을 한 후에 저장된 파일을 확인해 보면 아래와 같이 규칙이 저장되어 있는것을 볼 수 있다.


# /etc/rc.d/init.d/iptables save 
# vi /etc/sysconfig/iptables
# Generated by iptables-save v1.3.5 on Mon Dec  7 14:55:45 2009
*filter
:INPUT ACCEPT [6561:820283]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [5984:1470873]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -s 192.168.0.111 -j DROP  <--- 이부분이 새로 추가한 규칙
COMMIT
# Completed on Mon Dec  7 14:55:45 2009


6. 현재 iptables 규칙을 초기화 하기:

# iptables -F
위 명령어를 실행하고 정책을 보면 아래와 같이 초기화 되어 있는 것을 알 수 있다


# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination        

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination        

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination        

Chain RH-Firewall-1-INPUT (0 references)


그러나 실제 저장되어 있는 내용을 보면 아래와 같이 초기화가 되어 있지 않는 것을 볼 수 있다.
# vi /etc/sysconfig/iptables
# Generated by iptables-save v1.3.5 on Mon Dec  7 14:55:45 2009
*filter
:INPUT ACCEPT [6561:820283]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [5984:1470873]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -s 192.168.0.111 -j DROP  <--- 이부분이 새로 추가한 규칙
COMMIT
# Completed on Mon Dec  7 14:55:45 2009


즉, 초기화 명령어는 현재상태에만 적용되며, 
iptables 서비스가 재시작되거나 서버가 리부팅되면 /etc/sysconfig/iptables 에 저장되었던
규칙이 다시 적용된다는 것을 알 수 있다.


7. 정책을 빠르게 수정하여 적용하는 법 :


 6 에서와 같이 정책을 초기화 하고 서비스를 재시작해야 하는 방법은 상당히 비효율적인것을 알 수 있다.
따라서 현재 적용되는 정책을 특정파일(날짜별)로 저장해서 수정사항이 있다면
바로 그 저장된 파일을 수정한후 바로 정책에 적용하는 방법은 아래와 같다.


1) 현재 적용되고 있는 정책을 읽기 가능한 텍스트파일 형태로 저장하는 명령어는 아래와 같다.


# iptables-save > /root/iptable_091207.save

확인해 보면 똑같이 저장되어 있는것을 볼 수 있다. 
# cat  /root/iptable_091207.save
# Generated by iptables-save v1.3.5 on Mon Dec  7 14:55:45 2009
*filter
:INPUT ACCEPT [6561:820283]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [5984:1470873]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -s 192.168.0.111 -j DROP  <--- 이부분이 새로 추가한 규칙
COMMIT
# Completed on Mon Dec  7 14:55:45 2009

2) 이제 저장되어 있는 iptables 파일을 바로 편집기로 수정 한후 저장한다.
# vi /root/iptable_091207.save
# Generated by iptables-save v1.3.5 on Mon Dec  7 14:55:45 2009
*filter
:INPUT ACCEPT [6561:820283]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [5984:1470873]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -s 192.168.0.199 -j DROP  <--- 편집기에서 111 -> 199 로 변경
-A INPUT -s 222.222.222.222 -j DROP <--- 편집기에서 새로 정책 추가
COMMIT
# Completed on Mon Dec  7 14:55:45 2009

3) 저장된 정책을 바로 적용하는 명령어는 다음과 같다.
# cat /root/iptable_091207.save | iptables-restore

확인해 보면 편집기로 수정했던 부분이 아래와 같이 바로 iptables 정책이 적용되어 있는 것을 알 수 있다
# iptables -L
# Generated by iptables-save v1.3.5 on Mon Dec  7 14:55:45 2009
*filter
:INPUT ACCEPT [6561:820283]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [5984:1470873]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -s 192.168.0.199 -j DROP  <--- 편집기에서 111 -> 199 로 변경했던 부분
-A INPUT -s 222.222.222.222 -j DROP <--- 편집기에서 새로 정책 추가했던 부분
COMMIT
# Completed on Mon Dec  7 14:55:45 2009

8. iptables 사용예 :
마지막으로 사용예를 몇개 알아보면 아래와 같다.

예1) 소스 ip가 192.168.0.111 인 접속의 모든 접속 포트를 막아라.

# iptables -A INPUT -s 192.168.0.111 -j DROP


예2) INPUT 사슬에 출발지 주소가 127.0.0.1(-s127.0.0.1) 인 icmp 프로토콜(-p icmp) 패킷을 거부(-j DROP)하는 정책을 추가(-A)하라
# iptables -A INPUT -p icmp -s 127.0.0.1 -j DROP


예3) INPUT 사슬에 목적지 포트가 23번(--dport23)인 tcp 프로토콜(-p tcp) 패킷을 거부하는(-j DROP)규칙을
추가(-A) 하라.
# iptables -A INPUT -p tcp --dport 23 -j DROP


예4) INPUT 사슬에 목적지 포트 번호가 80번(--dport 80)인 tcp 프로토콜(-p tcp)패킷을 받아들이는(-j ACCEPT) 규칙을 추가(-A) 하라
# iptables -A INPUT -p tcp --dport 80 -j ACCEPT


예5) INPUT 사슬에 목적지 포트번호가 1023번 보다 작은 모든 포트(--dport :1023)인 tcp프로토콜(-p tcp)패킷을 거부하는(-j DROP)규칙을 추가(-A)하라
# iptables -A INPUT -p tcp --dport :1023 -j DROP


예6) ftp포트를 열어라
# iptables -I INPUT -p tcp --dport 21 -j ACCEPT


예7) imap 서비스를 방화벽에서 열어라
# iptables -I INPUT -s 192.168.0.0/255.255.255.0 -p udp --dport 143 -j ACCEPT


예8) 웹서버 방화벽 열어라
# iptables -I INPUT -p tcp --dport 80 -j ACCEPT


예9) 웹서버 포트 80 -> 8880으로 교체하라( 웹서비스 포트 변경시 /etc/services 에서도 변경 해줘야 함)
# iptables -R INPUT 2 -p tcp --dport 8880 -j ACCEPT


예10) domain-access_log 파일에 있는 모든 ip의 모든 접속 포트를 막아라(DOS공격 방어시 사용)
# cat domain-access_log |awk '{print $1}'|sort |uniq |awk '{print "iptables -A INPUT -s "$1" -j DROP"}'|/bin/bash 

                                                                                        by 블루웹 호스팅사업부 유희주

'리눅스 서버에 대해서 > 리눅스 팁들' 카테고리의 다른 글

vi 대신 이클립스로 소스 수정하기  (0) 2013.09.20
vimrc 설정  (0) 2013.09.20
Linux System 정보 보기 (BIOS정보)  (0) 2013.04.19
크론탭  (0) 2013.02.28
메모리 관리  (0) 2013.02.17

리눅스에서 시스템 정보(하드웨어, 메모리, 현재 하드웨어 설정 사항) 등을 알아보려고 할때 시스템을 재 부팅 하거나 , 또는 시스템을 분해해서 봐야 할때가 있습니다. 이때 가장 편리하게 보는 방법이 dmidecode 입니다. dmidecode 는 BIOS의 시스템 정보를 볼수 있도록 해주는 프로그램입니다. 

간단하게 root상태에서 dmidecode를 실행 시켜 주면 깔끔하게 볼 수 있습니다.
표시 해주는 정보는 아래와 같습니다. 

BIOS Information : BIOS 설정 상태 정보입니다.
System Information : 시스템 정보입니다. 메인보드 모델 및 제조사 등의 정보를 출력합니다.
Base Board Information : 메인보드의 제조사 및 BIOS, S/N등을 표시합니다.
Chassis Information : 시스템 구조 정보입니다. 
Processor Information : 시스템 프로세서 정보입니다.
Cache Information : 프로세서 캐시 에 대한 정보입니다.
Memory Controller Information : 메모리 컨트롤러 정보입니다.
Memory Module Information : 메모리 모듈 정보입니다.
Port Connector Information : 시스템 포트 정보입니다.
System Slot Information : 확장 슬롯 정보입니다.
BIOS Language Information : BIOS 언어 정보입니다.
Physical Memory Array : 물리적 (하드웨어) 메모리 정보입니다. 
Memory Device : 메모리 모듈 정보입니다.
 

아래와 같은 상세 정보를 화면에 출력을 해줍니다. 

화면에 선택된 특정 정보를 보기 위해서는 -t옵션을 지정하여 원하는 정보만 확인 가능합니다. 
dmidecode -t [키워드]
  bios : BIOS정보
  system : System 정보
  baseboard : Mainboard 정보
  chassis : 구조 정보
  processor : 프로세서 정보
  memory : 메모리 정보
  cache : 캐시 정보
  connector : 포트 정보
  slot : 슬롯 정보

위와 같이 시스템 정보를 손쉽게 볼 수 있습니다. ^^

'리눅스 서버에 대해서 > 리눅스 팁들' 카테고리의 다른 글

vimrc 설정  (0) 2013.09.20
리눅스 iptables 사용법  (0) 2013.04.22
크론탭  (0) 2013.02.28
메모리 관리  (0) 2013.02.17
ptmalloc2 에 대한....  (0) 2013.02.17

로그를 취합해서 메일을 그냥 전송하는 스크립트를 짜서 테스트를 할때는 이상없이 

문자가 가지만, 간혹 att00001.bin 으로 본문 텍스트가 씹혀서 가는 경우가 있습니다.


어차피 outlook에서는 이녀석을 누르면 텍스트를 보여주니까 문제는 없지만...


그래도.. 잘못된건 고쳐야 하므로

구글링을 하던중 아래와 같으 것을 발견 하였습니다.


그러니까... 문자열 문제... ?


출처 : http://superuser.com/questions/309530/prevent-nail-from-attaching-my-message-as-a-bin-file



When I pipe a very long change log into nail, I receive a blank email with a .bin attachment namedATT00001..bin in Outlook. The file is 36KB and contains the expected text but double spaced (presumably something to do with line endings). If the messages are brief, this doesn't happen.

How do I prevent Nail from converting my message to an attachment?

User-Agent: nail 11.25 7/29/05
MIME-Version: 1.0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
share|improve this question

I have had this same problem with the son of nail (heirloom mailx) on a Redhat ES 6.1. The problem in the end boiled down to the file not being an ascii, unix standard file (that is LF-only).

I solved this problem by removing the \r characters from the file before sending the mail.

cat logfile | sed 's/\r//' > logfile.new

share|improve this answer
I've long since moved on from the Outlook environment, but imagined it would be something like this given that MS 
is involved. Thanks. – Matt Joiner Jan 24 at 23:28




I have tested /usr/platform/`uname -m`/sbin/prtdiag -v command with two solaris mahcine. Here below i give the output 

Machine 1 :
uname -a
SunOS nms-t1000 5.10 Generic_127127-11 sun4v sparc SUNW,SPARC-Enterprise-T1000

/usr/platform/`uname -m`/sbin/prtdiag -v

System Configuration: Sun Microsystems sun4v SPARC Enterprise T1000
System clock frequency: 200 MHz 
Memory size: 8184 Megabytes 
================================ Virtual CPUs ================================
CPU ID Frequency Implementation Status
------ --------- ---------------------- -------
0 1000 MHz SUNW,UltraSPARC-T1 on-line 
1 1000 MHz SUNW,UltraSPARC-T1 on-line 
2 1000 MHz SUNW,UltraSPARC-T1 on-line 
3 1000 MHz SUNW,UltraSPARC-T1 on-line 
......

출처 : http://www.unix.com/solaris/144405-how-get-solaris-system-information.html



그러니까 결론... prtdiag -v 를 하면 됨!

+ Recent posts