Q. IP가 뭔가요?

 

Internet Protocol 의 약어로  인터넷을 통해 정보를 송·수신 하기 위한 프로토콜 입니다.

보통은 IP 주소의 의미로 사용되며   사람들마다 고유의 휴대폰 번호가 있듯이 컴퓨터도 고유의 IP 주소를 가집니다.

 

Q. IP 주소로 뭘 할 수 있나요?

 

내 IP 주소를 검색해보면  xxx.xxx.xxx.xxx 형식의 숫자들을 볼 수 있습니다. 

이 주소로 인터넷을 통해 다른 IP주소와 통신할 수 있습니다,  (검색포털 Google 도 IP 주소를 가지고 통신을 합니다)

Q. IP 주소는 고유하다면서 똑같은걸 본 적이 있는데요?? 

 

아마도 내부 네트워크의 사설 IP 주소를 고려할 수 있을 것 같습니다.

우리가 흔히 볼 수 있는 사설 IP 주소로는 192.168.xxx.xxx 와 같이 생긴 숫자들을 볼 수 있습니다.

이는 공유기를 통한 사설 IP 망에 주로 사용되는 IP 형식입니다.

 

Q. 내부 네트워크는 뭐고 사설 IP 는 뭔가요?

 

IP 주소를 보면  . 으로 각 영역을 구분하는데 3자리 숫자로 이루어진 숫자값은 이진 수 8 bit 로 표기할 수 있습니다.

ex)  192  ~> 11000000      이 8 bit 를 옥텟 (Octet) 이라고 합니다.

 

IP 주소는 옥텟에 따라 네트워크 부분 - 호스트 부분으로 나눌 수 있습니다. 

 

네트워크 부분 : Broadcast Domain  ( 라우터를 거치지 않고 통신을 할 수 있는 대역망 )   # (02) 지역번호의 역할을 합니다.

호스트 부분 :     PC 가 할당받을 수 있는 영역  # 전화번호 역할을 합니다.

 

네트워크와 호스트 영역을 구분하는 이유

" 하나의 네트워크는 네트워크 부분이 모두 같아야 하며 호스트 부분은 모두 달라야 하기 때문입니다. " 

호스트 부분이 같으면 충돌이 발생합니다.    ( 같은 전화번호가 2개가 있는 경우는 없습니다. )

 

다시, 질문으로 돌아가서  내부 네트워크는  컴퓨터의 수가 많아짐에 따라 고유 IP 는 턱없이 부족해지고 있습니다.

따라서, 고유 IP 주소를 아껴서 사용해야만 합니다.

 

예를 들면,  공유기의 고유 IP 주소로  192.168.xxx.xxx 형태의 별도의 내부 네트워크를 만들어 컴퓨터, 스마트폰 등의 전자기기에 사설 IP 를 부여합니다.

이렇게 되면 기존에는 고유 IP 주소 2개 이상이 필요했지만 사설 IP 로 대체되어 고유 IP 주소를 아낄 수 있습니다.

그리고 모든 사설 IP들을 사용하는 기기들은 인터넷을 사용할 때 공유기의 고유 IP 주소를 통해 통신합니다.

 

Q. 네트워크와 호스트를 나눌 수 있다고 했는데 어떻게 나누는 건가요?

 

네트워크와 호스트를 구분하는 방식은 서브넷 마스크 (SubnetMask) 를 사용합니다.

 

Q. 서브넷 마스크는 뭔가요?

 

 네트워크를 만들기 위해 마스크를 씌우는 작업(연산) 입니다.  ( 서브넷팅 이라고 합니다 )

 

Subnet_mask  - 255.255.255.0   |  IP - 192.168.11.31

 

  Subnet_mask  =>  1111  1111   .  1111 1111   . 1111 1111   . 0000 0000     (255.255.255.0)

         IP              =>  1100  0000  . 1010 1000 .  0000 1011  . 0001 1111     (192.168.11.31)

   ---------------------------------------------------------------------------------------------

   Network          =>   1100  0000 .  1010 1000 .  0000 1011  . 0000 0000    ( 192.168.11.0 )

 

IP (192.168.11.31) 는 Network ( 192.168.11.0 ) / Subnet_mask ( 24 ) 에 속하는 호스트입니다.

* Subnet_mask 는  8bit 의 1의 개수로 표기합니다. 

  1 은 네트워크 대역을  0 은 호스트 대역을 의미합니다. 

    연속된 1의 중간에 0 이 존재할 수 없습니다. 

'📡Network' 카테고리의 다른 글

Load Balancer  (0) 2022.12.11
IP Class , NAT  (0) 2022.08.14
IPtables  (0) 2022.08.13

글을 쓰기 앞서 이곳을 참조하여 공부했습니다.

 

Q. exit code 가 뭔가요?

 

Linux에서 Command 를 입력하면 명령 실행 후 수행결과에 대해 리턴값입니다.

 

Q. exit code 가 왜 필요한가요?

 

파이썬과 같이 try ~ exept 예외처리문 처럼 리턴값에 따라 분기 처리를 하기 위해 필요합니다.

특정 shell script 는 작성하다보면 언제는 정상적으로 작동하지만 언제는 실패하는 경우가 있을 수 있습니다.

 

Q. exit code 값들은 무엇을 의미 하나요??

 

" echo $? " 마지막으로 수행된 명령의 리턴값을 확인할 수 있으며  리턴값은 0 ~ 255 까지 있습니다.
 (  0 을 제외한 나머지 값은 에러값을 의미합니다. )

 

     0 :         Success
     1 :         General Error   
     2 :         built-in shell command Error
     126 :     Command invoked cannot execute       (Command 가 존재하지만 실행 불가)
     127 :     "command not found"                            (Command 가 존재하지 않음)
     128 :     Invalid argument to exit                  
     128+n : Fatal error signal "n"                          
     130 :     Script terminated by Control-C         
     255+ :   Exit status out of range                   

 

exit code 의 종류

tldp.org
legendre13.log 

 

 

 

shell script 에서는  exit 명령에 인자값을 주어 특정 에러값을 반환할 수 있습니다.

#!/bin/bash

touch exit-code.txt

exit 23

> echo $? 
23

 

 

 

'🐧Linux > 📟Shell' 카테고리의 다른 글

SSH 키 기반 인증? ssh-copy-id?  (0) 2022.12.17
WSL2 ( set init process to systemd )  (0) 2022.12.11

글을 쓰기 앞서 이곳을 참조하여 공부했습니다. 

(틀린 내용이 있을 수 있으니 지적해주시면 바로 반영하겠습니다.)

 

Q. iptables 가 뭔가요?

 

보통 데스크탑에서 자주 사용하는 운영체제인 Windows에 방화벽🧱 이 있듯이 

Linux 에도 iptables 라는 방화벽 기능이 있습니다.  ( Linux Kernel v2.4 이전에는 ipchains로 사용되었습니다. )

 

Legacy : iptables

Cloud : Security Group

Container : Network Policy

 

Q. iptables 가 뭘하나요?

 

iptables 기능은 Kernel 상에서 netfilter 라는 패킷필터링 기능을 사용자 공간에서 사용할 수 있게 해줍니다.

기본적으로 Network Device 에 설정값으로 Kernel 이 패킷들을 필터링을 하지만 인위적으로 필터링할 패킷들을 설정하기 위해 사용할 수 있습니다.

 

Q. 패킷필터링은 뭔가요?

 

Kernel 이 수신하는 트래픽 (패킷) 의 헤더를 보고 그 전체 패킷의 방향을 결정하는 것을 말합니다.

일반적으로 패킷은 헤더데이터를 가지고 있습니다.

UDP Header

UDP 프로토콜의 헤더 입니다. ( 이외에도  TCP, IP , ARP, ... 등의 프로토콜 헤더가 있습니다. 여기 참조)

Destination Port 를 확인하여 패킷의 목적지로 확인되면 패킷을 허용(ACCEPT) 합니다.

 

Q. iptables 를 어떻게 사용하나요?

 

iptables 는 특정 패킷필터링을 하기 위해 정책을 설정해주어야 합니다. 

현재 Server 를 기점으로  

  INPUT  : Server 로 들어오는 트래픽 정책

  OUTPUT : Server로부터 나가는 트래픽 정책

  FORWARD : Server가 트래픽을 전달하는 트래픽 정책

 

 

마스커레이드 (Masquerade)
 - 내부 사설 IP의 PC들이 외부 인터넷이 연결 가능하도록 해주는 기능

 

NAT (Network Address Translation) : 네트워크 주소 변환 서비스
 - SNAT (Source NAT) : 내부 사설IP에서 외부로 나갈 때 공인IP로 변환 
 - DNAT (Destination NAT) : 외부에서 방화벽(외부IP)으로 요청되는 주소로 내부사설IP로 변환

 

 

일반적으로 INPUT 정책은 보안에 큰 영향을 주기 때문에 안전한 정책을 설정해주어야 하지만

OUTPUT 정책의 경우는 대부분 수신한 곳으로 응답을 해주는 역할이기 때문에 큰 영향이 없다.

 

정책 

 -  ACCEPT  (허용)

 -  DROP      (폐기)

 - REJECT   (거부)

Command
 규칙 추가
    iptables  -A  INPUT -s [발신지]  --sport [발신지 포트] -d [목적지]  --dport [목적지 포트]  -p [프로토콜] - j [정책] 
   
 규칙 제거
    iptables -D INPUT -s [발신지] --sport [발신지 포트] -d [목적지] --dport [목적지 포트]  -p [프로토콜]  - j [정책]

https://linuxstory1.tistory.com

정책에는 순서가 있으며 내림차순으로 우선 적용됩니다.

따라서, 정책 설정 시  순서에 유의하여 작성해야 합니다.

# 규칙 변경 후 저장
service iptables save    => /etc/sysconfig/iptables 에 저장됩니다.

iptables -L   # 현재 규칙 확인
iptables -F   # 현재 규칙 초기화

 

 

다양한 명령어 활용은 아래를 참조하세요.

trimstray's github
gabia's blog

 

 

 

 

 

 

'📡Network' 카테고리의 다른 글

Load Balancer  (0) 2022.12.11
IP Class , NAT  (0) 2022.08.14
IP  (0) 2022.08.14

+ Recent posts