ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 통신 확인하기
    네트워크 & 인프라 2022. 3. 23. 17:56

     

     

    이번에는 네트워크 통신을 확인하는 방법에 대해 알아보자. 

     

     

     

    ① Ping check 
    • IP 정보만으로 서버에 요청이 가능한 지 확인 
    • ICMP 프로토콜 사용 (신뢰성을 보장하지 않는 IP의 오류정보를 발견하고 보고를 담당하는 프로토콜)
    • TCP가 아니라 Port번호가 존재하지 않음
    • RTT(Round Trip Time) : 한 패킷이 왕복한 시간 (높을 경우 어느구간에서 오래 걸리는지 확인 필요)
    • ARP(Address Resolution Protocol) : IP(논리적 주소)를 이용하여 MAC(물리적 주소)를 알아와 통신이 가능하게 해주는 프로토콜
      • Broadcast로 요청하면 수신한 장비들 중 자신의 IP에 해당하는 장비가 응답하고 응답 받은 NIC 포트정보와 IP, MAC 주소를 기반으로 이후 통신을 진행
    $ ping [대상 IP]
    -- [대상 IP] ping statistics --
    1 packets transmitted, 1 packets received, 0.0% packet loss
    round-trip min/avg/max/stddev = 걸린 시간 ms
    
    ## 어디서 오래걸리는지 찾기
    $ traceroute [대상 IP] 
    
    ## ARP Table 확인
    ## Ping으로 다른 서버와 통신한 이후 arp table을 다시 확인해보면 ARP Table이 추가됨을 확인가능 
    $ arp
    Address             HWtype   HWaddress           Flags Mask            Iface
    [디폴트 Route IP]     ##...
    
    $ ip route
    default via [디폴트 Route IP] dev eth0 proto dhcp src [자신의 IP] metric 100
    
    ## ARP 변경
    ## Default Route의 MAC주소를 변경할 경우 연결이 끊어짐을 확인가능
    $ sudo arp -s 192.168.0.1 [다른 MAC주소]

     

     

     

     

     

    ② Port check 
    • 서비스의 정상 구동 여부 확인 
    $ telnet [Target Server IP] [Target Service Port]
    • 서버는 소켓을 통해 하나의 포트번호를 오픈해두고도 많은 사용자와 연결을 맺을 수 있다. 
    • 같은 프로세스가 같은 포트를 가지고도 여러개의 소켓을 열 수 있다. 
    • 하나의 프로세스는 같은 프로토콜, 같은 IP주소, 같은 포트넘버를 가지는 수십 혹은 수만 개의 소켓을 가질 수 있다.  
      • 소켓을 통해 데이터 보내면 네트워크 모델에 따라 목적지 호스트에 데이터 도착
      • 데이터를 담은 봉투에 써진 도착지의 포트넘버와 같은 포트를 할당받은 프로세스 찾음
      • 프로세스의 소켓을 통해 해당 프로세스에 데이터를 전달
    ## 현재 서버에서 프로세스 별로 몇개의 연결이 가능한지 확인
    $ sysctl fs.file-max
    $ ulimit -aH
    ## 포트 포워딩 (80 번으로 연결시에 8080으로 연결되도록)
    ## 원격지 서버에서 8080 포트로 소켓을 열기
    $ sudo socket -s 8080
    
    ## iptables 를 활용하여 port forwarding 설정
    ## 80번 포트로 서버에 요청을 하면 서버의 8080번 포트와 연결
    $ sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
    
    ## 서버의 공인 IP 확인 
    $ curl wgetip.com
    
    ## 자신의 로컬에서 연결
    $ telnet [서버의 공인 IP] 80
    
    ## 설정 삭제 
    $ sudo iptables -t nat -L --line-numbers
    $ sudo iptables -t nat -D PREROUTING [라인 넘버]

     

     

     

     

     

    ③ HTTP Response check
    • HTTP Status code 기반으로 상세하게 이상 유무 판단 
      • /etc/hosts 파일에 정적으로 설정한 정보를 확인
      • 로컬의 DNS Cache 확인
      • /etc/resov.conf에 설정한 저보를 기반으로 DNS 서버에 질의
      • DNS 서버는 정보가 있으면 반환, 없으면 본인 상위의 DNS에 질의
      • 도메인에 해당하는 IP 알게되면 DNS Cache에 추가
    $ curl -I [대상 IP]

     

     

     

    ④ 패킷 분석
    • wireshark, tcpdump 등의 도구를 사용해서 분석 가능
    • wireshark를 이용하며 패킷을 캡쳐할 수 있다 (통신과정에서 일어난 이벤트 기록가능)
    $ tcpdump host 192.168.0.207
    $ tcpdump port 80
    $ tcpdump net 192.168

     

     

     

     

     

     

    ( 참고한 사이트 )

    NextStep 프로젝트 공방 1기 (망 분리하기)

    https://edu.nextstep.camp/

     

    NEXTSTEP

     

    edu.nextstep.camp

    https://blog.naver.com/myca11/221389847130

     

    소켓(Socket) 포트(Port) 뜻과 차이

    나도 개발자지만 소켓과 포트의 정확한 의미 차이가 헷갈릴 때가 있어서, 최근에 다시 꼼꼼하게 공부를 했...

    blog.naver.com

     

     

     

     

     

     

     

Designed by Tistory.