mirror of
https://github.com/jung-geun/policy-routing.git
synced 2025-12-20 02:34:39 +09:00
95 lines
3.0 KiB
Markdown
95 lines
3.0 KiB
Markdown
# Policy Routing
|
|
|
|
이 프로젝트는 정책 기반 라우팅을 구현하기 위한 Python 스크립트입니다. 이 스크립트는 특정 IP 주소에 대해 지정된 게이트웨이를 사용하여 패킷을 라우팅합니다.
|
|
|
|
사전 조건으로는 `iproute2` 패키지가 설치되어 있어야 하며, 이 패키지는 Linux 시스템에서 네트워크 인터페이스와 라우팅 테이블을 관리하는 데 사용됩니다.
|
|
NIC 의 ip 설정이 미리 되어 있어야 합니다.
|
|
|
|
## 기능
|
|
|
|
- 특정 IP 주소에 대해 지정된 게이트웨이를 사용하여 패킷 라우팅
|
|
- 라우팅 테이블을 생성하고, 해당 테이블에 규칙을 추가하여 정책 기반 라우팅을 구현
|
|
- 자동으로 NIC를 검색하고, 해당 NIC에 대한 라우팅 테이블을 설정
|
|
|
|
# 사용 방법
|
|
|
|
## 로컬에 자동 PBR 시스템 구성
|
|
|
|
스크립트는 아래 명령어로 다운로드 받을 수 있습니다
|
|
|
|
```bash
|
|
wget -O policy_routing.py https://git.dmslab.xyz/dmslab/policy-routing/-/raw/v0.3/policy_routing.py
|
|
# or
|
|
curl -o policy_routing.py https://git.dmslab.xyz/dmslab/policy-routing/-/raw/v0.3/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
|
|
```
|