GRE Tunnel (Generic Routing Enapsulartion)
GRE는 라우팅이 불가능한 패킷을 라우팅 가능한 패킷의 내부에 넣어서 전송할 때 사용하는 터널링 프로토콜이다.
GRE Tunnel을 실습해 보았습니다.
Tunnel은 기존의 IP헤더에 새로운 헤더를 붙여서 사용하게 됩니다.(캡슐화)
IP 헤더 | Protocol | GRE 헤더 | ||
Source IP | Destination IP | IP | GRE Source IP | GRE Destination IP |
host A IP | host B IP | 10.0.0.1 | 10.0.0.2 |
host A는 VirtualBox로 실행된 리눅스 가상머신 이고, host B는 라즈베리 파이로 진행하였고, IP와 MAC주소는 따로 공개하지 않고 설명을 진행 하겠습니다.
sudo modprobe ip_gre
lsmod | grep gre
sudo moprobe ip_gre 명령어는 GRE를 사용하기 위해 ip_gre 모듈을 로드하고, 로드가 잘 되었는지
lomod | grep gre 명령어로 확인합니다. 이 명령어는 처음 연결을 진행하는 컴퓨터에서만 진행하면 됩니다.(host A)
sudo ip tunnel add gre3 mode gre remote Host B IP local Host A IP ttl 255
sudo ip link set gre3 up
sudo ip addr add 10.0.0.1/24 dev gre3
host A의 리눅스 터미널
sudo ip tunnel add gre3 mode gre remote Host B IP loacl Host A IP ttl 255
연결할 주소인 Host B IP, 출발 주소 인 Host A IP 를 입력하고, ttl 255로 설정합니다.
sudo ip link set gre3 up 명령어로 gre3 interface를 활성화 시킨 후, sudo ip addr add 10.0.0.1/24 dev gre3 입력하여 gre3 interface에 10.0.0.1 ip를 할당합니다.(터널 외부 IP 할당)
ip route show 명령어로 route를 확인해보면 빨간색 박스와 같이 할당된 것을 확인 할 수 있습니다.
host B 또한 host A와 같이 명령어를 입력하여 세팅합니다.
sudo ip tunnel add gre3 mode gre remote Host A IP local Host B IP ttl 255
sudo ip link set gre3 up
sudo ip addr add 10.0.0.2/24 dev gre3
host A(10.0.0.1)에서 host B(10.0.0.2)로 핑테스트를 해보면 연결이 잘 된 것을 확인 할 수 있습니다.
조금 더 자세하게 확인하기 위하여 Wireshark 분석 툴을 가지고 확인 해보았습니다.
host A에서 host B로 ping test를 하는 Protocol인 ICMP이며, host A,B 의 MAC주소를 확인 할 수 있습니다.
host A,B 의 IP주소와 Protocol이 Generic Routing Enapsulation인 것을 확인 할 수 있습니다.
추가로 Tunnel을 사용하는 의미를 가지는 IP Protocol 이 있는 것을 확인 할 수 있습니다.
host A,B 의 GRE Tunnel ip주소를 확인 할 수 있습니다.
host B에서 host A 의 ICMP를 응답한 결과도 분석해보면 위에서 설명한듯이 host A, B의 MAC주소, IP주소 Generic Routing Encapsulation, 터널 IP 주소를 확인 할 수 있었습니다.
GRE Tunnel을 실습, 분석해보았고, 터널링을 이용하면 더 나아가 VPN 환경을 구축할 수 있습니다.
참고 바로가기
'Network > GRE Tunnel' 카테고리의 다른 글
GRE Tunnel + IPSec (0) | 2022.07.30 |
---|