OpenWRT에서 OpenVPN을 TAP 방식으로 연결하기
https://www.youtube.com/watch?v=ZS3vXA0s2qU 를 참고하여, 실습을 통해 검증해서 쓴 글입니다.
준비물: 2대의 OpenWRT 장치, TAP Client 장비는 VLAN 구성이 가능한 장비여야 편리하다.
1. TAP 서버 설정
패키지 설치 : openvpn-openssl openvpn-easy-rsa luci-app-openvpn
서버의 WAN IP 주소 : 10.0.0.2
서버의 LAN IP 주소 : 192.168.2.1
※ LAN 영역 DHCP Server 일반설정에서 시작 IP주소 끝자리를 100에서 10으로, 150을 20으로 줄여준다.
※ LAN 영역 DHCP Server 고급설정에서 Force 체크해준다!
방화벽 설정에서 OpenVPN 서버가 사용할 포트를 열어준다.
config rule
option name 'Allow-OpenVPN'
list proto 'udp'
option src 'wan'
option dest_port '1194'
option target 'ACCEPT'
서버와 클라이언트 인증서 파일들을 생성한다.
openvpn 서버 설정 파일을 입력한다.
필요한 파일은 dh2048.pem ca.crt server.crt server.key
option server_bridge 의 IP 주소 대역은 혼동되지 않는 것을 쓰면 된다.
192.168.50.x 쓰는 것도 좋지만, 구분되기 쉽게 172.16.8.x 대역을 써도 된다.
LAN 인터페이스의 브릿지 인터페이스 설정에 tap0를 추가해준다.(기존에 이미 lan과 wireless가 연결된 브릿지 인터페이스이다.)
2. TAP 클라이언트 설정
패키지 설치 : openvpn-openssl luci-app-openvpn
필요한 파일 :
클라이언트의 WAN IP 주소 : 10.0.0.3
클라이언트의 LAN IP 주소 : 192.168.3.1
클라이언트의 VPN IP 주소 : 192.168.2.2
※ LAN 영역 DHCP Server 고급설정에서 Force 체크해준다!
※ 공유기를 설정하기 전에, 미리 포트 4번에 연결해야 한다! 왜냐하면, 포트 1번을 VPN에 할당해야 하기 때문에...
먼저 스위치 기능에서 VLAN 3 을 추가하고, 포트 LAN 1을 VLAN 3에만 가입시킨다.
(tagged, off, untagged 를 아래와 같이 지정한다.)
VLAN ID CPU(eth0) LAN 1 LAN 2 LAN 3 LAN 4 WAN
1 tagged off untagged untagged untagged off
2 tagged off off off off untagged
3 tagged untagged off off off off
새로운 인터페이스 lanvpn을 생성하고, Static address, VLAN eth0.3 을 지정하고,
IP address는 192.168.2.2/24를 지정
방화벽 Zone 에 역시 lanvpn을 생성하고 Forward를 accept로 바꾸고, Covered networks에 lanvpn을 지정한다.
그리고, Allow forward to destination zones: 에 WAN을 추가한다.
openvpn 클라이언트 설정 파일을 입력한다.
필요한 파일은 3개뿐이다. ca.crt client.crt client.key
서버의 IP 또는 도메인 주소 그리고 포트번호만 잘 확인하면 된다.
openvpn 접속을 먼저 완료하고,
lanvpn 인터페이스에 할당된 디바이스를 Bridge Interfaces로 바꾼다. eth0.3 에 부가적으로 tap0 디바이스를 추가한다.
※ 최신버전 OpenWRT에서는 Bridge 디바이스를 아예 별도로 생성해야 한다.
LAN 1 포트에 연결하면, 바로 OpenVPN 서버의 LAN 영역 IP 192.168.2.x 할당받고, 접속가능하다.
대신 다른 클라이언트 영역에는 접근할 수가 없다. 192.168.3.x 접근 불가.