# 네트워크 관련 패키지 설정

Yocto 프로젝트에서 네트워크 설정과 관련된 다양한 패키지를 추가하고 구성할 수 있다. 이는 주로 `local.conf` 또는 특정 레시피 파일을 통해 설정된다. 다음은 네트워크 관련 패키지를 설정하는 방법에 대한 상세한 설명이다.

**기본 네트워크 패키지**

네트워크의 기본적인 기능을 구현하기 위해 주로 사용되는 몇 가지 주요 패키지들이 있다. 이 패키지들은 인터넷 연결, IP 주소 설정, 네트워크 인터페이스 관리 등을 다룬다.

* **inetutils**: 기본적인 네트워킹 명령어 (예: `ifconfig`, `ping`, `hostname` 등)를 포함한다.
* **net-tools**: 네트워크 상태와 인터페이스를 모니터링하고 설정하는 도구를 포함한다.
* **iw**: 무선 네트워크 설정을 위한 도구이다.
* **wireless-tools**: 무선 네트워크를 설정하고 관리하는 도구 세트이다.

**네트워크 매니저**

복잡한 네트워크 환경을 관리하기 위해 네트워크 매니저를 사용할 수 있다. 네트워크 매니저는 네트워크 인터페이스를 자동으로 설정하고 관리하는 역할을 한다.

* **NetworkManager**: 많은 리눅스 배포판에서 사용되는 네트워크 관리 도구이다. 설정 파일에서 `NetworkManager` 패키지를 추가하여 활성화할 수 있다.

  ```plaintext
  IMAGE_INSTALL_append = " NetworkManager"
  ```

  추가로, NetworkManager를 시스템 데몬으로 설정하고 활성화하는 스크립트를 별도로 작성해야 할 수 있다.

**동적 IP 할당**

DHCP 클라이언트를 사용하여 네트워크 인터페이스에 동적으로 IP 주소를 할당할 수 있다.

* **dhcpcd**: DHCP 클라이언트로, 동적으로 IP 주소를 할당받을 수 있는 도구이다. 다음과 같은 방식으로 레시피에 추가할 수 있다.

  ```plaintext
  IMAGE_INSTALL_append = " dhcpcd"
  ```

  추가 설정 작업은 `dhcpcd` 설정 파일을 편집하여 특정 요구 사항에 맞게 조정할 수 있다.

#### 고정 IP 설정

고정 IP 주소를 사용하려면 네트워크 인터페이스 설정 파일을 편집하여 수동으로 IP 주소를 할당해야 한다.

* **systemd-networkd**: systemd-networkd는 시스템 및 서비스 관리자 systemd의 구성 요소 중 하나로, 네트워크 설정을 관리한다. Yocto 프로젝트에서 사용하려면 다음과 같이 설정할 수 있다.

  ```plaintext
  IMAGE_INSTALL_append = " systemd systemd-networkd"
  ```

  네트워크 설정 파일은 `/etc/systemd/network/`에 위치할 것이다. 특정 네트워크 인터페이스에 대해 고정 IP를 설정하려면 다음과 같은 파일을 생성한다.

  ```plaintext
  [Match]
  Name=eth0

  [Network]
  Address=192.168.1.10/24
  Gateway=192.168.1.1
  DNS=8.8.8.8
  ```

**와이파이 설정**

와이파이를 구성하려면 추가적인 무선 네트워크 도구가 필요하다. 이는 WPA-PSK 방식의 보안을 지원하는 `wpa_supplicant`가 대표적이다.

* **wpa\_supplicant**: 무선 네트워크에서 WPA 및 WPA2와 같은 보안을 사용하려면 wpa\_supplicant 필요하다.

  ```plaintext
  IMAGE_INSTALL_append = " wpa-supplicant"
  ```

  설정 파일을 `/etc/wpa_supplicant/wpa_supplicant.conf`에 다음과 같이 작성한다.

  ```plaintext
  ctrl_interface=/var/run/wpa_supplicant
  update_config=1

  network={
      ssid="Your_SSID"
      psk="Your_PSK"
  }
  ```

**네트워크 디버깅 도구**

네트워크 문제를 해결하기 위해 다양한 디버깅 도구를 사용할 수 있다.

* **tcpdump**: 네트워크 트래픽을 캡처하고 분석하는 도구이다.
* **nmap**: 네트워크 스캔 및 보안 감사 도구이다.

```plaintext
IMAGE_INSTALL_append = " tcpdump nmap"
```

#### 예제 설정

다음은 Yocto 프로젝트에서 네트워크 관련 설정이 포함된 예제 `local.conf` 파일이다.

```plaintext
IMAGE_INSTALL_append = " inetutils net-tools iw wireless-tools wpa-supplicant dhcpcd NetworkManager"

SYSTEMD_SERVICE_networkmanager = "NetworkManager.service"

SYSTEMD_SERVICE_systemd-networkd = "systemd-networkd.service"

IMAGE_INSTALL_append = " tcpdump nmap"
```

이러한 설정은 Yocto 빌드를 통해 특정 네트워크 요구 사항을 충족하도록 하드웨어를 준비하는 데 도움이 될 것이다. 이에 대한 추가적인 설정 예제나 질문이 있는 경우, Yocto 공식 문서 또는 관련 자료를 참조해주세요.
