VPN으로 외부에서 내부 Test 서버를 접속 하기 위해서 조금은 설정을 하다가 일단은 기록을 진행 합니다. 물리적으로 거리가 있고, 동일 네트워크망에 있지 않을 경우에 해당 문제를 해결 하기 위해서 기록을 하는것입니다.
응용을 하기에 따라서 다른 용도로 사용을 할 수 있지만 제가 중점적으로 노리는 효과는 “가상 내부망 구축”, “접속할 사이트 제한” 2가지를 중점적으로 해서 처리한 내용입니다.
일단 OPEN VPN 서버 설정을 변경을 하여서 Client간에 통신이 되도록 허용하고, DNS 조정을 통해서 원하지 않는 웹사이트는 접속 하디 않도록 설정을 합니다.
#
vi /etc/openvpn/server/server.conf
# 서버 설정 파일에 클라이언트 간 통신 허용
client-to-client
# OPENVPN에 다른 DNS 차단하도록 설정
push "block-outside-dns"
# 고정IP 할당하기 위한 설정
client-config-dir /etc/openvpn/ccd
# OPENVPN Status 기록
status /var/log/openvpn-status.log
status-version 2
# DNS를 현재 서버로 이용하기
push "dhcp-option DNS 10.8.0.1"
#※ 이미 있을 경우는 삭제를 하거나 수정하시며 됩니다.
해당 설정을 하는 이유는 VPN을 사용하는 Client중에 고정으로 IP를 할당 받아야 할 경우에 대비해서 설정을 합니다. 저 같은 경우는 내부에 별도 Test 서버가 있어서 해당 서버를 외부에서 이용하기 위해서 Client중 일부는 고정으로 IP를 할당해야 되어서 이렇게 사용을 합니다.
# 고정IP를 위한 디렉토리 만들기
sudo mkdir -p /etc/openvpn/ccd
sudo chown root:root /etc/openvpn/ccd
파일 만들기
vi /etc/openvpn/ccd/client1
#※ client1은 VPN Client 등록시 이름과 동일하게 설정
#파일의 내용은 다음과 같이 설정
ifconfig-push 10.8.0.xx 255.255.255.0
#※ 10.8.0.xx 는 할당할 IP 정보를 기입함
#저장 후 파일 권한을 적절히 설정합니다.
sudo chown root:root /etc/openvpn/ccd/client1
sudo chmod 600 /etc/openvpn/ccd/client1
VPN을 이용하더라도 차단해야 되는 웹사이트가 있을 수 있기에 해당 기능을 추가 하여서 수시로 Log를 확인하시거나, 혹은 확인해서 추가를 하시면 됩니다.
#dnsmasq 설정 파일 편집
vi /etc/dnsmasq.conf
# DNS 쿼리 로그 기록
log-queries
log-facility=/var/log/dnsmasq.log
# 외부 DNS 설정
server=8.8.8.8
server=1.1.1.1
# DNS 조회 허용 IP
# 로컬 조회에도 이용시
#listen-address=127.0.0.1
# 모든 인터페이스 이용시
listen-address=0.0.0.0
# VPN client에서만 제한
listen-address=10.8.0.1
제가 사용하는것은 내부 서버만 이용하도록 하기 위한것이여서 해당 VPN 서버를 이용해서 기본적인 서비스는 이용하지 못하도록 막고 있습니다.
조금 과하게 막는다고 할 수 있지만, 전체 차단에서 일분 허용하는 Whitelist 보다는 Blacklist가 그래도 급할대 사용할 수 있다록 생각하여서 다음과 같이 설정 하였습니다.
# 도메인 차단
address=/google.com/127.0.0.1
address=/google.co.kr/127.0.0.1
address=/youtube.com/127.0.0.1
address=/youtube-nocookie.com/127.0.0.1
address=/ytimg.com/127.0.0.1
address=/ggpht.com/127.0.0.1
address=/naver.com/127.0.0.1
address=/naver.net/127.0.0.1
address=/naver.jp/127.0.0.1
address=/nstatic.net/127.0.0.1
# 예: *.google.com 식으로 모든 하위 도메인까지 막고 싶다면
address=/.google.com/127.0.0.1
address=/.youtube.com/127.0.0.1
address=/.naver.com/127.0.0.1
# Microsoft 계열
address=/.microsoft.com/127.0.0.1
address=/.office.com/127.0.0.1
address=/.live.com/127.0.0.1
address=/.microsoftonline.com/127.0.0.1
address=/.windows.net/127.0.0.1 # 일부 인증 관련 도메인
address=/.bing.com/127.0.0.1
address=/.sharepoint.com/127.0.0.1
address=/.onedrive.com/127.0.0.1
address=/.msn.com/127.0.0.1
# Dropbox
address=/.dropbox.com/127.0.0.1
address=/.dropboxusercontent.com/127.0.0.1
# 기타 검색엔진
address=/.yahoo.com/127.0.0.1
address=/.baidu.com/127.0.0.1
address=/.duckduckgo.com/127.0.0.1
# Windows Update 도메인들을 가짜 IP로 응답
address=/.windowsupdate.com/127.0.0.1
address=/.microsoft.com/127.0.0.1
address=/.update.microsoft.com/127.0.0.1
address=/.download.windowsupdate.com/127.0.0.1
address=/.ntservicepack.microsoft.com/127.0.0.1
address=/.delivery.mp.microsoft.com/127.0.0.1
address=/.windows.com/127.0.0.1
# 카카오 계열 도메인 차단
address=/.kakao.com/127.0.0.1
address=/.kakaocorp.com/127.0.0.1
address=/.kakaopay.com/127.0.0.1
address=/.kakaobank.com/127.0.0.1
address=/.daum.net/127.0.0.1
# 1) 대형 종합 쇼핑몰 / 오픈마켓
address=/.coupang.com/127.0.0.1
address=/.gmarket.co.kr/127.0.0.1
address=/.auction.co.kr/127.0.0.1
address=/.11st.co.kr/127.0.0.1
address=/.interpark.com/127.0.0.1
# 2) 대기업 계열
address=/.ssg.com/127.0.0.1
address=/.lotteon.com/127.0.0.1
address=/.hmall.com/127.0.0.1
address=/.gsshop.com/127.0.0.1
address=/.cjonstyle.com/127.0.0.1
# 3) 소셜커머스 / 종합
address=/.tmon.co.kr/127.0.0.1
address=/.wemakeprice.com/127.0.0.1
# 4) 패션 / 의류
address=/.musinsa.com/127.0.0.1
address=/.zigzag.kr/127.0.0.1
# 5) 가전 / 디지털
address=/.himart.co.kr/127.0.0.1
address=/.samsung.com/127.0.0.1
address=/.lg.com/127.0.0.1
# 6) 전문몰 / 기타
address=/.cookatmarket.com/127.0.0.1
address=/.kurly.com/127.0.0.1
address=/.gsfresh.com/127.0.0.1
address=/.thehyundai.com/127.0.0.1
address=/.lfmall.co.kr/127.0.0.1
# 네이버 쇼핑도 추가 차단 예시
address=/.naver.com/127.0.0.1
address=/.naver.net/127.0.0.1
address=/.nstatic.net/127.0.0.1
# 다음(daum.net) 도메인 및 서브도메인 차단
address=/.daum.net/127.0.0.1
# Adobe(adobe.com) 도메인 및 서브도메인 차단
address=/.adobe.com/127.0.0.1
address=/.adobe.io/127.0.0.1
# Oracle(oracle.com) 도메인 및 서브도메인 차단
address=/.oracle.com/127.0.0.1
address=/.orclcloud.com/127.0.0.1
위에 모든 설정을 하고 나서 DNSmasq를 실행 하면은 문제가 생길수 있습니다. 이는 기존에 시스템이 이용하는 systemd-resolved 와 DNS조회 Port 문제 이기 때문에 dnsmasq와 systemd-resolved 가 공존 하도록 하면 됩니다.
#
vi /etc/systemd/resolved.conf
[Resolve]
#DNSStubListener를 비활성화합니다:
DNSStubListener=no
# 재시작
sudo systemctl restart systemd-resolved
sudo systemctl restart dnsmasq