2011년 7월 5일 화요일

Windows 7"식별되지 않은 네트워크" 문제 해결하기

관리자 모드로 cmd 를 실행한다.

다음과 같이 명령을 실행한다.
1) netsh -c "interface ipv4"


이 명령을 수행하면 netsh interface ipv4> 라는 명령어 보임

2) set neighbors "로컬 영역 연결" ip_address mac_address
(여기서 ip_address : 현재 자신의 IP / 그리고 mac_address 현재 PC의 맥어드레스를 사용)
-ipconfig /all 을 사용하여 확인함

(영문 윈도라면 "로컬 영역 연결" 대신 "Local Area Network"
위와 같이 수행하였을 때 아무런 에러가 안나면 성공한 것이다.
그리고 네트워크를 사용안함으로 했다가 사용함으로 하면 해결 ~~~~
ㅎㅎㅎㅎ

오래 걸렸다~~

2011년 1월 19일 수요일

기본적인 네트워크 명령어

여러 네트워크 명령의 실제 사용 예를 설명한다.

1. PC나 서버가 동작중인지 확인하는 기본적인 툴 ping, fping

   fping 구할 곳 http://www.fping.com/
  
   ICMP 프로토콜의 echo request, reply type을 사용하여 지정한 시스템의
   응답을 확인한다.
   요즘은 방화벽이나 서버에서 필터링하는 경우가 상당하므로 ping이 안된다고
   해당 서버가 죽었다고 생각해서는 안됨

   fping은 ping과 같으나 한번의 명령으로 여러 서버의 응답을 확인할 수 있다.

   ping  < 확인할 서버 주소 >
   fping < 확인할 서버 목록 나열 >
  
   fping 192.168.1.1 192.168.1.5
   fping -g 192.168.123.0/24
   fping < 파일명    : 지정한 파일명에 나열된 IP에 모두 ping을 함

   # fping 192.168.1.1 192.168.1.5 192.168.1.10 192.168.1.30
   192.168.1.1 is alive
   192.168.1.5 is alive
   192.168.1.10 is alive
   192.168.1.30 is unreachable

2. 라우팅 경로를 찾는 traceroute, tracepath

   traceroute 를 위해서는 ICMP type 11(time-execeeded) 가 필터링되어서는 안됨

   1) ICMP 대신 UDP를 사용하려면

   traceroute -I < trace할 서버 주소 > 또는
   tracepath < trace할 서버 주소 >

   2) TCP를 사용하는 traceroute 툴, lft와 tcptraceroute

   lft : http://www.mainnerve.com/lft/
   tcptraceroute : http://michael.toren.net/code/tcptraceroute/

   lft < trace할 서버 주소 >

   # lft -d 80 lug.or.kr (해당 사이트가 80포트가 열린 경우 이용)

   Tracing ___________________________.

   TTL  LFT trace to 211.214.161.175:80/tcp
   1   192.168.123.254 1.4ms
   ... 중략 ...
   9   211.58.252.150 23.2ms
   10   211.108.63.222 21.2ms
   11   218.38.58.22 20.6ms
   12   [target] 211.214.161.175:80 75.9ms

   lft에서 네트워크명, AS번호까지 표시하도록 하려면 -N옵션을 사용하면 된다.

   # lft -N -d 80 lug.or.kr

   Tracing ____________________________________________________________________

   LFT can't seem to round-trip.  Local packet filter in the way?

   TTL  LFT trace to 211.214.161.175:80/tcp
   1   [IANA-CBLK1] 192.168.123.254 13.2ms
   ... 중략 ...
   9   [APNIC-CIDR-BLK2/HANANET-DONGJAK-KR] 211.58.252.150 24.2ms
   10   [APNIC-CIDR-BLK2/WULSANSO-KR] 211.108.63.222 25.0ms
   11   [APNIC4/HANANET-IDC-NGENE-KR] 218.38.58.22 39.4ms
   **   [80/tcp failed]  Try alternate options or use -V to see packets.

3. 네트워크 상태확인하는 netstat

   자주 사용하는 옵션 (워낙 옵션을 조합해서 자주 사용하므로 정리할 필요 있음)

   -n : 호스트명, 포트명을 lookup하지 않고 그대로 IP, Port번호로 보여준다.
   -a : 모든 네트웍 상태(listening, non-listening)를 보여준다.
   -t : TCP 프로토콜만
   -u : UDP 프로토콜만
   -p : 해당 포트를 사용하는 프로그램과 프로세스ID(PID)를 보여줌
       (솔라리스에서는 ARP 테이블을 보여줌)
   -s : 프로토콜별(IP, ICMP, TCP, UDP 등)로 통계를 보여줌
   -c : 1초 단위로 continuous하게 보여줌 (지속적인 접속 변화를 확인해야할 때 유용)
   -r : 라우팅 테이블을 보여줌. route 명령처럼

   netstat -nlp         Listening(l)중인 포트/소켓을 해당 PID와 프로세스명과 함께
   netstat -tn          TCP 접속 상태
   netstat -un          UDP 접속 상태
   netstat -rn          routing 테이블
   netstat -ntp         TCP 접속 상태를 해당 PID와 프로세스명과 함께
   netstat -atnp        모든 TCP 접속상태를 해당 PID와 프로세스명과 함께
   netstat -s           통계
   netstat -c -t        TCP 접속을 continuous 하게 보여줌

   # netstat -atnp
   Active Internet connections (servers and established)
   Proto Recv-Q Send-Q Local Address      Foreign Address     State    PID/Program name
   tcp        0      0 0.0.0.0:515        0.0.0.0:*           LISTEN   671/lpd Waiting
   tcp        0      0 127.0.0.1:3333     0.0.0.0:*           LISTEN   738/avmilter
   tcp        0      0 0.0.0.0:3306       0.0.0.0:*           LISTEN   720/mysqld
   ... 생략 ...

4. fuser : 파일이나 소켓을 사용하는 프로세스 ID를 보여줌

   1) TCP 25(mail)포트를 사용하는 PID를 보여줌

   # fuser -n  tcp 25
   mail/tcp:              757

   2) http 포트를 사용하는 PID, USER, 명령어를 보여줌
    (-vn을 -nv 처럼 사용해서는 안됨
  
   # fuser -vn tcp http
  
                        USER        PID ACCESS COMMAND
   http/tcp             root       1652 f....  httpd
                        root       1659 f....  httpd
   ... 생략 ...

   3) /dev/hdb1 을 사용하는 사용자와 PID, 명령어
     (umount해야할 때 사용중이라 나올 때 유용하게 쓰임)
  
   # fuser -vm /dev/hdb1
  
                        USER        PID ACCESS COMMAND
   /dev/hdb1            truefeel   1669 f....  xmms
                        truefeel   1670 f....  xmms

5. 패킷 모니터링을 위한 트래픽 덤프 툴 tcpdump
  
   1) eth0 인터페이스로 오고가는 트래픽 정보를 보여줌(-i eth0 옵션없으면 eth0임)
  
   tcpdump
  
   2) 192.128.1.1 host로 오고가는 또는 제외한 트래픽

   tcpdump host 192.128.1.1
   tcpdump src host 192.128.1.1
   tcpdump dst host 192.128.1.1
   tcpdump not host 192.128.1.1

   3) 192.128.1.1과 192.128.1.2 사이를 오고가는 트래픽만

   tcpdump host 192.128.1.1 and 192.128.1.2

   4) ICMP, ARP, UDP 프로토콜만, ICMP 프로토콜 20개만

   tcpdump icmp -i eth0
   tcpdump arp
   tcpdump udp
   tcpdump icmp -c 20

   5) 웹 포트로 오고가는 패킷만

   tcpdump port 80

   6) dhcp 패킷 확인할 때

   # tcpdump -v -s 1500 port 67 or port 68
   tcpdump: listening on eth0
   01:17:16.803166 0.0.0.0.bootpc > 255.255.255.255.bootps:  [udp sum ok]
   xid:0x29b28363 vend-rfc1048 DHCP:REQUEST RQ:truefeel
   PR:SM+BR+TZ+DG+DN+NS+HN+YD+YS+NTP [tos 0x10]  (ttl 16, id 0, len 328)
   01:17:16.806441 192.168.1.254.bootps > 255.255.255.255.bootpc:
   ... 생략 ...

6. 도메인 네임 찾기 dig, nslookup
   워낙 다양한 사용법이 있으므로 기본적인 사용과 유용한 것 몇 개만

   1) linux.or.kr 의 IP 확인

   dig linux.or.k
   nslookup linux.or.kr

   2) SOA, MX 등의 레코드 확인

   dig linux.or.kr soa
   dig linux.or.kr mx

   3) bind 네임서버 버전 확인

   dig @네임서버 txt chaos version.bind
   nslookup -q=txt -class=CHAOS version.bind. 네임서버
  
   4) 존파일 transfer
  (존파일 전송을 허용한 경우 해당 도메인의 모든 목록을 얻을 수 있다.)

   dig @네임서버 도메인명 axfr

   # dig @ns.daum.net daum.net axfr

   ; <<>> DiG 9.2.1 <<>> @ns.daum.net daum.net axfr
   ;; global options:  printcmd
   daum.net.               86400   IN      SOA     ns.daum.net.
   hostmaster.daum.net. 2003082602 2700 900 604800 86400
   daum.net.               86400   IN      NS      ns.daum.net.
   daum.net.               86400   IN      NS      ns2.daum.net.
   daum.net.               86400   IN      MX      10 mx1.hanmail.net.
   daum.net.               86400   IN      MX      10 mx2.hanmail.net.
   daum.net.               86400   IN      MX      10 mx3.hanmail.net.
   ... 생략 ...
  
7. 웹서버 benchmark 할 때 유용한 lynx, ab

   1) time lynx -source localhost > /dev/null
   2) ab -n 10 localhost/         10회 반복해서 요청
      ab -n 10 -c 10 loclahost/   10회 반복, 10건이 동시 접속일 때

8. 도메인 whois 검색하는 fwhois, whois -h

   whois.krnic.net 서버에 linux.or.kr 에 대해 whois 검색 요청

   fwhois linux.or.kr@whois.krnic.net
   whois linux.or.kr -h whois.krnic.net

9. 웹서버 종류 확인

   1) telnet 이용

   # telnet localhost 80
   Trying 127.0.0.1...
   Connected to localhost.
   Escape character is '^]'.
   HEAD / HTTP/1.0

   HTTP/1.1 200 OK
   Date: Tue, 20 May 2003 12:48:08 GMT
   Server: Apache/2.0.44 (Unix) DAV/2 PHP/4.3.1
   ... 생략 ...

   2) HEAD, GET 이용 (perl libwww 모듈에 포함된 툴임)

   # HEAD localhost
   200 OK
   Date: Tue, 20 May 2003 12:51:13 GMT
   Accept-Ranges: bytes
   Server: Apache/2.0.44 (Unix) DAV/2 PHP/4.3.1
   ... 생략 ...

   3) apachebench 툴 ab 이용

   # /usr/local/apache/bin/ab localhost/
   ... 생략 ...
   Server Software:        Apache/2.0.44
   Server Hostname:        localhost
   ... 생략 ...

   4) netcat(nc)를 이용 (레드햇 8.x에서 기본 설치됨)

   nc : http://www.atstake.com/research/tools/network_utilities/

   # echo "HEAD / HTTP/1.0"|nc localhost 80
   HTTP/1.1 200 OK
   Date: Sun, 21 Sep 2003 20:00:57 GMT
   Server: Apache/2.0.44 (Unix) DAV/2 PHP/4.3.2
   ... 생략 ...

10. 솔라리스에서 패킷 모니터링

   snoop 
   snoop port 53

11. 솔라리스에서 회선이 연결됐는지 확인하는 방법

   while 1
   ? ndd -get /dev/hme link_status
   ? sleep 1
   ? end

2010년 12월 22일 수요일

윈도우 xp 원본 파일 복구하기

윈도우 xp 사용 중 원본 파일이 변경되었을 경우, 원본 파일로 복구하는 방법입니다. 

1. 윈도우 설치시 사용한 CD/DVD 를 CD/DVD 롬에 삽입니다. 
2. [시작] 버튼을 누릅니다. 
3. [실행(R)] 을 클릭합니다. 
4. sfc /scannow 라고 적은 후 엔터키를 누릅니다. 

2010년 12월 15일 수요일

windows XP 복구방법

부팅이 불가능 할 경우 xp 의 복구콘솔을 이용해 부팅 파일을 복구 시킬수 있습니다. 
순서는 다음과 같습니다. 

우선 Windows XP Pro 설치시디를 시디롬에 넣고 재부팅 합니다. 

재부팅시 del 또는 F2 키를 이용해 cmos 로 들어가서 첫번째 부팅순서를 CD-Rom 으로 설정한뒤 저장하고 나옵니다. 

CD-Rom 에서 xp 설치 시디를 읽으면서 Press Key... 가 나오면 아무키나 눌러줍니다. 

XP 설치 화면으로 바뀌고 계속설치(ENTER) , 복구콘솔(R) 화면이 나올때 R 키를 누릅니다. 

키보드 및 운영체제 위치를 선택해 줍니다. 

XP 설치시 입력했던 administrator 비밀번호를 입력합니다. 

복구콘솔이 나오면 C:\Windows> 이 화면에서 CD 를 입력해 C:\> 으로 이동합니다. 

C:\>Fixmbr \device=harddisk0 입력 합니다. 만약 물리적인 하드가 두개고 두번째 하드에 XP 가 설치되어 있다면 harddisk1 로 입력해 주십시오. Y/N 이 나오면 Y 를 선택합니다. 

C:\>Fixboot c: 입력 후 엔터 

C:\>Chkdsk c: 입력 후 엔터 

다 끝나면 C:\>Exit 입력 후 시디롬에서 XP 시디를 빼고 정상부팅이 되는지 확인합니다.

2010년 11월 16일 화요일

열린포트 확인하는 방법

시스템 명령어인 netstat 를 사용하는 방법

#netstat -nap (열려 있는 모든 포트)
#netstat -l 또는 netstat -nap | grep LISTEN (LISTEN 되는 모든 포트)
#netstat -nap | grep ESTABLISHED | wc -l ( 모든 서비스 동시 접속자 수)
#netstat -nap | grep :80 | grep ESTABLISHED | wc -l ( 웹 동시 접속자 수)


포트스캔 명령어로 확인 하는 방법

# TCP 포트 확인 방법
nmap -sT -p 1-65535 localhost
# UDP 포트 확인 방법
nmap -sU -p 1-65535 localhost
# 네트워크에 열린 포트 확인
nmap -sX -p 22,53,110 211.239.111.*


lsof 명령어로 확인 방법

# 모든 네트워크 소켓 확인
lsof -I

tomcat 여러개의 포트 사용하기

톰캣에서도 MS의 IIS와 같이 포트 번호에 따라 호스팅하는 것이 가능하다.(근데 웨케힘드노)

TOMCAT_HOME\conf\server.xml 을 열고 아래와 같이 Service 엘리먼트를 추가한다.

아래 좋은 블로그가 있어서 펌해왔다. ^__^) b
 아파치와 연동없이 톰캣만으로도 하나의 IP로 다수의 웹사이트를 운영하는 것이 가능하다.
(아파치와 톰캣을 연동하는 방법에 대해서는 차후에 자세히 올리도록 하겠다)

특히 개발자의 경우 여러개의 프로젝트를 개발하거나 테스트하고자 할 때 웹사이트를 여러개 운영해야한다. 다수의 웹 사이트를 세팅하는 방법은 크게 2가지가 있다.
가상호스트를 이용하는 방법은 도메인을 이용하여 실제로 서비스를 운영하는 경우가 아니면 개발자에겐 별 의미가 없다. 여기서는 두번째 방법인 IP 어드레스의 포트를 이용하는 방법에 대해서 설명하겠다. (바로가기 : 톰캣에서 가상 호스트를 이용하는 방법)
우선 설치 환경은 다음과 같다.
  • O/S : Windows XP (난 아직 리눅스를 잘 모른다. 비슷하겠지만 테스트해보지 않았다)
  • Tomcat 6.0 (정확히는 6.0.10) : 다운로드
설명의 편의를 위해 톰캣의 설치 디렉토리는 'TOMCAT_HOME' 으로 표기할 것이다. 참고로 내 경우는 C:\Server\Tomcat6.0 이다.

설정하는 방법은 간단하다. /TOMCAT_HOME/conf/에 있는 server.xml 파일만 수정하면 끝이다. server.xml의 쓸데없는 주석부분을 다 없애고 핵심부분만 남겨놓으면 아래와 같다.

<Service name="Catalina">
  <Connector port="8080" protocol="HTTP/1.1"
   maxThreads="150" connectionTimeout="20000"
   redirectPort="8443" />
  <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
  <Engine name="Catalina" defaultHost="localhost">
   <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
    resourceName="UserDatabase"/>

   <Host name="localhost"  appBase="webapps"    unpackWARs="true" autoDeploy="true"
    xmlValidation="false" xmlNamespaceAware="false">
   </Host>

  </Engine>
 </Service>


우선 빨간색으로 표시한 부분만 이해하고 넘어가도 상관없다.
Connector port="8080"은 HTTP로 넘어오는 포트를 지정하는 것이다. 톰캣의 기본 포트가 8080인 이유가 여기에 있다. 따라서 8080 대신 기본 80포트를 사용하고 싶다면? 바로 이 부분을 port="80"으로 바꾸어주면 된다.

다 음, Host 지시어의 appBase="webapps" 는 웹어플리케이션(웹사이트)의 위치를 나타낸다. appBase="./webapps"와 같은 의미다. 실제 위치는 TOMCAT_HOME/webapps이다. 물론 "d:/weapps/myweb1" 과 같이 절대경로로 지정하는 것도 가능하다.

그럼 웹사이트를 하다 더 추가하고 싶다면? 위의 <Service>...</Service>를 하나 더 만들어 버리면 된다. 위의 코드를 복사한 다음 server.xml 에 추가한다. 그리고 빨간색으로 표시한 부분만 수정하자.
<Service name="Catalina2">
  <Connector port="9090" protocol="HTTP/1.1"
     maxThreads="150" connectionTimeout="20000"
     redirectPort="8443" />
  <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
 
  <Engine name="Catalina" defaultHost="localhost">
   <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
     resourceName="UserDatabase"/>

   <Host name="localhost"  appBase="d:/webapps/myweb2"
    unpackWARs="true" autoDeploy="true"
    xmlValidation="false" xmlNamespaceAware="false">
   </Host>
  </Engine>
 </Service>

다른 웹어플리케이션을 돌리기 위해 서비스를 하나 더 추가한 것이다.
port="9090" 은 새로 추가하고 싶은 포트이다.
appBase="d:/webapps/myweb2"는 9090 포트에서 돌아갈 웹사이트 위치이다.

이제 server.xml 설정은 끝난 것이다.
마지막으로 웹사이트의 ROOT 디렉토리를 지정해주자. 아래의 폴더를 생성한다.

d:/webapps/myweb2/ROOT/   (
d:/webapps/myweb2/ROOT/WEB-INF/
(WEB-INF 폴더를 만들고 web.xml 파일을 추가한다. 그냥 /TOMCAT_HOME/webapps/ROOT/WEB-INF/에 있는 web.xml 을 복사하면 된다.

무지 간단하다. 하지만 난 이 간단한 것을 위해서 하루종일 삽질해야만 했다. 검색해 보아도 문서는 많은데 실제 도움이 될만한 것이 별로 없었다.

테스트하기 위해 ROOT/index.html 또는 index.jsp를 만든다.
이제 톰캣을 재시작하고 웹브라우저로 접속해 보자.
http://localhost:8080
http://localhost:9090

2010년 11월 15일 월요일

Unix 명령어

파일의 겟수를 체크할 경우
ls -l |wc -l
(예시)
nsdiap2:tmax [/app/tcpor/webapps.bak/WEB-INF/lib]# ls -l /app/tcpor/webapps/WEB*/lib |wc -l