yoni
[방화벽] 패킷 확인 본문
- 배경
: 2대의 서버인 DMZ영역과 폐쇄망(내부망)에서 ip와 port를 각자 할당 해 줬는대 서로 통신이 안되는 모습을 포착하였다. - 방법 모색
[TCP]
1) telnet 시도
: telnet ip port
2) 각자 리눅스 서버에서(web, was) 포트가 리슨되어 있는지 확인
: 리슨이 안되어 있으면 서비스가 정상적으로 떠있는게 아니다.
netstat -an | grep "포트" | grep "LISTEN"
3) curl로 연결이 되는지 확인 한다.
: curl http://도메인(아이피):포트/index.jsp
4) wget
: 연결이되지않으면 404도 뜨지 않는다.
[UDP]
5) java 테스트 파일
- 현상
: DMZ == WEB서버, 내부망 == 폐쇄망 == WAS서버
1) WAS -> WEB 접속 가능
2) WEB -> WAS 접속 불가능 - DMZ 구조
DMZ는 일반적으로 메일서버, 웹서버, DNS 서버와 같이 외부에서 접근되어야 할 필요가 있는 서버들을 위해 사용된다. 외부 네트워크에서 DMZ로 가는 연결은 일반적으로 포트 주소 변환(port address translation 또는 PAT)을 통해 제어된다.
[방법모색 중 java 테스트파일]
- UdpReceiver
: 받는부 - DMZ는 일반적으로 메일서버, 웹서버, DNS 서버와 같이 외부에서 접근되어야 할 필요가 있는 서버들을 위해 사용된다.
import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; public class UdpReceiver { private int port; public UdpReceiver(int port) { this.port = port; } public void execute() throws IOException, InterruptedException { DatagramSocket ds = new DatagramSocket(port); while (true) { Thread.sleep(1000); System.out.println("waiting ... "); byte[] data = new byte[65508]; DatagramPacket dp = new DatagramPacket(data, data.length); ds.receive(dp); System.out.println(dp.getAddress().getHostAddress() + " >> " + new String(dp.getData()).trim()); } } public static void main(String[] args) { if (args.length != 1) { System.out.println("Usage : java UdpReceiver [PORT]"); } UdpReceiver receiver = new UdpReceiver(Integer.parseInt(args[0])); System.out.println("UdpReceiver started ... PORT : " + args[0]); try { receiver.execute(); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } }
- UdpSender
: 보내는부
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.UnknownHostException; public class UdpSender { private InetAddress ip; private int port; public UdpSender(String ipAddress, int port) throws UnknownHostException { this.ip = InetAddress.getByName(ipAddress); this.port = port; } public void execute() throws IOException { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); DatagramSocket ds = new DatagramSocket(); while(true) { System.out.print("보낼 메세지 = "); String msg = in.readLine(); DatagramPacket dp = new DatagramPacket(msg.getBytes(), msg.getBytes().length, ip, port); ds.send(dp); System.out.println("전송완료 !!"); } } public static void main(String[] args) throws IOException { if (args.length != 2) { System.out.println("Usage : java UdpSender [IP] [PORT]"); } UdpSender sender = new UdpSender(args[0], Integer.parseInt(args[1])); System.out.println("UdpSender started ... IP, PORT : " + args[0] + ", " + args[1]); sender.execute(); } }
- UdpSender
- 외부 네트워크에서 DMZ로 가는 연결은 일반적으로 포트 주소 변환(port address translation 또는 PAT)을 통해 제어된다.
[리눅스 서버 쉘스크립트]
* UdpReceiver.sh
#/bin/sh
TEST_HOME=`cd ..;pwd`
CLASSPATH=$CLASSPATH:$TEST_HOME/classes/production/UdpTest
java -classpath $CLASSPATH test.UdpReceiver $1
* UdpSender.sh
#/bin/sh
TEST_HOME=`cd ..;pwd`
CLASSPATH=$CLASSPATH:$TEST_HOME/classes/production/UdpTest
java -classpath $CLASSPATH test.UdpSender $1 $2
'방화벽' 카테고리의 다른 글
TLS 버전 강제 적용 (0) | 2024.05.31 |
---|
Comments