9. 도서관/__다. UNIX

[Solaris_Basic] 솔라리스 플랫폼에서 네트워크 설정

행복 금융 2008. 6. 18.




참조 : http://kr.sun.com/developers/solaris/techdocs/nic_on_solaris.html

이 문서의 목적

이 글을 읽고 난 후에 커맨드 라인 인터페이스를 통해서 어떻게 네트워크 인터페이스를 설정하는지에 대해 확실한 이해를 가질 수 있을 것 입니다. 또한 이 문서는 몇가지 문제 해결 힌트도 포함 하고 있습니다. 단 하드웨어에 대한 부분은 다루지 않습니다.

요구사항

이 글을 완벽히 이해하기 위해서는 솔라리스에 대한 견고한 기반 지식이 필요 합니다. 적어도 TCP/IP 나 서브넷 마스킹 같은 네트워크 기본 지식은 가지고 있어야 합니다. 이 글에 있는 내용을 실행 하기 위해서 시스템 파일들을 고치거나 생성할 필요가 있고 부트프로세스에 관한 이해(부트 스크립트 같은)와 루트 권한이 필수 입니다.

배경 지식

가장 기본적인 형태로서 네트워크는 두개의 컴퓨터가 각각을 연결해서 어떠한 협동 작업을 수행 하는 것이라고 볼 수 있습니다. 이러한 협동 작업은 간단한 파일 전송에서 부터 복잡한 분산 컴퓨팅, 클러스터링 까지 다양 합니다.

네트워크에는 두가지 기본 요소가 있습니다: 물리적인 장치와 네트워크 프로토콜. 물리적인 장치는 여러 컴퓨터를 어떻게 연결 시킬지 그리고 어떻게 사용할 것인지에 따라 다양하게 존재 합니다. 이러한 방법은 다음과 같은 방법을 포함합니다.:

  • 토큰 링 -- IBM에 의해 개발됨. 이 네트워크 타입은 각 컴퓨터들이 마치 원처럼 구조적으로 배열되 있는 구조 입니다.
  • 10Base2 (동축케이블) -- 각 컴퓨터가 동축케이블과 터미네이터를 이용하여 각 체인의 끝단에 서로 연결 됩니다.
  • 10(0)BaseT -- 사무실/가정에서 사용되는 표준 네트워크 기술로써 쌍으로 꼬인 케이블을 사용합니다. 허브/스위치가 여러개의 컴퓨터를 연결 할 수 있도록 해줍니다. 본래 10Mb/sec 로 동작했지만 지금은 100Mb/sec 이상으로 동작합니다.
  • 광케이블 (기가비트) -- 쌍으로 꼬인 케이블 대신 광 케이블을 이용하여 데이타를 전송합니다. 스피드는 1000Mb/sec이지만 케이블을 가설하는데 비용이 많이 듭니다.
  • Wireless 802.11a - 산업적으로 많이 쓰이는 무선 기술 입니다. 54Mb/sec로 동작할 수 있지만 거리의 제약이 있습니다.
  • Wireless 802.11b -- 현재 사무실/가정에서 쓰이는 표준 기술입니다. 약 10Mb/sec로 동작합니다.
  • Wireless 802.11g -- 802.11 의 스피드와 802.11b의 거리를 결합시켰습니다. 802.11a, 802.11b와 호환이 가능합니다.

두 네트워크가 동일한 물리적 장치를 사용하더라도 서로 각각 완전히 다른 통신 방법이나 프로토콜을 사용할 수 있습니다. 근래의 네트워크에서 사용되는 프로토콜들은 다음과 같습니다:

  • TCP/IP -- 인터넷 표준. 각 NIC는 IP 주소와 서브넷 마스크가 할당됩니다. 어떠한 머신이 로컬 네트워크에 있는지 그리고 어떠한 트래픽이 라우터를 통해 나가게 될지 결정합니다.
  • IPX/SPX -- Novell에서 개발된 브로드캐스트 프로토콜 입니다. 각 NIC는 특수한 IPX 네트워크 주소가 할당됩니다.
  • AppleTalk -- 애플이 저작권을 가지고 있는 프로토콜입니다. 각 NIC에 네트워크 넘버, 노드 넘버, 소켓 넘버가 할당됩니다. TCP/IP의 설정 및 라우팅 기능과 비슷합니다.

하드웨서 설치 검증

시작하기 전에 우리는 기존에 네트워크가 설정되 있는 시스템에 한개의 NIC를 추가 하는 것을 가정합니다. 새로운 하드웨어를 설치 하기 전에 기존의 설정을 prtconf -vD 명령을 통해 저장합니다. 이 명령에 대한 출력은 큰 시스템에서 좀 더 길어질 것이므로 prtconf 의 출력을 파일로 저장 하는것이 좋습니다.

물리적으로 새로운 하드웨어를 인스톨한 다음 시스템을 OK 프롬프트 에서 -r 옵션으로 부팅 시킵니다. 이 명령은 시스템이 새로운 하드웨어를 검색 하고 그에 따라 디바이스 드라이버 디렉토리를 자동으로 빌드 하도록 해줍니다. 모든 작업을 완료 한 후에 prtconf -vD 를 다시 한번 실행 시켜서 그전에 실행 결과와 비교해 보도록 합니다. 만약 새로운 장치가 나타나지 않았다면 디바이스의 메뉴얼을 참고해서 다른 특별한 드라이버 혹은 작업이 필요 한지 살펴 봅니다. 시스템에 따라 그리고 어떠한 카드가 설치 됐는지에 따라 다음과 같은 출력을 보게 될 것입니다:

        SUNW,hme, instance #0 (driver name: hme)
Register Specifications:
Bus Type=0xe, Address=0x8c00000, Size=0x108
Bus Type=0xe, Address=0x8c02000, Size=0x2000
Bus Type=0xe, Address=0x8c04000, Size=0x2000
Bus Type=0xe, Address=0x8c06000, Size=0x2000
Bus Type=0xe, Address=0x8c07000, Size=0x20
SUNW,hme, instance #1 (driver name: hme)
Register Specifications:
Bus Type=0x0, Address=0x8c00000, Size=0x108
Bus Type=0x0, Address=0x8c02000, Size=0x2000
Bus Type=0x0, Address=0x8c04000, Size=0x2000
Bus Type=0x0, Address=0x8c06000, Size=0x2000
Bus Type=0x0, Address=0x8c07000, Size=0x20

위의 예제는 Ultra 1 워크스테이션에 두번째 100-Mb NIC 카ㅡ를 SBus 카드에 설치 했을때 나온 출력입니다. NIC의 드라이버 이름은 장치 넘버의 요약입니다.(그 드라이버를 사용하는 0부터 시작되는 연속된 숫자) 이전의 prtconf 출력을 통해 우리가 사용하는 디바이스는 시스템에 hme0 그리고 hme1으로 나타납니다. 만약 어떠한 드라이버가 하드웨어에 관계되있는지 잘 모르겠으면 NIC의 카드 메뉴얼을 참고하시기 바랍니다.

ifconfig -a 의 결과는 현재 네트워크 디바이스의 상태를 보여줍니다:

lo0: flags=1000849 mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
hme0: flags=1000843 mtu 1500 index 2
inet 192.168.1.100 netmask ffffff00 broadcast 192.168.1.255
ether

기본 내장된 NIC (instance #0) 는 이전에 이미 설정 되었습니다. 그리고 lo0 은 로컬 루프백 어드레스의 인스턴스 입니다. hme1 가 나타나지 않았으므로 디바이스가 아직 초기화 되고 설정되지 않았음을 의미합니다.

영속적인 IPv4 설정

시스템이 부팅하면서 NIC를 설정했기 때문에 첫번째 단계는 IP 주소와 서브넷 마스크를 얻어 오는 것 부터 시작됩니다. 우리의 예에서 우리는 두번째 NIC를 원래의 NIC의 IP 범위와 다른 것으로 지정할 것입니다. 첫번째 NIC는 192.168.1.x 네트워크에 존재 합니다. 그러므로 우리는 새로운 NIC를 192.168.2.x 네트워크로 집어 넣을 것입니다. 두 네트워크 모두 255.255.255.0의 서브넷 마스크안에 존재 할 것입니다. 주의: 항상 지정한 IP어드레스가 다른 머신에 의해 사용되지 않음을 확인해야 합니다.; 그렇게 하기 위해서는 이미 네트워크가 설정된 다른 머신에서 ping 을 이용하여 확인 합니다.

다음 단계로 /etc/hosts 파일에 다음과 같이 우리의 새로운 카드를 추가해줍니다:

192.168.2.100		host2.mydomain.com		host2

이제 /etc 디렉토리에 hostname 파일을 새로 생성합니다. 예를 들어 첫번째 NIC 파일은 /etc/hostname.hme0.입니다. 우리의 새로운 디바이스인 hme1/etc/hostname.hme1 파일을 필요로 할 것입니다. 이 파일안에는 IP에 관련된 호스트 이름을 집어 넣을 것입니다. (/etc/hosts file 파일의 내용 대로). 그것은 반드시 /etc/hosts 파일에 첫번째 이름이 되어야 합니다. 우리의 시나리오에서 /etc/hostname.hme1 는 다음과 같은 내용을 포함해야 합니다:

host2.mydomain.com

다음 우리는 /etc/netmasks 파일을 우리의 네트워크에 맞게 수정합니다:

192.168.2.0	255.255.255.0

시스템을 재부팅 하면 새로운 네트워크 카드는 새로운 네트워크에 적당한 서브넷 마스크가 설정될 것입니다. ifconfig -a 를 통해 다시한번 확인 할 수 있습니다:

lo0: flags=1000849 mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
hme0: flags=1000843 mtu 1500 index 2
inet 192.168.1.100 netmask ffffff00 broadcast 192.168.1.255
ether
hme1: flags=1000843 mtu 1500 index 3
inet 192.168.2.100 netmask ffffff00 broadcast 192.168.2.255
ether

비 영속적인 IPv4 설정
재부팅을 하지 않고 NIC를 설정하기 위해(하드웨어는 이미 인스톨되어 있다고 가정), 먼저 네트워크 카드의 초기화가 필요합니다:

	ifconfig hme1 plumb

다음 디바이스를 설정합니다:

	ifconfig hme1 192.168.2.100 netmask 255.255.255.0

이제 NIC를 online 상태로 올립니다.

	ifconfig hme1 up

이제 네트워크 카드 동작하고 있습니다. 알아둘 점은 파일 수정을 해주지 않았기 때문에 이 설정은 리부팅 후에는 다시 설정 되어야 합니다.

IPv6 설정

IPv6과 관련된 대부분의 것들은 자동으로 설정되게 되있습니다. 단지 IPv6를 이용하겠다고 시스템에 통보해주면 나머지는 알아서 처리해 줍니다. 부트시에 자동으로 설정하도록(영속적을) 다음과 같은 커맨드를 실행시킵니다:

	touch /etc/hostname6 

IPv6 를 커맨드 라인 상에서 활성화 하기 위해서는(시스템이 재부팅 하면 정보는 손실됨) 다음과 같은 커맨드 라인을 실행시킵니다.:

	ifconfig  inet6 plumb
ifconfig inet6 up

문제 해결 방법

다음과 같은 툴들이 네트워크 문제들을 해결하는데 사용될 수 있습니다:

/sbin/ifconfig: NIC를 다루는 시스템 관리자의 가장 가까운 친구 입니다. 네트워크 카드를 설정하고 /sbin/ifconfig 은 현재 시스템에 어떠한 카드들이 인식되어 있는지, 그들의 상태는 어떤지를 알게 해 줍니다. 문제 해결 접근시 가장 먼저 수행해야할 툴 입니다. ifconfig -a 는 NIC의 IP 주소(inet), 서브넷 마스크(netmask), 루트 권한으로 실행했다면 MAC 주소(ether) 등 NIC에 대한 모든 정보를 알려 줄 것입니다.

/usr/sbin/arp: address resolution protocol (ARP)은 테이블을 이용하여 인터넷-이더넷의 정보 전송 데이타를 추적합니다.(IP 주소를 MAC 주소로). arp 는 table을 통해서 어떠한 정보를 컴퓨터가 캐싱하고 있는지, 정보의 입력과 삭제등의 자료, 종종 문제점등을 볼 수 있게 해줍니다. DNS 이슈가 있을때 arp 커맨드와 -an 옵션은 IP 어드레스를 호스트 네임으로 해석하지 않고 그대로 전체 테이블을 보여 줍니다. arp 는 응답한 호스트의 NIC의 MAC 어드레스를 얻을 수 있는 하나의 방법입니다. 이것은 arp 를 이용하여 타겟 호스트의 호스트 이름이나 IP 주소를 이용하여 수행 할 수 있습니다: arp host.domain.com. 어쨌든 이 방법은 같은 네트워크 상에 있는 머신을 타겟으로 한 경우만 동작합니다.

 /bin/netstat: 네트워크 관련된 다양한 테이블들의 내용을 보여주는 아주 유용한 툴 입니다. man 페이지를 참고 하는것이 이 툴과 친숙해 지는 가장 좋은 방법입니다. 여기에는 기본적인 사용방법에 관해서만 언급합니다:

  • 포트/소켓 정보는 netstat -a 로 확인 가능합니다. 이 방법은 어떤 원격의 시스템이 어떤 포트와 통신 하는지(이 경우에는 어떠한 데몬이 포트를 사용하는지) 또는 어떠한 컴퓨터가 당신의 웹서버를 브라우징 하는지에 대해서도 알 수 있습니다.
  • 대부분의 관리자들은 현재 시스템의 라우팅 테이블을 netstat -rn 명령으로 검사 합니다. n 옵션은 문제 네트워크 문제 해결시에 만드시 사용되어야 할 옵션입니다. 왜냐하면 IP-호스트네임 검사는 로컬 서비스가 아니기 때문입니다. 반드시 여러번 확인해야할 항목은 "default" 목적지입니다. 이것은 시스템의 기본 라우터, 게이트웨이어야 합니다.
  • 각 NIC의 통계치는 netstat -I 로 확인 가능합니다. 종종 모니터링 스크립트를 짤때 사용됩니다.

/usr/sbin/snoop: 패킷 모니터링 툴로써 현재 로컬 네트워크에 돌아다니고 있는 패킷을 캡춰 합니다. NIC가 네트워크를 필요 이상으로 점유하고 있는 오동작 상황이다 DHCP가 올바로 동작하고 있는지 확인 할 때 아주 좋은 툴 입니다. NIC를 설정하기 전에 snoop을 이용하여 NIC에 흘러 들어 오는 패킷을 확인 함으로써 케이블/NIC/스위치 포트가 정상적으로 작동하고 있는지 확인 해 볼 수 있습니다. 또한 새로 설정한 NIC의 네트워크에 맞는 패킷들이 돌아 다니고 있는지도 확인해 볼 수 있습니다. 이 툴은 다음과 같은 사항을 주의해야 합니다: 몇몇 회사들은 회사 정책상 snoop과 같은 모니터링 툴을을 사용하는것을 금지하고 있습니다. 또한 원격에서 머신에 접속했을때 verbose 옵션으로 수행하는것을 권장하지 않습니다.

추가적인 사항

네트워킹은 간단할 수도 있고 동시에 복잡할 수도 있습니다. 제일 처음 확인해야할 유닉스 어플리케이션은 man 페이지 입니다. 다음으로 썬의메뉴얼 사이트 (docs.sun.com)를 추천합니다. 마지막으로 Sun Managers 메일링 리스트도 참고하시기 바랍니다.





댓글

💲 추천 글