java
java - telnet 대신 포트 방화벽 확인하기 port check
고.니
2017. 9. 5. 01:42
반응형
보통 서버의 방화벽이 open 되었는지 확인할 때 telnet 명령어를 사용합니다.
그런데, 특수한 경우 서버에서 텔넷 명령어를 사용할 수 없는 경우가 있는데 이럴때 아래의 간단한 소스로 텔넷을 대신해 포트 방화벽을 확인할 수 있습니다.
- 컴파일 -
javac PortCheck.java
- 실행 -
java PortCheck www.naver.com 80
이렇게 실행하면
1. 방화벽이 막혀있는 경우 커넥션 타임아웃 오류가 발생합니다.
1 2 3 4 5 6 7 8 9 10 11 | Exception in thread "main" java.net.SocketTimeoutException: connect timed out at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at PortCheck.main(PortCheck.java:11) |
2. 해당 포트가 리스닝하고 있지 않은 경우 커넥션 리퓨즈드 오류가 발생합니다. 이러면 방화벽은 열린 겁니다.
1 2 3 4 5 6 7 8 9 10 | Exception in thread "main" java.net.ConnectException: Connection refused: connect at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at PortCheck.main(PortCheck.java:11) |
3. 오류가 발생하지 않으면 방화벽도 열려있고 해당 포트도 리스닝하고 있는 상태입니다.
- 아래는 소스 파일 입니다. -
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import java.io.IOException; import java.net.InetSocketAddress; import java.net.Socket; import java.net.SocketAddress; import java.net.UnknownHostException; public class PortCheck { public static void main(String[] args) throws UnknownHostException, IOException { SocketAddress endpoint = new InetSocketAddress(args[0], Integer.valueOf(args[1])); new Socket().connect(endpoint, 3000); System.out.println("OK"); } } |
반응형