Policy based routing - XIYO/asuswrt-merlin.ng-kr GitHub Wiki

μ •μ±… 기반 λΌμš°νŒ…

λΌμš°ν„°λ₯Ό OpenVPN ν΄λΌμ΄μ–ΈνŠΈλ‘œ ꡬ성할 λ•Œ (예λ₯Ό λ“€μ–΄ LAN 전체λ₯Ό OpenVPN 터널 곡급 업체에 μ—°κ²°ν•˜κΈ° μœ„ν•΄), νŠΉμ • ν΄λΌμ΄μ–ΈνŠΈ λ˜λŠ” νŠΉμ • λŒ€μƒμ΄ 터널을 톡해 λΌμš°νŒ…λ˜μ–΄μ•Ό ν•˜λŠ”μ§€λ₯Ό κ²°μ •ν•˜λŠ” 정책을 μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λͺ¨λ“  νŠΈλž˜ν”½μ΄ μžλ™μœΌλ‘œ 터널을 톡해 λΌμš°νŒ…λ˜μ§€ μ•Šλ„λ‘ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이것은 가끔 "λΆ„ν•  터널링"이라고도 λΆˆλ¦½λ‹ˆλ‹€.

OpenVPN ν΄λΌμ΄μ–ΈνŠΈ νŽ˜μ΄μ§€μ—μ„œ "터널을 ν†΅ν•œ 인터넷 νŠΈλž˜ν”½ κ°•μ œ" (이전에 "인터넷 νŠΈλž˜ν”½ λ¦¬λ””λ ‰μ…˜")을 "μ •μ±… κ·œμΉ™" λ˜λŠ” "μ •μ±… κ·œμΉ™ (엄격)" 쀑 ν•˜λ‚˜λ‘œ μ„€μ •ν•©λ‹ˆλ‹€. 엄격 λͺ¨λ“œλŠ” 터널을 μš°νšŒν•  수 μžˆλŠ” μΆ”κ°€ κ²½λ‘œκ°€ 없도둝 ν•˜κΈ° μœ„ν•΄ νŠΉμ •ν•˜κ²Œ ν„°λ„μ˜ λ„€νŠΈμ›Œν¬ μΈν„°νŽ˜μ΄μŠ€λ₯Ό λŒ€μƒμœΌλ‘œ ν•˜λŠ” 경둜만 ν—ˆμš©ν•¨μœΌλ‘œμ¨ μΆ”κ°€ 단계λ₯Ό μ·¨ν•©λ‹ˆλ‹€. 이것이 일반적으둜 μ„ ν˜Έλ˜μ§€λ§Œ WAN μΈν„°νŽ˜μ΄μŠ€μ— μˆ˜λ™μœΌλ‘œ κ΅¬μ„±ν•œ κ²½λ‘œμ™€ μΆ©λŒν•  수 있기 λ•Œλ¬Έμ— λ³„λ„μ˜ μ˜΅μ…˜μœΌλ‘œ μ œκ³΅λ©λ‹ˆλ‹€.

μ •μ±… κ·œμΉ™μ„ ν™œμ„±ν™”ν•˜λ©΄ μ•„λž˜μ— μƒˆλ‘œμš΄ μ„Ήμ…˜μ΄ λ‚˜νƒ€λ‚©λ‹ˆλ‹€. "μ†ŒμŠ€ IP"λŠ” 둜컬 ν΄λΌμ΄μ–ΈνŠΈ(컴퓨터, λͺ¨λ°”일 λ“±)이며, "λŒ€μƒ"은 μΈν„°λ„·μ˜ 원격 μ„œλ²„μž…λ‹ˆλ‹€. ν•„λ“œλŠ” "μ–΄λ–€ IP"λ₯Ό λ‚˜νƒ€λ‚΄λ„λ‘ λΉ„μ›Œ λ‘˜ 수 μžˆκ±°λ‚˜ (λ˜λŠ” 0.0.0.0으둜 μ„€μ •ν•  수 있음) "μ–΄λ–€ IP"λ₯Ό λ‚˜νƒ€λ‚΄κΈ° μœ„ν•œ κ²ƒμž…λ‹ˆλ‹€. CIDR ν‘œκΈ°λ²•μœΌλ‘œ 전체 ν•˜μœ„λ„€νŠΈμ›Œν¬λ„ μ§€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€ (예: 74.125.226.112/30).

"Iface" ν•„λ“œ(μΈν„°νŽ˜μ΄μŠ€μ˜ μ•½μ–΄)λŠ” μΌμΉ˜ν•˜λŠ” νŠΈλž˜ν”½μ΄ VPN 터널을 톡해 μ „μ†‘λ˜κ±°λ‚˜ μ •κ·œ 인터넷 μ•‘μ„ΈμŠ€(WAN)λ₯Ό 톡해 μ „μ†‘λ˜μ–΄μ•Ό ν•˜λŠ”μ§€λ₯Ό κ²°μ •ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 VPN κ·œμΉ™ 이전에 WAN κ·œμΉ™μ΄ μ²˜λ¦¬λ˜λŠ” μ˜ˆμ™Έλ₯Ό μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

기본적으둜 λͺ¨λ“  νŠΈλž˜ν”½μ€ WAN을 톡해 μ΄λ™ν•©λ‹ˆλ‹€. VPN _Iface_둜 μ •μ˜ν•˜λŠ” 것은 VPN을 톡해 λΌμš°νŒ…λ  κ²ƒμž…λ‹ˆλ‹€. VPN을 톡해 λΌμš°νŒ…ν•˜λ„λ‘ κ΅¬μ„±ν•œ κ²½μš°μ—λ„ /24λ₯Ό VPN을 톡해 λΌμš°νŒ…ν•˜λ„λ‘ κ΅¬μ„±ν•˜μ§€λ§Œ /24 λ‚΄μ˜ ν•œ IPκ°€ WAN을 톡해 λΌμš°νŒ…λ˜λ„λ‘ ν•˜λ €λŠ” 경우 WAN _Iface_λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

μ •μ±… λΌμš°νŒ…μ„ ν™œμ„±ν™”ν•  λ•Œ λ…ΈνŠΈν•΄μ•Ό ν•  λ‹€λ₯Έ 섀정은 VPN 터널이 λŠμ–΄μ§€λ©΄ λΌμš°νŒ…λœ ν΄λΌμ΄μ–ΈνŠΈκ°€ 인터넷에 μ•‘μ„ΈμŠ€ν•˜μ§€ λͺ»ν•˜λ„둝 ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄ "터널이 λŠμ–΄μ§€λ©΄ λΌμš°νŒ…λœ ν΄λΌμ΄μ–ΈνŠΈ 차단"을 ν™œμ„±ν™”ν•©λ‹ˆλ‹€.

λ˜ν•œ 이 κΈ°λŠ₯은 TUN μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜λŠ” OpenVPN ν„°λ„κ³Όλ§Œ ν˜Έν™˜λ©λ‹ˆλ‹€. TAP μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜μ—¬ μ„€μ •ν•œ κ΅¬μ„±κ³ΌλŠ” ν˜Έν™˜λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

"Accept DNS Configuration" μ •μ˜

"Accept DNS Configuration" ν•„λ“œ κ°’μ˜ μ •μ˜λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

  • λΉ„ν™œμ„±ν™”: VPNμ—μ„œ μ œκ³΅ν•˜λŠ” DNS μ„œλ²„κ°€ λ¬΄μ‹œλ©λ‹ˆλ‹€.
  • λ¦΄λ ‰μŠ€: VPNμ—μ„œ μ œκ³΅ν•˜λŠ” DNS μ„œλ²„κ°€ ν˜„μž¬ DNS μ„œλ²„ λͺ©λ‘ μ•žμ— μΆ”κ°€λ˜λ©°, μ–΄λ–€ DNS μ„œλ²„λ₯Ό μ‚¬μš©ν•΄λ„ λ©λ‹ˆλ‹€.
  • 엄격: VPNμ—μ„œ μ œκ³΅ν•˜λŠ” DNS μ„œλ²„κ°€ ν˜„μž¬ DNS μ„œλ²„ λͺ©λ‘ μ•žμ— μΆ”κ°€λ˜λ©°, μˆœμ„œλŒ€λ‘œ μ‚¬μš©λ©λ‹ˆλ‹€. VPNμ—μ„œ μ œκ³΅ν•˜λŠ” DNS μ„œλ²„κ°€ μ‘λ‹΅ν•˜μ§€ μ•ŠλŠ” κ²½μš°μ—λ§Œ κΈ°μ‘΄ DNS μ„œλ²„κ°€ μ‚¬μš©λ©λ‹ˆλ‹€.
  • 배타: 제곡된 VPN DNS μ„œλ²„λ§Œ μ‚¬μš©λ©λ‹ˆλ‹€.

"Accept DNS Configuration" λ™μž‘

"Accept DNS configuration"을 _Exclusive_둜 μ„€μ •ν•˜κ³  μ •μ±… 기반 λΌμš°νŒ…κ³Ό κ²°ν•©ν•˜λ©΄ VPN을 톡해 κ΅¬μ„±λœ λͺ¨λ“  ν΄λΌμ΄μ–ΈνŠΈλŠ” VPN ν„°λ„μ—μ„œ μ œκ³΅ν•˜λŠ” DNS μ„œλ²„λ₯Ό μ‚¬μš©ν•˜κ³ , WAN을 톡해 κ΅¬μ„±λœ ν΄λΌμ΄μ–ΈνŠΈλŠ” ISP의 DNSλ₯Ό 계속 μ‚¬μš©ν•©λ‹ˆλ‹€. "Accept DNS configuration"을 "Exclusive"둜 μ„€μ •ν•˜λŠ” 단점은 VPN 터널이 VPN κ³΅κΈ‰μžμ˜ DNS만 μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— dnsmasq이 우회될 κ²ƒμ΄λΌλŠ” κ²ƒμž…λ‹ˆλ‹€. Asuswrt-Merlin νŽŒμ›¨μ–΄μš©μœΌλ‘œ μž‘μ„±λœ 인기 μžˆλŠ” Diversion κ΄‘κ³  차단 ν”„λ‘œκ·Έλž¨μ€ dnsmasq의 κΈ°λŠ₯을 ν•„μš”λ‘œ ν•˜κΈ° λ•Œλ¬Έμ— μž‘λ™ν•˜μ§€ μ•Šμ„ κ²ƒμž…λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ ν•˜λ‚˜μ˜ μ˜ˆμ™Έκ°€ μžˆμŠ΅λ‹ˆλ‹€ - "Accept DNS Configuration"을 "Exclusive"둜 μ„€μ •ν•˜κ³  "Force Internet traffic through tunnel"을 "Yes"둜 μ„€μ •ν•˜μ—¬ μ •μ±… κ·œμΉ™μ„ λΉ„ν™œμ„±ν™”ν•œ 경우 VPN 터널을 톡해 Diversion이 μž‘λ™ν•  κ²ƒμž…λ‹ˆλ‹€.

μ •μ±… κ·œμΉ™κ³Ό ν•¨κ»˜ dnsmasq μ‚¬μš©ν•˜κΈ°

dnsmasqλ₯Ό μ •μ±… κ·œμΉ™κ³Ό ν•¨κ»˜ μ‚¬μš©ν•˜λ €λ©΄ "Accept DNS Configuration"을 "Relaxed", "Strict", λ˜λŠ” "Disabled" 쀑 ν•˜λ‚˜λ‘œ μ„€μ •ν•©λ‹ˆλ‹€. ν•˜λ‚˜μ˜ 단점은 이둜 인해 VPN ν΄λΌμ΄μ–ΈνŠΈμ— ν• λ‹Ήλœ ν΄λΌμ΄μ–ΈνŠΈμ˜ DNS 정보가 "λˆ„μΆœ"될 수 μžˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

DNS λˆ„μΆœ 문제λ₯Ό μ™„ν™”ν•˜κΈ° μœ„ν•΄ LAN νŽ˜μ΄μ§€μ—μ„œ μ‚¬μš© κ°€λŠ₯ν•œ DNSFilter κΈ°λŠ₯을 μ‚¬μš©ν•˜μ—¬ 각 LAN ν΄λΌμ΄μ–ΈνŠΈμ— λŒ€ν•œ μ‚¬μš©μž μ •μ˜ DNSλ₯Ό ꡬ성할 수 μžˆμŠ΅λ‹ˆλ‹€. VPN을 μ‚¬μš©ν•˜λ„λ‘ ν• λ‹Ήλœ LAN ν΄λΌμ΄μ–ΈνŠΈλŠ” VPN μ„œλ²„ μ—”λ“œν¬μΈνŠΈμ—μ„œ DNSλ₯Ό λ°›κ³  WAN μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜λ„λ‘ ν• λ‹Ήλœ LAN ν΄λΌμ΄μ–ΈνŠΈλŠ” WAN μΈν„°νŽ˜μ΄μŠ€μ™€ λ™μΌν•œ μ§€μ—­μ—μ„œ DNSλ₯Ό λ°›μŠ΅λ‹ˆλ‹€.

νŠΉμ • ν΄λΌμ΄μ–ΈνŠΈμ˜ IP에 λŒ€ν•΄ μ—¬λŸ¬ κ·œμΉ™μ΄ μžˆλŠ” 경우 (예λ₯Ό λ“€μ–΄ ν•΄λ‹Ή νŠΈλž˜ν”½μ΄ λͺ¨λ‘ VPN을 톡해 μ „λ‹¬λ˜μ–΄μ•Ό ν•œλ‹€λŠ” κ·œμΉ™κ³Ό νŠΉμ • λŒ€μƒ IP에 λŒ€ν•œ μ˜ˆμ™Έ κ·œμΉ™μ΄ μžˆλŠ” 경우), ν•΄λ‹Ή ν΄λΌμ΄μ–ΈνŠΈμ˜ λͺ¨λ“  이름 해결은 μ—¬μ „νžˆ VPN μ„œλ²„μ—μ„œ μ§€μ •ν•œ DNSλ₯Ό 톡해 μ΄λ£¨μ–΄μ§‘λ‹ˆλ‹€. 이것은 λΌμš°ν„°κ°€ DNS 쿼리가 νŠΉμ • λŒ€μƒκ³Ό 관련이 μžˆλŠ”μ§€λ₯Ό μ•Œ 수 μ—†κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. λ”°λΌμ„œ κ°€μž₯ μ•ˆμ „ν•œ λ™μž‘μ΄ μ‚¬μš©λ˜λ©° ν•΄λ‹Ή ν΄λΌμ΄μ–ΈνŠΈμ— μ˜ν•œ λͺ¨λ“  μΏΌλ¦¬λŠ” VPN μ„œλ²„μ˜ DNSλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

기타 μ •μ±… λΌμš°νŒ… μ†”λ£¨μ…˜

  • μ›Ή μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€λ₯Ό 톡해 포트λ₯Ό 기반으둜 정책을 ꡬ성할 수 μ—†μŠ΅λ‹ˆλ‹€. 였직 IP μ£Όμ†Œ(λ˜λŠ” ν•˜μœ„λ„€νŠΈμ›Œν¬)λ₯Ό 기반으둜 ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ·œμΉ™μ— 더 λ§Žμ€ μœ μ—°μ„±μ΄ ν•„μš”ν•œ 경우, 포트 λΌμš°νŒ…μ„ μœ„ν•œ 이 방법을 μ°Έμ‘°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • x3mRouting ~ Asuswrt-Merlin νŽŒμ›¨μ–΄μš© 선택적 λΌμš°νŒ… μ†”λ£¨μ…˜μ€ 선택적 λΌμš°νŒ…μ„ μœ„ν•œ IPSET κΈ°μˆ μ„ ν™œμš©ν•˜λ©° LAN ν΄λΌμ΄μ–ΈνŠΈ, OpenVPN ν΄λΌμ΄μ–ΈνŠΈ 및 OpenVPN μ„œλ²„μ— λŒ€ν•œ 좔가적인 선택적 λΌμš°νŒ… κΈ°λŠ₯을 ν¬ν•¨ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
  • YazFiλŠ” 게슀트 WiFi λ„€νŠΈμ›Œν¬λ₯Ό VPN ν΄λΌμ΄μ–ΈνŠΈλ‘œ λΌμš°νŒ…ν•  수 μžˆλŠ” κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.

μ˜ˆμ‹œ

Google에 μ†ν•˜λŠ” IP μ£Όμ†Œ 블둝에 μ•‘μ„ΈμŠ€ν•˜λ €λŠ” λͺ¨λ“  ν΄λΌμ΄μ–ΈνŠΈκ°€ VPN 터널을 μ‚¬μš©ν•˜λ„λ‘ν•˜λ €λ©΄ λ‹€μŒκ³Ό 같이 ꡬ성할 수 μžˆμŠ΅λ‹ˆλ‹€:

RouteGoogle	0.0.0.0		74.125.0.0/16	VPN

λ˜λŠ” νŠΉμ • 컴퓨터λ₯Ό 터널을 톡해 λΌμš°νŒ…ν•˜λ˜, ISP의 SMTP μ„œλ²„λ‘œ 보낸 μš”μ²­μ€ 터널을 ν†΅κ³Όν•˜μ§€ μ•Šκ²Œν•˜λ €λ©΄ (κ°€μ •μ—μ„œ ISP의 SMTP μ„œλ²„μ˜ 가상 IP μ£Όμ†Œλ₯Ό 10.10.10.10으둜 κ°€μ •):

PC1		192.168.1.100	0.0.0.0		VPN
PC1-bypass	192.168.1.100	10.10.10.10	WAN

전체 LAN을 VPN을 톡해 μ „λ‹¬ν•˜λ €λŠ” 일반적인 ꡬ성 μ„€μ •, κ·ΈλŸ¬λ‚˜ λΌμš°ν„° μžμ²΄λŠ” μ˜ˆμ™ΈμΈ 경우:

LAN		192.168.1.0/24	0.0.0.0		VPN
Router		192.168.1.1	0.0.0.0		WAN