Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2월 4주차 회고 #34

Merged
merged 4 commits into from
Feb 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/sk-lim19f/2024-02-16.md
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ $TTL 3H
ns A 10.1.1.5
```

- 만들어진존 파일은 bind에서 사용할 수 있도록 권한 수정
- 만들어진 존 파일은 bind에서 사용할 수 있도록 권한 수정

```
$ chown root:named /var/named/zigispace.kr.zone
Expand Down
Binary file added docs/sk-lim19f/2024-02-18.JPEG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
92 changes: 92 additions & 0 deletions docs/sk-lim19f/2024-02-18.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
## 7.4 DHCP

- 정적 할당: 수동으로 IP와 네트워크 정보를 직접 설정하는 것
- 동적 할당: 자동으로 설정하는 것
- IP를 동적으로 할당하는 데 사용되는 프로토콜이 DHCP
- DHCP를 사용하면 사용자가 직접 입력해야 하는 IP 주소, 서브넷 마스크, 게이트웨이, DNS 정보를 자동으로 할당받아 사용할 수 있음
- 별도의 IP 설정 작업이 필요없어 사용자와 관리자 모두 편리하게 네트워크에 접속할 수 있고 사용하지 않는 IP 정보는 회수되어 사용하는 경우에만 재할당되어 사용자 이동이 많고 한정된 IP 주소를 가진 경우 유용하게 사용될 수 있음
- 또한, IP가 자동으로 관리되므로 사용자가 직접 입력하면서 발생할 수 있는 설정 정보오류나 중복 IP 할당과 같은 문제를 예방할 수 있음

### 7.4.1 DHCP 프로토콜

- DHCP는 BOOTP라는 프로토콜을 기반으로 작동
- DHCP는 BOOTP와 유사하게 동작하지만 BOOTP에서 지원되지 않는 몇 가지 기능이 추가된 확장 프로토콜
- DHCP와 BOOTP 프로토콜 사이에는 호환성이 있어 BOOTP와 DHCP에서 사용되는 서비스 포트가 같고 BOOTP 클라이언트가 DHCP 서버를 사용하거나 DHCP 클라이언트가 BOOTP 서버를 사용해 정보를 수신할 수 있음
- DHCP는 서버와 클라이언트로 동작하며 클라이언트의 서비스 포트는 68(bootpc), 서버의 서비스 포트는 67(bootps)

### 7.4.2 DHCP 동작 방식

- DHCP를 이용해 IP를 자동으로 할당받기 위해 DHCP 클라이언트는 DHCP 서버를 찾기 위한 메시지를 전송하는데 이 메시지를 DHCP Discover 메시지라고 함
- IP를 할당받는 과정이므로 패킷을 정상적으로 주고받을 수 없어 TCP가 아닌 UDP를 사용
- 클라이언트에 IP를 할당할 때는 단순히 IP 주소뿐만 아니라 서브넷, 게이트웨이, DNS 정보와 IP 주소 임대 시간, DHCP 서버 자신의 IP 정보를 포함한 메시지를 DHCP 클라이언트에 전송
- 이 메시지를 DHCP Offer 메시지라고 하며 서버가 클라이언트에 IP 주소 사용을 제한하는 단계
- DHCP 클라이언트는 DHCP 서버로부터 제안받은 IP 정보를 사용하기 위해 DHCP Request 메시지를 DHCP 서버에 전송
- DHCP 서버를 찾기 위한 Discover 메시지를 보낼 때는 현재 DHCP 서버가 어느 서버인지 알 수 없으므로 브로드캐스트로 전송하고 DHCP Request 메시지를 보낼 때도 유니캐스트가 아닌 브로드캐스트로 전송
- 마지막으로 DHCP 서버는 DHCP Request를 보낸 클라이언트에 최종 확인을 위한 응답 메시지 패킷을 보내는데 이것을 DHCP Acknowledgement 메시지라고 하며 내용은 DHCP Offer의 내용과 동일
- DHCP를 통해 IP를 할당할 때는 IP 임대시간이 있음
- DHCP 서버는 클라이언트에 할당할 IP 정보와 함께 임대 시간을 지정해 전달
- 임대 시간이 만료되면 클라이언트에 할당된 IP를 다시 IP Pool로 회수
- 만약 클라이언트가 IP를 사용하는 도중 이렇게 임대시간이 모두 지나면 클라이언트가 사용하던 IP는 다시 수거되고 클라이언트는 다시 처음부터 DHCP Discover부터 시작해 IP를 재할당 받아야 함
- 사용하던 IP 주소가 다른 클라이언트에 할당되면서 다른 IP가 할당될 수도 있음
- 실제 동작 방식은 이처럼 매번 할당받은 IP 주소를 반환하고 다시 새로운 할당을 요청하는 과정을 반복하지는 않음
- 현재 클라이언트가 IP를 사용 중인 경우, 갱신 과정을 거쳐 사용 중인 동안 IP 주소가 IP 풀에서 다시 반환되지 않고 계속 사용 가능

### 7.4.3 DHCP 서버 구성

- DHCP 서버를 구성할 때는 클라이언트에 할당하게 될 IP 주소 풀을 포함해 다양한 속성과 정보를 설정할 수 있음
- IP 주소 풀(IP 범위)
- 클라이언트에 할당할 IP 주소 범위
- 예외 IP 주소 풀(예외 IP 범위)
- 클라이언트에 할당할 IP 주소로 선언된 범위 중 예외적으로 할당하지 않을 대역
- 임대 시간
- 클라이어트에 할당할 IP 주소의 기본 임대 시간
- 서브넷 마스크
- 클라이언트에 할당할 IP 주소에 대한 서브넷 마스크 정보
- 게이트웨이(Router)
- 클라이언트에 할당할 게이트웨이 정보
- DNS
- 클라이언트에 할당할 DNS 주소

#### 7.4.3.2 리눅스에서 DHCP 서버 구성

- dhcp 패키지 설치

```
$ yum install dhcp
```

- dhcp 서버를 구성하기 위해 dhcp 설정 파일 확인

```
/etec/dhcp/dhcpd.conf

DHCP Server Configuration file.
see /usr/share/doc/dhcp*/dhcpd.conf.example
see dhcpd.conf(5) man page
```

- 복사한 샘플 파일이나 man 페이지를 참조해 다음과 같이 설정 파일을 작성

```
default-lease-time 600; // 기본 임대 시간을 600초로 설정
max-lease-time 7200; // 최대 임대 시간을 7200초로 설정

subnet 10.10.10.0 netmask 255.255.255.0 {
range 10.10.10.10. 10.10.10.250; // 10.10.10.0 네트워크에 10.10.10.10 부터 10.10.10.250까지 클라이언트에 IP가 할당

option routers 10.10.10.254; // 디폴트 게이트웨이를 10.10.10.254로 설정
option domain-name-servers 8.8.8.8; // DNS 서버를 8.8.8.8로 설정
}
```

- 설정 파일을 작성한 후 dhcp 서비스 데몬을 실행

```
$ systemctl start dhcpd.service
```

### 7.4.4 DHCP 릴레이

- 여러 네트워크를 가진 환경에서도 DHCP 릴레이 에이전트 기능을 사용하면 DHCP 서버 한 대로 여러 네트워크 대역에서 IP 풀을 관리할 수 있음
- DHCP 릴레이 에이전트가 DHCP 클라이언트와 DHCP 서버가 서로 다른 대역에 있는 경우, DHCP 패킷을 중간에서 중계하는 역할을 해주기 때문
- 즉, 릴레이 에이전트를 이용하면 DHCP 서버를 네트워크마다 구성하지 않고 중앙 DHCP 서버만으로도 여러 네트워크에서 DHCP 환경을 운영할 수 있음
Binary file added docs/sk-lim19f/2024-02-19.JPEG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
78 changes: 78 additions & 0 deletions docs/sk-lim19f/2024-02-19.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# 8. 서버 네트워크 기본

- 서비스를 사용자에게 잘 제공하려면 서버와 네트워크 연결을 통해 통신이 되도록 구성하는 과정이 필요

## 8.1 서버의 네트워크 설정 및 확인

- 서버를 네트워크에 연결해 정상적으로 동작시키려면 먼저 서버에서 환경에 맞는 적절한 네트워크 설정이 필요
- 가장 기본적인 네트워크 설정은 IP 주소, 서브넷, 게이트웨이와 DNS IP 주소

### 8.1.1 리눅스 서버 네트워크

#### 8.1.1.1 CentOS의 네트워크 설정

- CentOS의 네트워크 설정 파일 경로

```
/etc/sysconfig/network-scripts
```

- 네트워크 설정 경로에는 다양한 네트워크 설정용 파일이 있음

```
$ ls /etc/sysconfig/network-scripts

ifcfg-eth0 ifdown-app ifup-ib ifup-Team
ifcfg-lo ifdown-routes ifup-ippp ifup-TeamPort
...
생략
...
```

- 인터페이스 파일(ex: ifcfg-eth0) 설정 예

```
TYPE=Ethernet
ONBOOT=yes // 부팅 시 인터페이스를 활성화시킬 것인지 결정(yes/no)
BOOTPROTO=static // 부팅 시 사용할 프로토콜(none,dhcp,static)
NAME=eth0
DEVICE=eth0
IPADDR=10.1.1.5 // IP 주소
PREFIX=24 // 서브넷 마스크(비트 값으로 표시) 예:24
GATEWAY=10.1.1.1 // 게이트웨이 주소
DNS1=219.250.36.130 // 주 DNS 정보 입력
```

- 리눅스에서는 인터페이스의 설정파일을 수정하더라고 변경한 값이 즉시 적용되지 않음
- 변경된 설정값을 적용하려면 다음 두가지 방법 중 하나를 수행
- 네트워크 서비스 재시작

```
$ systemctl restart network.service
```

- 인터페이스 재시작

```
$ ifdown ifcfg-eth0
$ ifup ifcfg-eth0
```

- 현재 네트워크 인터페이스의 설정값과 상태를 확인하는 방법

```
$ ifconfig
```

- ip 명령어에 address 오브젝트를 사용하면 ifconfig와 유사한 네트워크 정보 확인 가능

```
$ ip address
```

- link 오브젝트를 사용하면 인터페이스로 송수신되는 패킷 정보를 확인할 수 있음
- 인터페이스별로 정상적으로 입력(RX), 출력(TX)된 패킷 수, 에러 패킷, 폐기된 패킷 수 등을 확인할 수 있음

```
$ ip -s link
```
Binary file added docs/sk-lim19f/2024-02-20.JPEG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
107 changes: 107 additions & 0 deletions docs/sk-lim19f/2024-02-20.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
#### 8.1.1.2 우분투의 네트워크 설정

- 우분투의 네트워크 설정 파일

```
/etc/network/interfaces
```

- 우분투 네트워크 설정 예제

```
auto eth0
iface eht0 inet static
address 10.1.1.6
netmask 255.255.255.0
gateway 10.10.10.1
dns-nameserver 10.100.100.2


auto eth1
iface eht1 inet static
address 20.1.1.6
netmask 255.255.255.0
gateway 20.10.10.1
dns-nameserver 219.250.36.130


auto eth2
iface eth2 inet dhcp
```

- 우분투에서 네트워크 서비스를 시작/정지/재시작하기 위해서는 다음 명령어 사용

```
$ /etc/init.d/networking start
$ /etc/init.d/networking stop
$ /etc/init.d/networking reload
$ /etc/init.d/networking restart
$ /etc/init.d/networking force-reload
```

## 8.2 서버의 라우팅 테이블

- 네트워크 장비와 같이 서버에서도 외부 네트워크와 통신하기 위해 라우팅 테이블을 가지고 있음

### 8.2.1 서버의 라우팅 테이블

- 서버의 라우팅 테이블 항목

```
10.10.20.0 24 10.10.10.1 eth1 10
목적지 서브넷 게이트웨이 인터페이스 우선순위
```

- 목적지 네트워크와 서브넷은 서버가 통신하려는 목적지 IP 주소에 맞는 라우팅을 선택하는 기준이 됨
- 라우팅할 때 목적지 네트워크 주소와 서브넷으로 표현되는 목적지 네트워크 범위내에 서버가 통신하려느 IP 줏가 속한 라우팅 테이블을 선택
- 라우팅 테이블의 게이트웨이는 선택한 목적지로 가기위한 넥스트 홉
- 인터페이스는 서버의 네트워크 카드를 말하고 라우팅에서 어떤 물리적인 경로로 패킷을 내보낼지 설정
- 우선순위(메트릭)는 동일한 라우팅 테이블이 두 개 이상 존재할 때 어떤 라우팅 테이블을 선택할지 정하는 값

### 8.2.2 리눅스 서버의 라우팅 확인 및 관리

- 라우팅 테이블을 확인하기 위해서는 ip route 명령어를 사용할 수 있음

```
$ ip route
```

- ip 명령어 외에도 리눅스 서버의 네트워크 상태를 확인할 수 있는 명령어인 netstat에 r 옵션을 추가하면 라우팅 테이블을 편하게 확인할 수 있음

```
$ netstat -r
```

- 여기에 n 옵션을 추가로 사용하면 화면에 표기될 때, 실제 IP 정보가 표기되어 좀 더 직관적인 라우팅 테이블을 확인할 수 있음

```
$ netstat -rn
```

- 서버의 네트워크 인터페이스가 한 개 뿐이라면 서버에 라우팅 테이블을 추가하거나 삭제할 필요가 거의 없음
- 서버가 연결된 동일한 네트워크로는 로컬 통신을 하고 다른 원격지 네트워크에 대해서는 디폴트 라우팅을 통해 게이트웨이로 지정된 인터페이스로 전송하면 되기 때문
- 리눅스 서버에서 라우팅 테이블을 추가하는 설정은 다음과 같음

```
$ route add { -host | -net } Target[/prefix] [gw Gw] [metric M] [[dev] if]
```

- 라우팅 테이블에 우선순위를 부여해 목적지에 대한 게이트웨이를 액티브-스탠바이 형태로 구성할 수 있음
- 더 작은 메트릭 값을 가진 라우팅 테이블이 더 높은 우선순위를 가지게 되어 액티브 상태가 되고 높은 메트릭 값을 가진 라우팅 테이블이 스탠바이 상태가 됨
- 액티브 경로에 문제가 발생하면 라우팅 테이블에서 해당 경로가 삭제되어 스탠바이로 통신이 페일오버(Fail-over)됨

#### 8.2.2.1 CentOS의 영구적 라우팅 설정

- CentOS에서는 다음과 같이 별도 파일을 만들어 라우팅을 설정

```
/etc/sysconfig/network-scripts/route-장치명
```

#### 8.2.2.2 우분투의 영구적 라우팅 설정

- 우분투에서는 네트워크 설정에서 사용했던 interfaces 파일에 라우팅 설정을 함

```
$ up route add [-host|-net] <host/net>/<mask> gw <host/IP> dev <Interface>
```
Binary file added docs/sk-lim19f/2024-02-21.JPEG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading