블로그 이미지
안녕하세요~ iolate(a.k.a. isho) 의 블로그 입니다~! iolate

카테고리

분류 전체보기 (165)
Server, Cloud (7)
끄적끄적 (6)
Linux, Ubuntu (24)
개발질 (45)
Mac (18)
iOS (23)
IoT (16)
NAS (1)
Web (5)
Network (3)
Review (10)
기타 (7)
비공개글 (0)
Total617,480
Today78
Yesterday147

서버에서 

push "redirect-gateway def1 bypass-dhcp"

push "dhcp-option DNS 10.0.2.220"

이런류의 설정을 넣어두면, OpenVPN 으로 연결시 모든 트래픽이 VPN 을 통하게 된다.


이를 client 설정 파일에서 override 할 수 있는데, 여러 방법이 있지만 설정파일을 이용하는 방법을 기술.

다른 방법은 아래 참고 URL 로 들어가보자.


client 설정 파일에 아래 라인들을 포함.

route 0.0.0.0 192.0.0.0 net_gateway
route 64.0.0.0 192.0.0.0 net_gateway
route 128.0.0.0 192.0.0.0 net_gateway
route 192.0.0.0 192.0.0.0 net_gateway


서버에서 def1 옵션을 사용하지 않았을 경우 아래 와 같은 방법으로.(뭐가 다른진 잘 모르겠다)

route 0.0.0.0 128.0.0.0 net_gateway
route 128.0.0.0 128.0.0.0 net_gateway



이러면 VPN 내부망만 라우팅될텐데, 나같이 내부망에 VPN 서버 파두고 쓰는 경우엔 내부망은 routing 되도록 수정해야 한다.

내가 사용하려는 내부망은 10.0.0.0/8 대역을 사용하고, DNS 설정도 필요하니 아래 설정도 추가


route 10.0.0.0 255.0.0.0
dhcp-option DNS 10.0.2.220


DNS 설정의 경우 VPN 클라이언트 옵션에서 수동으로 설정한 네트워크 설정 변경을 허용해주어야 한다.

이건 클라이언트마다 다르니 알아서 찾아서 켜주도록 하자.



참고

https://community.openvpn.net/openvpn/wiki/IgnoreRedirectGateway

https://serverfault.com/a/631048

Posted by iolate

12년도에 쓴 [우분투 openVPN 설치/설정법] 의 연장선으로.. Ubuntu 18.04 에서 OpenVPN 을 설치하고자 했다.


설치법 자체는 

DigitalOcean - How To Set Up an OpenVPN Server on Ubuntu 18.04


이런데 잘 나와있는데, 나는 인증서 생성을 EasyRSA 를 이용하고 싶지 않았음.


그래서 맥의 키체인을 이용해보았다.


1. CA 생성

2. Server 용 인증서 생성

3. Client 용 인증서 생성

4. 인증서 / 키 변환





키체인 접근 앱을 연 다음에 상단 메뉴를 통해 이렇게 접근하자.

CA 생성은 "인증 기관 생성...", 그 외 인증서는 "인증서 생성..." 을 이용하면 된다.


1. CA 생성



이름은 적당히 하고 유형을 "자체 서명 루트 CA"로 하자.

사용자 인증서는 별로 영향이 없는 것 같고 왜 있는지 모르겠지만 일단 VPN 서버로 설정하였고,

"기본값 덮어쓰기"를 꼭 체크 후 계속.


이후 유효기간을 적당히 설정하고 "초대장 서명" 은 체크해제하고 계속.

인증서 정보도 메일과 이름 외에 비워둬도 되니 적당히 입력하고 넘어간다.

키 쌍 정보 역시 그대로 진행.



키 사용 확장자(KUE, 작업)와 확장된 키 사용 확장자(EKU, 목적)를 묻는데, CA 생성시에는 "이 CA에 대한" 과 "이 CA의 사용자에 대한" 으로 두번 묻는다.

무슨 차이인지 잘 모르겠지만, 나는 감으로

"이 CA에 대한" KUE 와 "이 CA의 사용자에 대한" EKU 를 위 사진과 같이 설정하고 나머지 두개는 포함하지 않음 체크하고 진행하였다.

"이 확장자는 중요합니다." 의 경우 난 체크를 했는데 안해도 되는 듯...? 잘 모르겠다.


기본 제한 확장자나 대체 이름 확장자는 포함하지 않은 것 같고 진행진행!

신뢰 설정은 하지 않아도 된다.


완료하면, 인증서, 공개 키, 개인 키 3개가 생성되는데, 인증서만 우클릭 하여 .cer 포맷으로 내보내기 해두자.

2. Server 용 인증서 생성


이번엔 "인증서 생성..." 으로 진행.

이름을 적당히 설정하고 신원 유형은 "리프" 로 한다. 스샷에 VPN 클라이언트로 되어 있는데 VPN 서버가 맞다. 다만 앞에서 말했듯 상관없는 듯?

마찬가지로 기본값 덮어쓰기를 꼭 체크하고 넘어가자.


그 다음 발급자 선택 에서 앞에서 만든 CA 를 선택하고 계속


키 사용 확장자(KUE)는 서명, 키 암호화

확장된 키 사용 확장자(EKU)는 SSL 서버 인증 을 선택한다.


이 후 제목 대체 이름 확장자에서 DNSName 이나 IPAddress 중 하나 이상 입력해주고 진행. 아무거나 적어도 상관..은 없는 것 같지만 난 VPN 서버의 호스트 주소를 적어주었다.


그럼 서버용 인증서도 생성 완료!

얘도 마찬가지로 인증서, 공개 키, 개인 키 3개가 만들어지는데 이번엔 인증서와 개인 키 두개를 각각 .cer, .p12 확장자로 내보내기를 해두자.

3. Client 용 인증서 생성

서버와 비슷하지만 이렇게 진행하면 된다.


서버 인증서와 동일하게 인증서와 개인 키를 추출한다.


4. 인증서 / 키 변환

인증서 확장자인 .cer 은 .crt 로,

개인 키 확장자인 .p12 은 .key 로 변환이 필요하다.


각각 터미널에서 아래 명령어를 통해 변환 가능. 파일 이름은 알아서 바꿔주자.


$ openssl x509 -inform DER -in filename.cer -out filename.crt

$ openssl pkcs12  -nodes -nocerts -in filename.p12 -out filename.key


인증서의 정보를 보고 싶다면

$ openssl x509 -in ca.crt -noout -text


생성된 인증서들을 바탕으로 원래 OpenVPN 설치 / 설정 과정에 맞춰 집어 넣으면 된다.

ca.crt, server.crt, server.key, client.crt, client.key

이렇게 5개가 생성되면 정상.


dh2048.pem 과 ta.key 는 우분투에서 그냥 바로 만들 수 있는데,


$ openssl dhparam -out dh2048.pem 2048

$ openvpn --genkey --secret ta.key

명령어를 통해 만들 수 있다.


Posted by iolate

Mac openVPN 서버 설치

Mac / 2013.11.14 14:41

설정 conf, key 만들기 등은

http://blog.iolate.kr/121

이 글 참고.


사실 난 우분투에서 만들었던 키 들을 그대로 가져왔기 때문에 잘 모르겠지만

크게 다르진 않을거다.

easy-rsa 의 경우도 구글링 해볼 것.



일단 설치는 간단하다.

brew install openvpn


mac ports 로도 되는 것 같지만 brew 가 훨씬 편하니 난 저것만 쓰겠음.


설치하고 나면 daemon 관련 작업을 하라고 하는데

sudo cp -fv /usr/local/opt/openvpn/*.plist /Library/LaunchDaemons

이것만 하고 그 뒤에 launchctl load 부분은 일단 스킵.


설정 파일가 위치할 폴더는 /usr/local/etc/openvpn/ 이다.

(사실 어디에 있든 상관은 없다.)


위에 링크한, 우분투에 openVPN 설치 글을 참고하여 키와 설정파일 들을 만들자.


그러고 나서 아까 brew 설치 후 시키는 대로 복사한 파일을 수정하자.

루트 권한이니 그냥 터미널로 수정을 추천. 잘 모르겠으면 복사해서 수정 후 다시 집어넣어 주면 된다.


<array>

    <string>/usr/local/opt/openvpn/sbin/openvpn</string>

    <string>--config</string>

    <string>/usr/local/etc/openvpn/openvpn.conf</string>

  </array>

빨간색으로 표시한 부분을 자신의 설정파일에 맞게 바꿔주자.

나의 경우엔 server.conf


만약 디렉토리 자체를 다른 곳에서 시작한 경우 앞부분 경로를 맞게 수정해주고

밑에 WatchPaths 와 WorkingDirectory의 경로도 바꿔주면 된다.


그리고 저장.


데몬을 로드하기 전에 문제가 있나 확인하기 위해 직접 실행해 본다.

나의 경우 설정 파일 경로 부터 key 권한 문제까지 여러 문제가 많았거든..;;ㅋㅋ


자신의 설정파일이 위치한 폴더로 이동 후( cd /usr/local/etc/openvpn/ )

sudo /usr/local/opt/openvpn/sbin/openvpn --config /usr/local/etc/openvpn/openvpn.conf


위에서 설정한 환경에 따라 당연히 인자는 적절히 수정해 줄 것.

실행 후 

Initialization Sequence Completed

라는 메세지가 나오면 성공이다.


인터럽트 걸고 나온 후에

sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.openvpn.plist 

를 실행해 주자.



이 후 연결해보면 연결은 잘 될텐데 클라이언트에서 인터넷이 안된다.

우분투에서의 iptables 같은 작업이 필요한 것.


그건 이렇게 하면 된다.


sudo sysctl -w net.inet.ip.fw.enable=1

sudo sysctl -w net.inet.ip.forwarding=1

sudo natd -interface en0

sudo ipfw add divert natd ip from any to any via en0


얘도 재부팅마다 해줘야 하는데,


https://forums.openvpn.net/topic11401.html


여기 들어가보면 저 스크립트를 데몬화 해주는 방법이 있다.

Posted by iolate
TAG Mac, OpenVPN, vpn

PPTP, L2TP는 공유기 설정에 따라 사용이 불가능하거나 일부러 막아놓은 경우도 있다.


이런 저런 불편함이 있어서 OpenVPN 이란게 있는데,

자세한 내막은 모르겠지만 이 녀석을 기본 내장하는 기기는 하나도 없음.

클라이언트 설정 파일 자체가 워낙 복잡해서 그런것 같기도 하다.


여튼,

안드로이드, iOS 도 원래 OpenVPN 이 사용이 불가했다.

루팅 혹은 탈옥을 하고난 후면 사용이 됬지만.


그러다 안드로이드는 4.0 부터인가? OpenVPN 일부를 서드파티 앱의 형태로 사용가능하게 되었고

iOS 도 언제부터인지 모르겠지만 서드파티 vpn plugin 을 제공하기 시작한 것 같다.


여튼 지금 글 쓰려는건 iOS 용 OpenVPN.

(뭐 그래봤자 딱히 쓸 내용도 없고 간략한 소개 정도..)





올해(2013년) 1월달에 나왔으며 iOS 5.0 이상을 지원한다.




(443 포트로 OpenVPN 을 열면 왠만한 차단은 다 뚫을 수 있단걸 내게 가르쳐준) Private Tunnel 사의 서비스는 기본으로 지원하고,

그 외엔 클라이언트 파일을 서버로 부터 받거나,

iTunes 로 넣거나, 메일로 받으면 된다고 설명하고 있다.


web, 메일 등에서의 외부 파일 연결은 zip 등 압축은 지원하지 않고 .ovpn 만 지원한다.

iTunes 로 넣을 경우 키 파일등을 따로 넣어도 ovpn 파일 내용을 토대로 알아서 가져오는데,

web에서 가져오거나 메일로 받을때는 어떻게 되는지 모르겠다.


나 같으면 key 들을 모두 .ovpn 에 쑤셔넣었다.



Web 으로 .ovpn 설정 파일을 받을때 OpenVPN 으로 연결이 안나오고

그냥 내용물이 출력된다면 더보기 클릭!

더보기



아이튠즈로 넣든, 메일로 받든, OpenVPN 앱에서 설정 파일을 추가할건지 묻고 추가하면 이제 사용가능!





연결 잘~된다 ㅎㅎ

443 포트와 같이 원래 서드파티 앱에서 사용불가능한 포트들도 사용가능!!






앱에서 사용한 설정이 설정 앱의 VPN 메뉴에서도 볼 수 있는데,

안타깝게도 다른 설정이나 연결은 안되고 각종 설정은 앱에서 하라는 메세지가 나온다.(심지어 여기서 삭제도 안됨)

연결 중일때 해제는 가능하다.


아이튠즈에서 설정파일을 넣고, 추가하고 나면 앱의 샌드박스 내 어디에도 설정 파일을 찾아볼 수 없는 것으로 보아

VPN 설정 추가시 설정, 키들을 iOS 키체인으로 집어 넣는 듯 하다.





참고로 OpenVPN 앱 내 말고, 설정 앱 안에 OpenVPN 설정 메뉴가 생기면서 다른 설정들도 가능하다.




탈옥을 하지 않고 순정에서도 할 수 있는 작업이 점점 늘어나는건 확실히 기분좋은 일인 것 같다~

개발자용 기기는 탈옥에 맞먹는 자율성을 부여해주면 좋을텐데...ㅠㅠ

'iOS > AppStore' 카테고리의 다른 글

[AppStore, 순정] OpenVPN on iOS  (0) 2013.08.14
iTeleport 구입!  (0) 2011.01.21
Posted by iolate

포트 변경의 메리트로 사용하게된 openvpn.

내가 사용할 일 없는 443(원래는 https용)을 vpn 용으로 지정해놓으면 막힐일 거의 없다 ㅋ


단점이라면, 컴퓨터라면 클라이언트를 따로 설치해야 하고,

모바일 기기라면 루팅/탈옥이 꼭 필요하다는 점..ㅠㅠ

안드로이드엔 openvpn 에서 만든 프로그램이 있고

iOS에서는 GuizmOVPN 이라는 유료앱이 있음. 앱스토어에 OpenVPN 앱이 있다. 이거 쓰면 됨.



1. 설치

sudo apt-get install openvpn


2. 키 폴더 만들기

mkdir /etc/openvpn/easy-rsa/

cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/


3. /etc/openvpn/easy-rsa/vars 수정

사실 안해도 되지만 그러면 키 하나 만들때 마다 귀찮음 ㅋ

export KEY_COUNTRY="KR"

export KEY_PROVINCE="NA"

export KEY_CITY="Daegu"

export KEY_ORG="iolate"

export KEY_EMAIL="iolate@me.com"


4. 서버 키 만들기

cd /etc/openvpn/easy-rsa/

source ./vars                        #위에 설정한거 적용

./clean-all                             #키 폴더 비움

./build-dh

./pkitool --initca                     #ca 키 생성

./pkitool --server server         #서버 키 생성


cd keys

#만들어진 키 이동

sudo cp server.crt server.key ca.crt dh1024.pem ../../


하다가 openssl 오류나 2.0 어쩌구 에러나면 easy-ssl 폴더 안에

openssl-1.0.0.cnf -> openssl.cnf 링크 만들어 주면 된다.


5. 서버 설정 (/etc/openvpn/server.conf)

뭐 설정 skel 파일이 있긴한데....


더보기


대충 이렇게 쓰면 됨.

길이가 너무 길어져서 주석들은 전부 뺏음 ㅋ


6. vpn 재시작

service openvpn restart



7. 클라이언트 정보 파일 생성

cd /etc/openvpn/easy-rsa/

source ./vars 

./pkitool client


8. 클라이언트 설정 파일 (이름.ovpn 혹은 이름.conf)


더보기


난 키 파일을 설정 파일에 다 집어넣는걸 선호해서 저렇게 해놨는데

싫다면  <~> </~> 부분을 제거 후

cert client.crt

key client.key

ca ca.crt

이렇게 각각 적어주고 설정파일(conf 혹은 ovpn)과 함께 배포하면 된다.


9. iptables 설정

더보기




openvpn이 다 좋긴 한데 위에 적었듯이 서드파티 앱이 반드시 필요하고

한번 배포한 인증서의 차단이 조금 쉽지 않다는 것이 흠..

'Linux, Ubuntu' 카테고리의 다른 글

사용해 본 VPS 비교  (2) 2012.11.14
우분투 L2TP VPN 설치/설정법  (2) 2012.09.29
우분투 openVPN 설치/설정법  (0) 2012.09.29
ftp / samba  (0) 2012.01.01
Ubuntu apache2/php5/mysql/mariadb  (0) 2012.01.01
인터넷 연결이 안될때  (0) 2011.07.06
Posted by iolate

최근에 달린 댓글

최근에 받은 트랙백

글 보관함