ex) 경기도 파주시 문향로11 210동 23호 홍길동 = www.naver.com ----> 경기도 파주시 문향로11 홍길동 = asdf@naver.com asdf@naver.com로 보낼시 어디로 보내라고 정해져 있고 만약 정해진게 없다면 순위대로 처리함.
분산 database : 수많은 name server들이 계층형구조(피라미드)로 구조화 되어있다.
트리구조 - 상위:루트 , 선:노드 , 하위: 터미널
네트워크 엣지 (컴퓨터간 네트워크 연결) - 정보보안과 연관되어있음 네트워크 코어 ( 엣지의 네트워크 연결) - 가용성, 무결성등의 문제
DNS의 개요(행정체계를 그대로 가져와서 적용) :호스트명을 IP주소로 변환한다. :호스트에얼리아싱, 정식,별칭호스트명, DNS는 IP뿐만아니라 정식 호스트명을 얻기 위해 이용되기도 한다. 서버장애, traffic집중, 중앙서버 까지의 거리, 관리를 위해 중앙집중식으로 하지 않는다.
트리구조 - 상위:루트 , 선:노드 , 하위: 터미널
www.yahoo.com. > Root DNS servers 하위 DNS서버가 상위 DNS서버에 등록되어 있다.
내가 관리하는 DNS일 경우 상위 DNS에게 주소를 등록해야한다. root dns서버의 ip를 알아야한다.
하위 DNS servers의 주소가 상위 (root) DNS servers에 등록이 되어 있다.
컴퓨터 A의 클라이언트는 ip 주소가 192.168.10.80이고 gateway가 192.168.10.1 DNS 로컬네임서버 주소가 1.1.1.11이라고 가정 할 때 먼저 A라는 컴퓨터가 www.naver.com의 ip 주소가 무엇인지 로컬네임서버에게 묻고 로컬네임서버는 root DNS서버에게 com의 DNS서버 주소가 무엇인지 물어본다. root DNS서버는 로컬네임서버에게 com의 DNS 서버 ip 주소를 알려주고 다시 로컬 네임서버는 com의 DNS서버에게 naver.com의 ip 주소가 무엇인지 물어본다. com의 DNS서버는 로컬네임서버에게 naver.com의 ip주소가 무엇인지 알려주고 로컬네임서버는 클라이언트에게 www.naver.com의 ip주소를 알려준다.
이러한 과정으로 대상 DNS의 ip주소와 ftp서버 주소등의 정보가 zone file로 생성이 되는데 등록된 zone file로 위에 과정을 거치지 않고 바로 클라이언트에게 바로 알려주게 된다.
rsync는 두 시스템 간에 지정한 디렉토리를 동기화한다. - 어떤 시스템은 rsync 서버로 해도 상관없지만 보통 원본 저장 시스템을 서버로 한다. (한쪽은 서버로 한쪽은 클라이언트로)
서버 - 프로그램을 항상 띄어놓음 (메모리 데몬) 클라이언트 - 띄어놓은 프로그램을 사용 rsync 설치 확인 # yum list rsync …… rsync.i386 2.6.8‐3.1 # yum list xinetd …… xinetd.i386 2:2.3.14‐10.SUL2 ---------------서버 관련 파일 데몬 : /usr/bin/rsync 관리 스크립트 : /etc/rc.d/init.d/xinetd 실행 설정 파일 : /etc/xinetd.d/rsync 백업 설정 파일 : /etc/rsyncd.conf 데몬 실행 systemctl [start | stop | restart | status] rsyncd.service
[서비스 명] : 리소스 식별자, client에서 이용한다. path : 백업 경로 comment : 주석 uid : 전송자 UID gid : 전송자 GID use chroot : rsync 경로를 외부에서 / 로 인식한다.(경로는 /home/data인데 /에 들어온거처럼 속이는것 보안상좋음) read only : 읽기 전용으로 접근한다. hosts allow : 접속 허용할 호스트 (클라이언트만 지정) max connections : 동시 접속자 수 timeout : 응답시간(초)
/etc/rsyncd.conf
[backup] path = /backup uid = root gid = root use chroot = yes read only = yes hosts allow = 192.168.10.33 max connections = 1 timeout = 300
systemctl start rsyncd.service
--------------------클라이언트 rsync client 명령을 이용 server의 디렉토리와 client의 디렉토리를 동기화한 다. rsync ‐avz [‐‐delete] source destination rsync ‐avz [‐‐delete] IP::[서비스명] [백업 디렉토리] rsync ‐avz [‐‐delete] [백업 디렉토리] IP::[서비스명] rsync 명령 옵션 ‐v : 작업내역 출력 ‐a : archive mode 작업, 심볼릭 링크, 권한 등 모든 내용을 보존한다. ‐z : 파일을 압축 전송한다. ‐‐delete : source에서 지워진 파일을 destination에서도 지워준다.(완전 동기화)
rsync 명령을 cron에 등록한다. 매일 새벽 1시에 백업 수행 00 01 * * * rsync ‐avz 192.168.10.32::backup /backup
=> rsync --daemon 입력 => 네트워크 매니저 비활성화 => /etc/selinux/config -> SELINUX=disabled로 변경
서비스와 데몬은 구분하지 않아도 된다. 이둘은 사용자의 요청 시점이 아니라 임 의의 시점(보통 시스템 boot)에서 background process로 시작되어 사용자나 프 로세스에 서비스를 제공하는 프로그램을 의미한다.
방식 Stand Alone - 스스로 listen하며 항상 메모리에 상주한다. - 서비스 요청에 즉시 대응 가능하다. - 서비스 요청이 매우 드물거나 idle 한 경우 메모리를 낭비한다. Super Daemon - Listen을 직접하지 않는다. - 메모리에 상주하지 않으며 서비스 요청이 있을때 xinetd에 의해 호출된다. - 거의 사라진 시스템이다.
윈도우2019 서버 원격접속 windows server - user group 로컬 계정 - 이 컴퓨터에 등록된 계정 사용자이름 - 계정이름 , 전체이름 - 진짜이름 사용자 계정 생성방법 3가지 1. 제어판 - 사용자 계정 - 사용자 계정 - 계정 관리 - 사용자 계정 추가 2. lusrmgr.msc실행 (msc는 실행파일) - 사용자 폴더 오른쪽클릭 - 새 사용자 3. 제어판 - 시스템 및 보안 - 관리도구 - 컴퓨터 관리 - 사용자 폴더 오른쪽클릭 - 새 사용자
그룹 생성 제어판 - 시스템 및 보안 - 관리도구 - 컴퓨터 관리 - 그룹 폴더 오른쪽클릭 - 새 그룹 - 사용자 이름;
st01_KCK st01 (admin) st그룹에 속하게 st11/aqsw12!@ st13/aqsw12!@
grop : st user : st01, st11, st13
CentOS07 원격접속
FTP 접속과 epel 다운로드 # yum install -y ftp # ftp 192.168.10.11 접속 정보 : data/asdf1234 ftp> cd /data/down/security ftp> get epel-release-7-11.noarch.rpm ftp> quit
프로그램 설치 # rpm -ivh epel-release-7-11.noarch.rpm # yum install -y xrdp # yum install -y xrdp tigervnc-server
rpm은 Redhat 사에서 제공하는 리눅스용 프로그램을 배포하는 기술로 프로그램의 설치, 검증, 삭제 등의 다양한 기능을 제공해준다.
# rpm ‐qa : 시스템에 설치된 모든 패키지명 # rpm ‐qi 패키지명 : 패키지의 상세한 정보 # rpm ‐ql 패키지명 : 패키지의 파일 리스트 # rpm ‐qf 파일명 : 지정한 파일이 포함된 패키지
설치 및 업그레이드 # rpm [‐ivh | ‐Uvh | ‐Fvh] 패키지명 옵션 ‐i : 설치 ‐U : 업그레이드 (이전버젼 미설치시 ‐i와 동일) ‐F : 업그레이드만 ‐v : 설치과정 출력 ‐h : 설치정도 출력
삭제 # rpm ‐e 패키지명 지정한 패키지를 삭제한다.
주요 추가 옵션 옵션 ‐‐nodeps : 의존성을 무시하고 작업한다. (삭제에 주로 이용) ‐‐force : 같은 버전의 패키지나 파일이 있어도 무시하고 작업진행 ‐‐oldpackage : 다운그레이드시 사용
YUM은 rpm의 고질적인 문제인 의존성 을 해소하기 하기 위한 패키지 기술로 RPM과 동일한 형식의 설치 구조를 지원한다.인터넷 repository를 이용하는 기술로 인터넷만 연결되어 있다면 지원되 는 모든 프로그램을 설치 관리 할 수 있다.
yum list 패키지를 확인한다. # yum list [installed | updates | available | 패키지명] 설치 가능한 모든 패키지 목록을 보여준다. installed : 설치된 패키지 목록을 보여준다 updates : 업데이트된(가능한) 패키지 목록을 보여준다. available : 설치 가능한 패키지 목록을 보여준다. 패키지명 : 패키지의 설치 여부와 update 정보를 보여준다.
검색 추가 옵션 repolist, search, provide # yum repolist 시스템에 등록된 repository list를 출력한다. # yum search 문자열 패키지명이나 description에 문자열이 포함된 패키지들을 출력한다. # yum provides 경로/문자열 문자열이 포함된 파일이 소속된 패키지들을 출력한다.
설치 # yum install [‐y] 패키지명 패키지를 repository로 부터 설치한다. ( -y를 해주면 묻지 않고 바로 설치 된다. ) 업데이트 # yum update [‐y] 패키지명 패키지를 repository로 부터 업데이트한다. ( 업데이트 버전의 안정성이 검증되기 전 함부로 업데이트 하면은 안된다.)
Group package 확인과 설치 # yum group [list | install "그룹" | remove "그룹" | info "그룹"] list : 그룹 목록을 출력한다. install "그룹" : 그룹을 설치한다. remove "그룹" : 그룹을 제거한다. info "그룹" : 그룹의 정보를 검색한다. 그룹은 Environment 그룹과 패키지 그룹으로 나뉘며 CentOS7부터 지원되는 Environment 그룹은 패키지 그룹에 비해 OS 구성의 기본이 되는 대단위 그룹을 의미 한다. 최소 설치로 설치한 뒤 패키지를 추가 할 수 있다.
[st01@dal ~]$ smbpasswd Old SMB password: 12 New SMB password: 윈도우 개인계정 로그인 비밀번호 Retype new SMB password: 윈도우 개인계정 로그인 비밀번호 Password changed for user st01 [st01@dal ~]$
네트워크 > \\192.168.10.11\ st01폴더 오른쪽클릭 네트워크드라이브연결 z드라이브 설정후 마침 내PC에 z드라이브가 생성되었고 안에 파일질라를 통해서 보이던 홈디렉토리가 있고 수업자료와 데이터를 다운받거나 올릴 수 있다.
파일시스템과 파티션
프라이머리 파티션은 물리적인 구간 1,2,3,4로 나눌수있다. extanded 파티션 많이 나눌 수 있다. logical 파티션은 extanded 파티션 내에 만들어지며 사용은 프라이머리 파티션과 동일하다. extanded 사용하려면 logical로 채워야한다. P,E : 1,2,3,4 L : 5,6,7,8....
df : 현재 디스크에 파티션이 어떻게 나눠져 있나 볼 수 있다. -T : 파일 시스템 타입까지 출력 -h : 읽기 쉬운 단위로 출력
fdisk : 파티션 나누는 명령어 /dev/sdb - fdisk : /dev/sdb1/, /dev/sdb2
파티션을 디렉토리에 연결 -> 마운트(mount)
fdisk 디스크명 fdisk /dev/sda 20G 하드를 절반만 쓴다고 하면 +10G
mkfs : 파티션에 파일 시스템을 생성한다.
mkfs -t 파일시스템 타입 파티션명
예) mkfs -t xfs /dev/sda1 -> mkfs.xfs -f /dev/sda1 파일 시스템이 재구성 되는 경우 mkfs.xfs에서 사용하는 -f 가 반드시 필요한 경우가 있다.
mount : 파일시스템은 지정한 디렉토리에 연결해서 사용 가능하도록 한다. mount -a -t FStype 장치명 디렉토리 -a : /etc/fstab의 내용을 읽어 모두 mount 한다. -t : 파일 시스템 양식을 정한다. -o : 마운트 옵션을 추가로 지정한다. 예) mount ‐t ext3 /dev/sdb1 /data1 mount ‐t iso9660 /dev/cdrom /cdrom mount ‐o ro /dev/sdb1 /home2 mount ‐a
먼저 파티션을 만고 만든 파티션에 파일시스템을 만들고 디렉토리에 파티션을 마운트한다.
blkid 파티션의 정보 확인
UUID는 파티션의 고유 정보로 디스크의 위치가 바뀌어도 동일하게 유지된다 UUID는 mount 명령에서 이용 가능하다.
tar : 파일 여러개를 하나의 파일로 만드는 것 (파일 여러개를 압축디바이스 파일로 보내는 것) 용량은 줄어들지 않는다. # tar [옵션] [압축파일명] [대상] -c : 압축 -x : 풀기 -v : 작업내용을 출력 -z : gzip를 이용 압축(압축해제) -j : bzip2 이용 -f : 파일명을 지정 -p : 퍼미션 유지 -cvfz 압축할때 -xvfz 압축풀때
압축할땐 반드시 디렉토리를 압축
tar 를 이용한 증분 백업 : 오늘 모두 백업 , 다음날 변경된 부분만 백업 # tar cvfz 압축파일명 -g 백업정보 파일 대상
복구는 반드시 압축순으로 해제한다.
clock : 리눅스 시스템에 탑재된 BIOS의 시간을 출력하거나 변경한다.
# clock 옵션 -r : BIOS의 시간을 읽어 표준 출력으로 출력한다. -w : 시스템의 시간을 이용 시간을 변경한다. -s : BIOS의 시간으로 시스템의 시간을 변경한다.
date : 지정한 포맷으로 시스템의 날짜를 출력한다. # date 포맷
포맷(시간) 시 : %H(00..23), %(01..12), %k(0..23), %l(1..12), %p(AM,PM) 분 : %M(00..59) 초 : %S(00..59) 시간 : %r(hh12:mm:ss AM), %T(hh24:mm:ss), %X (로케일) 기타 : %s (1970년 1월 1일 이후 경과된 초) 포맷(날짜) 년 : %Y(YYYY), %y(yy) 월 : %m(01..12), %B(January .. December), %b(Jan .. Dec) 일 : %d(01..31) 요일 : %A(Sunday .. Saturday), %a(Sun .. Sat), %w(0..6) 기타 : %D(mm/dd/yy), %x(로케일), %j(00..365)
rdate : 인터넷상에 제공되는 서버로부터 시간정보를 받아 시간을 출력하거나 시스템의 시간을 재설정한다. 1년에 한번정도 실해주면 좋다. # rdate 옵션 시간제공서버주소 ‐p : 타임 서버로 부터 제공된 시간을 출력한다. ‐s : 타임 서버로 부터 제공된 시간을 이용 시스템의 시간을 재 설정한다.
rdate -s time.bora.net autoexec.bat /etc/rc.d/rc.local 여기에 적어야함
사용자 관리
사용자 등록 정보 ‐ /etc/passwd ‐ 사용자의 기본 등록 정보가 저장 ‐ 사용자 패스워드의 경우 shadow password 사용 ‐ useradd 명령을 이용 등록 ‐ 사용자의 직접수정이 가능(추천하지 않는다)
# cat /etc/passwd root:x:0:0:root:/root:/bin/bash
계정:암호:UID:GID:주석:홈디렉토리:쉘
사용자 패스워드, 암호정책 정보 ‐ /etc/shadow # cat /etc/shadow ………… ora12c:$6$2JwICah……94Bf2S9Bq/:18162:0:99999:7::: 계정 : 암호 : 최종변경일 : 암호최소사용일: 암호최대유효기간 : 암호 만료까지 경고기간 : 암호만료뒤 계정 폐쇠까지 기간 : 계정의 만료일 : 예비
일반사용자의 패스워드 정책은 /etc/passwd 파일을 통해 계정,암호,UID,GID주석,홈디렉토리,쉘 까지만 알수있다. 관리자의 패스워드 정책은 /etc/passwd 파일 통한 정보 뿐만 아니라 /etc/shadow 파일을 통해 계정, 암호 ,최종변경일, 계정 암호 최종변경일, 암호최소사용일, 암호최대유효기간, 암호 만료까지 경고기간, 암호만료뒤 계정 폐쇠까지 기간, 계정의 만료일, 예비를 알수있고 명령어 pwconv를 사용하여 shadow파일을 활성화하거나 pwunconv를 사용하여 비활성화시킬수 있다.
# cat /etc/shadow ………… ora12c:$6 $bo580c3Q$ te9……9f2S9Bq/:18162:0:99999:7::: $6 : 해시 알고리즘 - 1:MD5, 5:SHA256, 6:SHA512, 2a:Blowfish $bo580c3Q$ : salt te9……9f2S9Bq/ : salt + passwd 의 해시값
그룹관리 = 권한관리 /etc/group - groupadd 명령을 이용하여 그룹 등록 # cat /etc/group root:x:0: 그룹명:암호:GID:소속계정 계정은 여러 그룹에 속하고 기본 소속 그룹은 /etc/passwd 파일에 등록 된다.
그룹먼저 만들고 사람들어가야함 GID 넘버로 구분(직접 지정해야함)
그룹 등록 - 사용자를 등록하기 전에 반드시 사용자가 속할 그룹이 먼저 만들어져 있어야함. # groupadd -g 그룹번호(1000,1001.1100등등) 그룹명 ex) groupadd -g 1000 그룹명
-g : 생성 그룹의 GID번호 지정 (1000바깥번호부터지정) -r : 1000번 이하의 GID번호를 자동으로 할당한다. 잘쓰지 않음. -o : 중복된 GID 번호 할당이 가능 되도록이면 안쓰는게 좋음.
groupdel 그룹삭제는 반드시 그룹명을 이용한다. # groupdel 그룹명
사용자 계정 # useradd 옵션 사용자명 옵션 ‐u : uid지정 ‐g : gid나 그룹명지정 (default : 계정명) ‐d : 홈디렉토리 지정 (default : /home/[계정명]) ‐G : 보조 그룹 지정 ‐D : 기본 설정 확인 및 변경 ‐s : 쉘 지정 . 로그인이 필요 없는 관리용 계정은 /sbin/nologin으로 설정한다.
사용자 삭제 userdel -r 사용자명 옵션 ‐r : 계정에 귀속된 홈디렉토리와 mailbox등을 모두 삭제한다. - 계정 삭제시 반드시 사용한다.
passwd 사용자의 암호 변경 관리자는 다른 사용자의 암호를 임의로 변경 할 수 있다. (단 다른 사용자의 암호를 확인 할 수는 없다) # passwd [사용자계정] # passwd
패스프레이즈 길게쓰는것, 해킹여부가 의심될 때 변경으로 권고 패스워드 크랙해서 안전하다는 패스워드를 쓴다.
그룹과 계정을 쉽게 만들줄 알아야한다. 사용자 계정과 비밀번호는 인쇄해서 가지고 있어야한다.
# command [‐단일문자옵션] [‐‐다중 문자 옵션] 단일 문자로 구성된 옵션은 동시에 여러 개를 지정할 수 있다. ex) ls –a –l 이런 표현은 다음과 같이 표현 가능하다.
디렉토리란 파일을 담고 있는 일종의 방이다. 디렉토리 및 파일의 표현 방법 절대 경로 표현방법 : / 디렉토리를 기준으로 표현하는 방법 상대 경로 표현방법 : 현재 위치(./)를 기준으로 표현하는 방법
디렉토리의 표현 / : 최상위 root 디렉토리 (절대경로 표현의 기준) ./ : 현재 디렉토리 (상대경로 표현의 기준 : 생략가능) ../ : 현디렉토리의 상위 디렉토리 ~/ : 각 사용자의 홈디렉토리 디렉토리는 파일의 일종이다. (윈도우의 C:\를 생각하면 쉽다.) 이름 : 최대 255자이고 대소문자 구별과 확장자가 없다.
cd : 디렉토리를 이동하는 명령어, 보통 옵션이 없이 사용한다. # cd [이동할 디렉토리명] pwd 현재 위치한 디렉토리를 절대경로 표현법으로 출력한다.
rmdir 지정한 디렉토리를 삭제한다. 디렉토리가 비워져 있는 경우만 삭제 가능하다.
mkdir :지정한 디렉토리를 생성한다. 생성된 디렉토리는 생성한 유저의 소유가 된다. ‐p, ‐‐parents : 필요하다면 생성하고자 하는 상위의 디렉토리까지 생성한다. ‐‐version : 버전 정보를 보여준다.
명령어 cd, pwd, mkdir, rmdir
tree : 디렉토리 구조를 출력한다. ‐d : 디렉토리만 출력한다. *(미 설치시 : yum install ‐y tree 입력)
명령어 tree
ls : 현재 디렉토리의 목록을 출력한다. ‐a, ‐‐all : 숨겨진 파일의 목록까지 출력 ‐l : 파일에 대한 정보를 자세히 출력 ‐R : 하위 디렉토리의 내용까지 출력 ‐h : 사람이 이해하기 쉽도록 파일의 크기를 출력 ‐k : kb단위로 파일의 크기출력 ‐i : 파일의 inode 번호를 같이 출력 (고유번호)
리다이렉트 표준 입출력 지시자 > : 표준 출력 지시자 # command > 파일 : 명령 결과를 파일로 저장 >> : 추가 표준 출력 지시자 # command >> 파일 : 명령 결과를 파일에 추가 < : 표준 입력 지시자 # command < 파일 : 파일의 내용을 명령의 입력 값으로 사용
cat # cat [옵션] [출력 대상 파일] 옵션 ‐n : 행 단위 번호 ‐b : 공백 라인을 제외하고 행 단위 번호
cat : 파일의 입출력 제어 # cat [< 입력파일 > 출력파일] 기본 입력 파일 : 키보드 기본 출력 파일 : CRT 입력 파일의 경우 < 기호 생략 가능 >> : 출력파일이 존재하는 경우 내용추가 # cat a.txt # cat < a.txt > b.txt
echo : 환경 변수나 입력내용을 출력 # echo [환경변수 | 문자열] 리다이렉트를 이용하면 파일을 생성할 수도 있다. ex> # echo $HOME # echo '$HOME'
명령어 echo, cat
env : 모든 환경 변수를 출력한다.
cp : 파일이나 디렉토리를 복사한다. # cp [옵션] 원본파일 복사파일명 옵션 ‐a : 원본의 속성유지 ‐r : 하위 디렉토리나 파일모두 복사 ‐f : 강제 실행 ‐p : 파일의 소유와 권한등을 보존한채 복사 ‐u : 새파일 덮어쓰기 금지
mv : 파일이나 디렉토리를 이동한다. # mv [옵션] 원본파일 이동파일명 옵션 ‐f : 강제 실행 ‐b : 파일이 덮어 쓰여질 경우 백업파일 생성 ‐d : 디렉토리 삭제 ‐i : 삭제 전 삭제여부 확인 ‐v : 백업 파일 생성
rm : 파일이나 디렉토리를 삭제한다. # rm [옵션] 대상파일 옵션 ‐f : 강제 실행 ‐r : 대상 중에 디렉토리가 있는 경우 디렉토리도 삭제
ping : 도메인사용하지 않는다, ->내가 도메인으로 ping을 보내면 컴퓨터는 DNS에게 해당 사이트의 ip주소를 물어보고 그 주소로 패킷을 주고받음
tracert : 어디까지 갈때 라우터를 얼마나 거치는지 확인할때 씀
ARP : mac주소를 모를때 사용, 상대방의 Ip 주소는 알지만 mac주소를 모를때 받는 MAC주소를 FF:FF:FF:FF:FF:FF로 받게 보낸다음 ARP 요청으로 받은 dns가 MAC주소를 ARP보냄으로 ARP는 상대방의 IP주소는 알고 있지만 MAC주소를 모를때 보내는 패킷에 MAC주소를 FF:FF:FF:FF:FF:FF로 모두가 수신할 수 있게 보내고 수신한 호스트는 IP주소와 MAC주소를 ARP응답으로 메세지를 전송한다.
특징 : IP에 의해 자동으로 호출된다, 보안기능 없어 스푸핑 공격에 취약 질의 : broadcast 다보냄 응답 : unicast
하나의 물리적인 인터페이스를 여러 개의 논리적인 인터페이스로 구현 ip를 여러 개 설정하는 방법 ifconfig 명령을 이용한다 ifconfig ens32 ifconfig ens32 [ip] netmask [NETMASK] 파일 수정이 아니여서 바로 적용됨 리부팅하면 사라짐 다운시키는 방법 ifconfig ens32:0 down 부팅시 자동으로 실행하는 방법 - rc.loacl 에 넣는다.
B의 ip주소 5.4.3.11/24에서 메세지를 gateway 5.4.3.1 을 통하여 ip주소 1.2.3.255/24에서 gateway 1.2.3.5인 ens33으로 전달하게 되고 다시 메세지는 ens32( ip주소 3.2.1.5/24) 를 빠져나와 gateway 3.2.1.1로 들어가서 R1에게 도착하게 된다.
A에서 B에게 메세지를 보내자고 할때 같은 네트워크 상에 있지만 gateway주소를 route add 명령어를 이용하여
gateway를 추가해 주어야 한다. ( 5.4.3.0~5.4.3.255 -> 1.2.3.255)