[Network] GRE Tunnel
1. GRE ν°λ μ ν
| μ ν | μ€λͺ | νΉμ§ |
|---|---|---|
| Transparent Tunnel (IP-over-IP) |
μλ³Έ ν¨ν· κ·Έλλ‘ μΊ‘μν λ³λ λ΄λΆ IP μμ |
λΈλ¦¬μ§ν ν°λ λ΄λΆ IP μμ΄ λ¨μ μ λ¬ |
| Routed Tunnel (Point-to-Point) |
GRE μΈν°νμ΄μ€μ μ체 IP λΆμ¬(/30 λ±) λΌμ°ν μ ν΅ν΄ λ΄λΆλ§ μ λ¬ |
κ°μ λΌμ°ν° μν κ²½λ‘ μ μ΄ κ°λ₯ μμ μ |
Transparent Tunnel (IP-over-IP, ν¬λͺ ν°λ)
GRE1 (192.168.179.38) <--> GRE1 (192.168.179.133)
β β
192.168.10.10 192.168.20.10
Routed Tunnel (Point-to-Point λ§ν¬ν ν°λ)
[192.168.100.1] --- GRE ν°λ --- [192.168.100.2]
β β
192.168.179.38 192.168.179.133
(wlan0, μ€μ IP(192.168.10.10)) (wlan0, μ€μ IP(192.168.20.10))
2. Transparent GRE ν°λ κ΅¬μ± μμ
μ‘μ (wlan0: 192.168.179.38, μ€λ§νΈν°: 192.168.10.10)
# GRE ν°λ μμ±
ip tunnel add gre1 mode gre local 192.168.179.38 remote 192.168.179.133
ip link set dev gre1 up
# μ‘μ ν¨ν·μ GRE μΈν°νμ΄μ€λ‘ λΌμ°ν
ip route add 192.168.20.0/24 dev gre1
μμ (wlan0: 192.168.179.133, μ€λ§νΈν°: 192.168.20.20)
# GRE ν°λ μμ±
ip tunnel add gre1 mode gre local 192.168.179.133 remote 192.168.179.38
ip link set dev gre1 up
# μ‘μ ν¨ν·μ GRE μΈν°νμ΄μ€λ‘ λΌμ°ν
ip route add 192.168.10.0/24 dev gre1
3. GRE ν°λ κ΅¬μ± μμ
μ‘μ μΈ‘ (wlan0: 192.168.179.38, μ€λ§νΈν°: 192.168.10.10)
# GRE ν°λ μμ±
ip tunnel add gre1 mode gre local 192.168.179.38 remote 192.168.179.133
ip link set dev gre1 up
# GRE μΈν°νμ΄μ€μ point-to-point IP ν λΉ
ip addr add 192.168.100.1/30 dev gre1
# ν°λμ ν΅ν΄ μλ λ΄λΆλ§μΌλ‘ λΌμ°ν
ip route add 192.168.20.0/24 via 192.168.100.2
μμ μΈ‘ (wlan0: 192.168.179.133, μ€λ§νΈν°: 192.168.20.20)
# GRE ν°λ μμ±
ip tunnel add gre1 mode gre local 192.168.179.133 remote 192.168.179.38
ip link set dev gre1 up
# GRE μΈν°νμ΄μ€μ point-to-point IP ν λΉ
ip addr add 192.168.100.2/30 dev gre1
# ν°λμ ν΅ν΄ μλ λ΄λΆλ§μΌλ‘ λΌμ°ν
ip route add 192.168.10.0/24 via 192.168.100.1
ꡬ쑰
[μ‘μ λ΄λΆλ§] 192.168.10.0/24
β
gre1 (192.168.100.1)
β GRE μΊ‘μν
βΌ
wlan0 (192.168.179.38) β μΈν°λ·
β
[μμ wlan0] 192.168.179.133
β
gre1 (192.168.100.2)
β
[μμ λ΄λΆλ§] 192.168.20.0/24
via 192.168.100.xβ GRE λ΄λΆ point-to-point μ£Όμλ₯Ό ν΅ν΄ λΌμ°νdev gre1λ§ μ¬μ©ν μλ μμ§λ§, μμ μ±κ³Ό λλ²κΉ μ μν΄viaμΆμ²
4. GRE ν°λ κ΄λ¦¬ λͺ λ Ή
μμ±/μμ
# ν°λ μμ
ip link delete gre1
# μμ±
ip tunnel add gre1 mode gre local <local_IP> remote <remote_IP>
ip link set dev gre1 up
μν νμΈ
ip link show gre1
ip addr show dev gre1
ip route show
# ν¬μλ© μ€μ
cat /proc/sys/net/ipv4/conf/gre1/forwarding
νΈλν½ νμΈ (tcpdump)
tcpdump -i gre1 -n
# GRE ν¨ν· μΊ‘μ² (λͺ¨λ μΈν°νμ΄μ€)
tcpdump -i any 'ip proto 47'
# νΉμ μΈν°νμ΄μ€λ§ dump
tcpdump -i wlan0 'ip proto 47'
tcpdump -i gre1 'ip proto 47'
# μΆλ°μ§(source) λλ λͺ©μ μ§(destination)κ° `<IP>`μΈ ν¨ν·λ§ νν°λ§
tcpdump -i any host <IP>
λΌμ°νΈ μ κ±°
ip route del 192.168.20.0/24 via 192.168.100.2
5. λλ²κΉ μμ
- GRE μΈν°νμ΄μ€ νμ±ν νμΈ
ip link show gre1 - ν°λ λ΄λΆ IP νμΈ
ip addr show dev gre1 - λΌμ°ν
νμΈ
ip route show - ν¨ν· μΊ‘μ²
tcpdump -i any 'ip proto 47' tcpdump -i gre1 -n - ping ν
μ€νΈ
ping 192.168.100.2 # tunnel point-to-point ping ping 192.168.20.10 # μμ λ΄λΆλ§ ping
6. μ£Όμ μ¬ν
- κ°μ μλΈλ· μ¬μ© κΈμ§
- μ‘μ /μμ λ΄λΆλ§μ΄ λμΌ μλΈλ·μ΄λ©΄
dev gre1λΌμ°νΈλ§μΌλ‘λ GREκ° μ μ λμνμ§ μμ - λ΄λΆλ§μ΄ κ²ΉμΉλ©΄ λΈλ¦¬μ§ν(gretap) μ¬μ© νμ (2 Layer κΉμ§ μ¬λΌκ°μΌν¨.)
- μ‘μ /μμ λ΄λΆλ§μ΄ λμΌ μλΈλ·μ΄λ©΄
- Android νκ²½
- rp_filter, ip_forward νμ±ν νμ
- μΌλΆ 컀λμμλ μΈν°νμ΄μ€μ IP μμΌλ©΄ GRE decap μ€ν¨ κ°λ₯ β /30 IP ν λΉ κΆμ₯
- λλ²κΉ
- ν°λ IPλ₯Ό ping β μΊ‘μν/λμΊ‘μ νμΈ
- tcpdumpλ‘ GRE ν¨ν· μμ νμΈ
Leave a comment