Files
policy-routing/README.md

95 lines
3.1 KiB
Markdown

# Policy Routing
이 프로젝트는 정책 기반 라우팅을 구현하기 위한 Python 스크립트입니다. 이 스크립트는 특정 IP 주소에 대해 지정된 게이트웨이를 사용하여 패킷을 라우팅합니다.
사전 조건으로는 `iproute2` 패키지가 설치되어 있어야 하며, 이 패키지는 Linux 시스템에서 네트워크 인터페이스와 라우팅 테이블을 관리하는 데 사용됩니다.
NIC 의 ip 설정이 미리 되어 있어야 합니다.
## 기능
- 특정 IP 주소에 대해 지정된 게이트웨이를 사용하여 패킷 라우팅
- 라우팅 테이블을 생성하고, 해당 테이블에 규칙을 추가하여 정책 기반 라우팅을 구현
- 자동으로 NIC를 검색하고, 해당 NIC에 대한 라우팅 테이블을 설정
# 사용 방법
## 로컬에 자동 PBR 시스템 구성
스크립트는 아래 명령어로 다운로드 받을 수 있습니다
```bash
wget -O policy_routing.py https://raw.githubusercontent.com/jung-geun/policy-routing/main/policy_routing.py
# or
curl -o policy_routing.py https://raw.githubusercontent.com/jung-geun/policy-routing/main/policy_routing.py
```
다운로드한 스크립트를 setup 옵션으로 시스템 데몬으로 설치할 수 있습니다
```bash
sudo python3 policy_routing.py setup
```
ip rule 을 확인하여 정책 기반 라우팅이 설정되었는지 확인할 수 있습니다.
```bash
ip rule ls
```
## packer 를 사용하여 이미지 배포
openstack 에 자동으로 PBR 시스템을 구성하는 packer template 을 제공합니다.
### Packer 설치
https://developer.hashicorp.com/packer/tutorials/docker-get-started/get-started-install-cli
### Packer OpenStack plugin 설치
openstack 에서 사용할 수 있게 하려면 Packer OpenStack 플러그인을 설치해야 합니다. 아래 명령어를 사용하여 설치할 수 있습니다.
```bash
packer plugins install github.com/hashicorp/openstack
```
### Packer OpenStack 템플릿 설정
packer 를 사용하기 전에 openrc를 설정해야합니다
```bash
vi admin-openrc
```
설정 파일 내용은 아래 내용들을 채워야합니다.
```bash
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_TENANT_NAME=$OS_PROJECT_NAME
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASSWORD
export OS_AUTH_URL=http://OPENSTACK_KEYSTONE_HOST/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
export OS_SOURCE_IMAGE_ID=원본_이미지_ID
export OS_NETWORK_NAME=이미지_빌드에_사용할_네트워크_ID
export OS_FLOATING_IP_POOL=플로팅_IP_풀_이름
```
위 환경 변수들은 실제 환경에 맞게 수정해야 합니다. 예를 들어, `ADMIN_PASSWORD`는 OpenStack 관리자의 비밀번호로 설정해야 하며, `OPENSTACK_KEYSTONE_HOST`는 OpenStack Keystone 서비스의 호스트 주소로 설정해야 합니다.
```bash
source admin-openrc
```
packer 를 실행할 수 있는지 확인합니다.
```bash
packer validate packer-openstack-ubuntu.json
```
### Packer OpenStack 템플릿 실행
```bash
packer build packer-openstack-ubuntu.json
```