728x90

특정 서버나 장비의 작동여부를 외부에서 확인하기 위해서 ping 테스트를 많이 합니다.

ip 혹은 hostname만으로 간단하게 확인할 수 있어서 편리한 도구입니다.

하지만 보안상 icmp를 활성화 하지 않아 확인이 불가능할 수 있고, ping 테스트 성공이 특정 서비스의 정상작동 여부를 확인해줄 수 없는 단점도 존재합니다.

파워쉘에서는 이러한 ping 테스트를 보완할 수 있는 Test-NetConnection이라는 cmdlet을 제공합니다.

Test-NetConnection cmdlet을 사용하면 ping 테스트 뿐 아니라 TraceRoute도 할 수 있고, ip(혹은 DNS명)와 특정 TCP 포트를 지정하여 해당 포트로 연결이 정상적인지의 여부도 확인 할 수 있습니다.

Test-NetConnection 파워쉘 명령 작성

우선 기본적으로 아무런 옵션을 입력하지 않고 명령을 실행하면 "internetbeacon.msedge.net"이라는 기본사이트로 ping 테스트를 수행합니다. 아마도 Microsoft의 서버 같네요.

만약 어떤 특정서버의 연결상태를 확인하려면 아래와 같이 수행하여 ping 테스트와 같은 효과를 볼 수 있습니다.

Test-NetConnection -ComputerName remoteserver

아래 예는 Test-NetConnection cmdlet을 사용하여 google.com으로 ping 테스트 한 효과를 볼 수 있습니다.

ping 테스트 외 특정 서버의 포트가 활성화 되어 있는지 여부를 확인하기 위해서는 port 옵션을 추가하여 확인하고자 하는 포트를 지정할 수 있습니다.

Test-NetConnection -ComputerName remoteserver -Port port​

 

google.com의 웹서비스인 80 포트로 테스트 해본 결과이며,

구글은 81 포트는 서비스 하지 않아 fail이 발생하는 것을 확인할 수 있습니다. 실패하더라도 친절하게 ping 테스트는 성공했다는 것도 보여주네요.

 

파워쉘 스크립트 작성

파워쉘 커맨드 창에서 직접 확인만 한다면 여기까지만 할 수 있어도 문제는 없을것 같습니다만,

저희의 목적은 파워쉘을 통해 관리업무를 자동화시켜 수작업을 최대한 줄이는 것입니다.

서버가 수십대가 있고, 서버마다 확인이 필요한 포트가 여러 개가 있을 경우 모든 포트마다 이 명령을 수행하는 것은 비 효율적일테니까요.

이를 위해서는 하나의 명령을 사용하는 파워쉘 커맨드에서 파워쉘 스크립트를 작성할 줄 알아야 합니다.

제 개인적으로도 파워쉘을 사용해서 Windows 계열의 서버를 잘 관리하려면 스크립트를 작성할 수 있어야 많은 도움이 된다고 생각합니다.

단순히 파워쉘 명령(cmdlet)만으로 충분하고 자동화까지 할 필요가 없다면 아래 내용은 읽지 않으셔도 됩니다.

관리할 서버가 여러 대라고 가정하면 각 서버들의 ip 혹은 DNS 명을 미리 다른 파일에 등록해 두는 것이 좋습니다.

관리대상 서버가 추가 혹은 삭제되면 이 목록만 변경해주면 되니까요....저는 그렇게 사용합니다.

아래 처럼 2대의 서버와 포트를 ";"(구분자는 다른 것으로 해도 무방합니다.)로 구분한 쌍으로 묶어 서버 목록 파일을 만들어서 별도의 serverlist.txt 파일로 저장합니다. (추후 파워쉘 스크립트 파일에서 이 목록파일(serverlist.txt)을 읽어 올 예정입니다.)

www.google.com;80 www.google.com;81 www.microsoft.com;80

 

이제 파워쉘 스크립트를 작성하기 위해서 Windows Powershell ISE를 오픈합니다. (문서편집기 아무거나 사용하여 작성하셔도 됩니다만, 실행까지 시켜보기 위해서는 Powershell ISE가 편리하겠죠?)

빈 파워쉘 스크립트 파일에 위에서 Get-Content cmdlet을 사용하여 작성한 서버 목록 파일(serverlist.txt)을 읽어오는 스크립트를 작성합니다.

$ServerList = Get-Content .\serverlist.txt

serverlist.txt 파일에는 총 3개의 행이 존재하고 각각의 목록은 ip와 port를 ";"로 구분해 놓았으니, loop를 돌면서 각각의 행을 ip와 port로 구분하도록 $arrSvr라는 배열에 저장합니다.

Foreach ($Server in $ServerList) { $arrSvr = $Server -split ';' }

Test-NetConnection cmdlet을 실행시킬때 ComputerName, Port 옵션에 각각 ip와 port를 지정하고,

저희가 얻고자하는 결과는 특정 포트 연결의 성공여부이기 때문에 TcpTextSucceeded 필드만 추출하여 $ConnState 변수에 저장합니다.

$ConnState = (Test-NetConnection -ComputerName $arrSvr[0] -Port $arrSvr[1]).TcpTestSucceeded;

그 후 Write-Host cmdlet을 사용하여 결과에 따라 테스트 결과를 화면에 출력합니다.

If ($ConnState -eq $False) {
	Write-host $Server "test fail.";
} else {
	Write-host $Server "test succeed.";
}

지금까지의 파워쉘 스크립트를 하나의 파일로 요약하면 아래와 같습니다.

# 서버목록 파일을 읽어서 저장
$ServerList = Get-Content E:\temp\powershell\serverlist.txt;
Foreach ($Server in $ServerList) {
	# ip;port쌍을 구분자 ';'로 구분하여 배열에 저장
	$arrSvr = $Server -split ';'
	
    # Test-NetConnection cmdlet 실행하여 결과를 $ConnState 변수에 저장
 	$ConnState = (Test-NetConnection -ComputerName $arrSvr[0] -Port $arrSvr[1]).TcpTestSucceeded
    If ($ConnState -eq $False) {
        Write-host $Server "test fail.";
    } else {
        Write-host $Server "test succeed.";
    }
}

위와 같은 스크립트를 작성하고 스케쥴을 등록하여 주기적으로 실행시키면 포트의 활성화 여부를 테스트 할 수 있겠죠?

테스트 실패 시 "test fail"이라고 출력하지 않고 등록된 관리자에게 메일을 발송하면 더 편리하겠네요.

 

지금까지 말씀드린 Test-NetConnection 기능 외 자세한 기능을 알고 싶으시다면, Microsoft 매뉴얼을 참고하세요.

Test-NetConnection (nettcpip)

Use this topic to help manage Windows and Windows Server technologies with Windows PowerShell.

docs.microsoft.com

 
반응형
728x90

AIX tcping 설치 위치 정보

IBM freeSoftware RPM : https://public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc-6.1/tcping/

RPMS 폴더 아래의 버전별로 tcping 확인해서 설치 하면됩니다. 

 

tcping 버전 정보 확인

tcping --version

tcping 명령어의 기본 구문

Usage: tcping [-q] [-t timeout_sec] [-u timeout_usec] <host> <port>

 

사용 예시

tcping을 사용하여 호스트와 포트에 대한 연결을 테스트할 수 있습니다.

 

  • 호스트와 포트에 대한 기본적인 테스트
tcping example.com 80

이 명령어는 example.com의 80번 포트에 대한 연결을 시도하고 응답 시간을 표시합니다.

 

  • 특정 응답 시간 제한과 함께 테스트
tcping -t 5 example.com 80

이 명령어는 최대 응답 시간이 5초로 제한된 example.com의 80번 포트에 대한 연결을 테스트합니다.

 

  • 특정 포트 범위에 대한 테스트
tcping -p 22-80 example.com

이 명령어는 example.com 호스트에 대한 22부터 80까지의 포트 범위에 대한 연결을 시도하고 응답 시간을 표시합니다.

 

  • 특정 포트만 테스트
tcping -p 443 example.com

이 명령어는 example.com 호스트의 443번 포트에 대한 연결을 시도하고 응답 시간을 표시합니다.

 

  • closed
tcping sangchul.kr 80
$ tcping sangchul.kr 80
sangchul.kr port 80 closed.
  • open
tcping sangchul.kr 80
$ tcping sangchul.kr 80
sangchul.kr port 80 open.
tcping sangchul.kr 443
$ tcping sangchul.kr 443
sangchul.kr port 443 open.

 

tcping은 호스트와 포트에 대한 연결 상태를 확인하는 데 유용한 도구입니다.

반응형
728x90

HTTP 요청을 수행

curl과 같이 HTTP 요청에 훨씬 더 나은 도구가 있지만 Netcat을 사용하여 다양한 요청을 원격 서버로 전송할 수도 있습니다.

예를 들어 OpenBSD 웹 사이트에서 Netcat man 페이지를 검색하려면 다음과 같이 입력합니다.

printf "GET /nc.1 HTTP/1.1\r\nHost: man.openbsd.org\r\n\r\n" | nc man.openbsd.org 80

 

HTTP 헤더와 HTML 코드를 포함한 전체 응답이 터미널에 출력합니다.

 

출처 : https://jjeongil.tistory.com/1600 

반응형
728x90

단순 채팅 서버를 생성

두 개 이상의 호스트 간에 온라인 채팅을 생성하는 절차는 파일을 전송할 때와 동일합니다.

첫 번째 호스트에서 Netcat 프로세스를 시작하여 포트 5555에서 수신 대기합니다.

nc -l 5555

 

두 번째 호스트에서 다음 명령을 실행하여 수신 포트에 연결합니다.

nc first.host.com 5555

 

이제 메시지를 입력하고 ENTER를 누르면 두 호스트에 모두 표시됩니다.

연결을 닫으려면 CTRL+C를 입력합니다.

 

출처 : https://jjeongil.tistory.com/1600 

반응형
728x90

Netcat을 통해 파일을 전송

Netcat은 기본 클라이언트/서버 모델을 생성하여 호스트 간에 데이터를 전송하는 데 사용할 수 있습니다.

이는 수신 호스트의 특정 포트(-l 옵션 사용)를 수신하도록 Netcat을 설정한 다음 다른 호스트로부터 정기적인 TCP 연결을 설정하고 이 포트를 통해 파일을 전송함으로써 작동합니다.

수신 시 다음 명령을 실행하여 수신 연결을 위해 포트 5555를 열고 출력을 파일로 리디렉션합니다.

nc -l 5555 > file_name

 

송신 호스트에서 수신 호스트에 연결하고 다음 파일을 보냅니다.

nc receiving.host.com 5555 < file_name

 

디렉토리를 전송하려면 tar를 사용하여 소스 호스트의 디렉토리를 아카이브하고 대상 호스트에서 아카이브를 추출할 수 있습니다.

수신 호스트에서 포트 5555의 들어오는 연결을 수신하도록 Netcat 도구를 설정합니다. 들어오는 데이터는 tar 명령에 파이프로 연결되어 아카이브를 추출합니다.

nc -l 5555 | tar xzvf -

 

송신 호스트에서 디렉토리를 패킹하고 수신 호스트의 수신 nc 프로세스에 연결하여 데이터를 전송합니다.

tar czvf - /path/to/dir | nc receiving.host.com 5555

 

양단에서 전송 진행 상황을 볼 수 있습니다. 완료되면 CTRL+C를 입력하여 연결을 닫습니다.

 

출처 : https://jjeongil.tistory.com/1600 

반응형
728x90

Netcat(ornc)은 TCP 또는 UDP 프로토콜을 사용하여 네트워크 연결을 통해 데이터를 읽고 쓰는 명령줄 유틸리티입니다. 네트워크 및 시스템 관리자 무기고에서 가장 강력한 도구 중 하나이며, 네트워킹 툴의 스위스 군용 칼이라고 할 수 있습니다. 

Netcat은 교차 플랫폼이며 리눅스, MacOS, 윈도우즈 및 BSD에서 사용할 수 있습니다. Netcat을 사용하여 네트워크 연결을 디버그 및 모니터링하고, 열린 포트를 검사하고, 데이터를 전송하고, 프록시로 사용하는 등의 작업을 수행할 수 있습니다. 

Netcat 패키지는 MacOS 및 Ubuntu, Debian 또는 CentOS와 같은 널리 사용되는 Linux 배포에 미리 설치되어 있습니다.

 

Linux : Netcat (nc) 명령어, 사용 방법, 예제

Netcat 구문

Netcat 유틸리티의 가장 기본적인 구문은 다음과 같습니다.

nc [options] host port

 

Ubuntu에서는 netcat 또는 nc를 사용할 수 있습니다. 둘 다 openBSD 버전에 대한 symilinks입니다.

기본적으로 Netcat은 지정된 호스트 및 포트에 대한 TCP 연결을 시작합니다. UDP 연결을 설정하려면 -u 옵션을 사용합니다.

nc -u host port

포트 검색

포트 검색은 Netcat의 가장 일반적인 용도 중 하나입니다. 단일 포트 또는 포트 범위를 검색할 수 있습니다.

예를 들어 20-80 범위의 열린 포트를 검색하려면 다음 명령을 사용합니다.

nc -z -v 10.10.8.8 20-80

# nc: connect to 10.10.8.8 port 20 (tcp) failed: Connection refused
# nc: connect to 10.10.8.8 port 21 (tcp) failed: Connection refused
# Connection to 10.10.8.8 22 port [tcp/ssh] succeeded!
# nc: connect to 10.10.8.8 port 23 (tcp) failed: Connection refused
# ...
# nc: connect to 10.10.8.8 port 79 (tcp) failed: Connection refused
# Connection to 10.10.8.8 80 port [tcp/http] succeeded!

 

-z 옵션은 nc에 데이터를 보내지 않고 열린 포트만 검색하도록 지시하고 -v 옵션은 보다 자세한 정보를 제공합니다.

열린 포트가 있는 라인만 인쇄하려는 경우 grep 명령을 사용하여 결과를 필터링할 수 있습니다.

nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded

# Connection to 10.10.8.8 22 port [tcp/ssh] succeeded!
# Connection to 10.10.8.8 80 port [tcp/http] succeeded!

 

Netcat을 사용하여 서버 소프트웨어 및 해당 버전을 찾을 수도 있습니다. 예를 들어 "EX"를 보내는 경우입니다. IT" 명령은 기본 SSH 포트 22에서 서버에 전달됩니다.

echo "EXIT" | nc 10.10.8.8 22

# SSH-2.0-OpenSSH_7.6p1 Ubuntu-4
# Protocol mismatch.

 

UDP 포트를 검색하려면 아래 나온 것처럼 명령에 -u 옵션을 추가하면 됩니다.

nc -z -v -u 10.10.8.8 20-80

 

일반적으로 Nmap은 Netcat보다 복잡한 포트 검색에 더 적합한 도구입니다.

 

출처 : https://jjeongil.tistory.com/1600 

반응형
728x90

본문 출처 : https://skstp35.tistory.com/291

 

 

 

반응형
728x90

KT olleh

기본 DNS 서버 주소 : 168.126.63.1

보조 DNS 서버 주소 : 168.126.63.2

 

SK Broadband

기본 DNS 서버 주소 : 219.250.36.130 

보조 DNS 서버 주소 : 210.220.163.82

 

LG U+

기본 DNS 서버 주소 : 164.124.101.2

보조 DNS 서버 주소 : 203.248.252.2

 

Google 

기본 DNS 서버 주소 : 8.8.8.8

보조 DNS 서버 주소 : 8.8.4.4

 

OpenDNS

기본 DNS : 208.67.222.222

보조 DNS : 208.67.220.220

반응형

+ Recent posts