우분투 gre tunnel 구성방법

Ubuntu에서 GRE 터널을 구성하는 방법을 단계별로 설명해드리겠습니다.
현재 사용 중인 환경을 고려하여 적절한 설정을 적용하시면 됩니다.


1. GRE 터널 개요

GRE(Generic Routing Encapsulation) 터널은 IP 패킷을 캡슐화하여 두 개의 네트워크를 연결하는 데 사용됩니다.
예제 네트워크:

  • Host A (터널 서버)
    • 공인 IP: 61.78.91.29
    • 내부 IP: 10.0.0.1
  • Host B (터널 클라이언트)
    • 공인 IP: 210.204.243.32
    • 내부 IP: 10.0.0.2

2. ip_gre 커널 모듈 로드

두 서버에서 GRE 터널을 사용하려면 커널 모듈을 로드해야 합니다.

sudo modprobe ip_gre

모듈이 정상적으로 로드되었는지 확인:

lsmod | grep gre

3. Host A에서 GRE 터널 설정

3.1. GRE 터널 인터페이스 생성

sudo ip tunnel add gre1 mode gre remote 210.204.243.32 local 61.78.91.29 ttl 255
  • gre1: 터널 인터페이스 이름
  • mode gre: GRE 모드 사용
  • remote 210.204.243.32: 원격(Host B)의 공인 IP
  • local 61.78.91.29: 로컬(Host A)의 공인 IP
  • ttl 255: 패킷의 TTL 설정

3.2. 터널 인터페이스 활성화 및 IP 설정

sudo ip link set gre1 up
sudo ip addr add 10.0.0.1/24 dev gre1

4. Host B에서 GRE 터널 설정

4.1. GRE 터널 인터페이스 생성

sudo ip tunnel add gre1 mode gre remote 61.78.91.29 local 210.204.243.32 ttl 255

4.2. 터널 인터페이스 활성화 및 IP 설정

sudo ip link set gre1 up
sudo ip addr add 10.0.0.2/24 dev gre1

5. 라우팅 설정

터널을 통해 통신이 가능하도록 라우팅 설정을 추가합니다.

5.1. Host A에서 설정

sudo ip route add 10.0.0.2/32 dev gre1

5.2. Host B에서 설정

sudo ip route add 10.0.0.1/32 dev gre1

6. 방화벽 (iptables) 설정

GRE 프로토콜(IP proto 47)을 허용해야 합니다.

6.1. Host A에서 방화벽 설정

sudo iptables -A INPUT -p 47 -s 210.204.243.32 -j ACCEPT
sudo iptables -A OUTPUT -p 47 -d 210.204.243.32 -j ACCEPT

6.2. Host B에서 방화벽 설정

sudo iptables -A INPUT -p 47 -s 61.78.91.29 -j ACCEPT
sudo iptables -A OUTPUT -p 47 -d 61.78.91.29 -j ACCEPT

7. 설정 영구 적용

재부팅 후에도 터널이 유지되도록 설정을 저장해야 합니다.

7.1. sysctl 설정 (IP 포워딩 활성화)

echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

7.2. 네트워크 설정 (/etc/network/interfaces)

Host A (/etc/network/interfaces)

auto gre1
iface gre1 inet static
address 10.0.0.1
netmask 255.255.255.0
pre-up ip tunnel add gre1 mode gre remote 210.204.243.32 local 61.78.91.29 ttl 255
post-down ip tunnel del gre1

Host B (/etc/network/interfaces)

auto gre1
iface gre1 inet static
address 10.0.0.2
netmask 255.255.255.0
pre-up ip tunnel add gre1 mode gre remote 61.78.91.29 local 210.204.243.32 ttl 255
post-down ip tunnel del gre1

적용 후 네트워크 서비스 재시작:

sudo systemctl restart networking

8. 연결 테스트

8.1. Host A에서 Host B 핑 테스트

ping -c 4 10.0.0.2

8.2. Host B에서 Host A 핑 테스트

ping -c 4 10.0.0.1

핑이 정상적으로 되면 GRE 터널이 성공적으로 연결된 것입니다.


9. 추가 설정: NAT 사용 (선택 사항)

터널을 통해 외부로 나가는 트래픽을 NAT로 변환하려면 iptables에 NAT 설정을 추가해야 합니다.

9.1. Host A에서 NAT 설정

sudo iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE

9.2. Host B에서 NAT 설정

sudo iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE

이제 GRE 터널을 통해 내부 IP를 외부 네트워크에서 사용할 수 있습니다.


이 설정을 적용하면 Host A와 Host B 간의 GRE 터널이 정상적으로 동작하며, 내부 네트워크(10.0.0.0/24)를 통해 서로 통신할 수 있습니다.

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다