Recent Post»

Recent Comment»

Archive»

« 2025/1 »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

테스트 환경

  • 날짜 : 2010년 12월 22일
  • OS : Windows Vista
  • jQuery : 1.4.4
  • IE : 8.0
  • Firefox : 3.6.13
  • Chrome : 8.0.552.224
  • Safari : 5.0.3

다음과 같이 크기가 지정된 div에서 클릭 이벤트를 처리하고 싶은 경우에 IE만 클릭이벤트가 발생하지 않는다. (IE는 항상 문제다.) 경계를 지정된 경우에는 경계를 클릭하면 이벤트가 발생한다.

<div></div>

이런 문제를 해결하기 위한 방법으로는 배경색을 지정하면 되지만 아래에 다른 element가 있는 경우라면 사용할 수 없다. 투명이미지를 사용하면 되는데 불편하다.

다음과 같이 배경색을 주고 투명도를 100%로 주는 방법이 있다. 이 경우에도 IE만 따로 논다. (나쁜 놈)

background: #FFF; /* you can choose any colour you like, 1.0-fully visible */
opacity:0.0;      /* opacity setting for all browsers except IE */
filter: alpha(opacity = 0); /* opacity setting for IE, 0-transparent & 100-fully visible */

다음의 링크를 참고합니다.

http://stackoverflow.com/questions/2158921/empty-div-hover-event-not-firing-in-ie

:

$('title').text()는 IE에서 동작하지 않는다.

자바스크립트 | 2010. 12. 22. 14:19 | Posted by 블로장생

테스트 환경

  • 날짜 : 2010년 12월 22일
  • OS : Windows Vista
  • jQuery : 1.4.4
  • IE : 8.0
  • Firefox : 3.6.13
  • Chrome : 8.0.552.224
  • Safari : 5.0.3

브라우저의 타이틀바를 런타임에 변경하기 위해 jQuery의 $(‘title’).text()를 사용했지만 IE 8.0에는 동작하지 않는다. 더구나 문제는 에러가 나는 바람에 다른 동작도 하지 않는다는 것이다.

다음과 같이 document.title을 이용해 보자. 읽기, 쓰기 모두 가능하다.

document.title = “New Title”;

자세한 설명은 다음을 참고하세요.

http://www.rachaelarnold.com/dev/archive/the-title-element-and-jquerys-text-function

:

PPTP VPN으로 아이폰과 리눅스 연결하기

아이폰 | 2010. 12. 8. 11:23 | Posted by 블로장생

시험 환경

  • PPTP Client : 아이폰4(iOS 4.1)
  • PPTP Server : 리눅스 (CentOS 5.5)
  • 네트워크 구성 : 아이폰<공인IP 1> ---- <공인IP 2>공유기<192.168.10.1> --- <192.168.10.3>리눅스 서버

개요

PPTP는 TCP 1723번을 통해서 연결을 하고 제어를 담당한다. 터널링된 데이터가 오가지는 않는다. PPTP는 연결이 되면 서로 GRE 터널을 통해서 PPP를 전달하게 되고 PPP는 실제 전달하고자 하는 프로토콜을 전달한다. TCP인 경우를 생각하면 TCP over PPP over GRE 가 되는 것이다. 인증 등의 기능은 PPP를 이용하게 된다.

리눅스 서버에 패키지 설치

PPTP 서버인 poptop 패키지를 리눅스 서버에 설치하기 위해서 poptop repository를 추가한다.

$ rpm -ivh 'http://poptop.sourceforge.net/yum/stable/fc7/pptp-release-current.noarch.rpm'

최신 버전을 원할 경우에 /etc/yum.repos.d/pptp.repo에서 [poptop-beta]의 enabled=1로 한다. 나는 그렇게 했다.

pptpd를 설치한다. pptpd와 궁합이 맞는 최신 버전의 ppp도 같이 설치될 것이다.

$ yum install pptpd

pptpd 설정하기

/etc/pptpd.conf에서는 localip와 remoteip를 설정하면 된다. 나머지 설정은 man pptpd.conf를 참조하면 된다. remoteip는 PPP 클라이언트의 IP가 되고 localip는 PPP 서버의 IP가 된다.

연결이 되면 ppp0와 같은 인터페이스가 생성이 되고 localip가 pppX 인터페이스에 할당이 된다.

클라이언트와 서버가 PPTP로 연결이 되면 둘 사이의 통신이 이루어 진다. 클라이언트에서 모든 통신을 PPTP 터널을 통해서 할 경우에 모든 패킷이 서버로 전달이 되는데 수신한 패킷을 외부로 보냈다가 응답을 받아서 다시 클라이언트에게 전달하는 것은 PPTP와는 관계가 없는 라우팅 설정 문제가 된다.

이러한 라우팅 문제를 해결하는 방법으로는 다음과 같은 방법이 있다.

  • 외부의 라우터에서 처리하기 : 클라이언트에 할당된 remoteip에 대해서 서버로 라우팅을 하도록 외부에 있는 라우터 혹은 게이트웨이를 설정하는 것이다.
  • NAT를 이용하기 : remoteip가 서버를 떠나기 전에 NAT를 적용해서 서버의 IP를 달고 가도록 한다. 도착한 패킷을 역으로 remoteip로 변경해서 전달하게 된다.
  • Proxy ARP 이용하기 : 현재 사용하고 있는 네트워크와 같은 대역을 클라이언트 IP로 설정한다. 여기서는 192.168.10.X가 된다. 그리고 localip를 설정하지 않는다. 그러면 proxy ARP 설정이 자동으로 적용이 되는 것 같다. 외부에서의 remoteip에 대한 ARP 요청에 대해서 서버가 응답을 하게 된다.

PPP 설정하기

/etc/pptpd.conf 에는 사용한 ppp 옵션 설정 파일을 지정하는 부분이 있는데 아래와 같이 되어 있을 것이다.

option /etc/ppp/options.pptpd

options.pptpd에서는 DNS 설정만 확인하면 된다. PPTP가 연결이 되면 클라이언트에게 DNS 서버 정보를 넘기는 것으로 보인다. 아래와 같이 ms-dns를 설정한다.

ms-dns 168.126.63.1
ms-dns 168.126.63.2

ID, 암호 설정

/etc/ppp/chap-secrets 파일에 ID, 암호를 설정한다. 다음과 같이 하면 된다. 두 번째 필드인 pptpd는 /etc/ppp/options.pptpd 설정의 name 옵션 값과 일치해야 하는데 pptpd로 설정되어 있을 것이다.

<ID> pptpd <PW> *

ip_forward 및 방화벽 설정

/proc/sys/net/ipv4/ip_forward 설정을 변경해서 패킷 라우팅을 허용해야 한다.

/etc/sysctl.conf를 다음과 같이 설정한다.

net.ipv4.ip_forward = 1

다음 명령으로 변경 내용을 바로 적용한다.

$ sysctl –p

iptables를 사용하고 있는 경우라면 다음과 같이 방화벽을 열어주어야 한다.

$ iptables –I INPUT –p gre –j ACCEPT
$ iptables –I INPUT –p tcp –m state –state NEW –m tcp –dport 1723 –j ACCEPT
$ iptables –I FORWARD –i ppp+ –j ACCEPT

공유기 설정

공유기를 사용하는 경우라면 마찬가지로 GRE, PPTP에 대한 port forwarding 설정을 해 주어야 한다.

주요 설정 정리

설정 파일 중 확인해야 할 내용만 정리하면 다음과 같다. 기존 설정은 그대로 두고 아래 부분만 변경하면 된다.

/etc/pptpd.conf

options /etc/ppp/options.pptpd
connections 10
remoteip 192.168.10.101-110

/etc/ppp/options.pptpd

name pptpd
ms-dns 168.126.63.1
ms-dns 168.126.63.2

/etc/ppp/chap-secrets

<ID> pptpd <PW> *

/etc/sysctl.conf

net.ipv4.ip_forward = 1

디버깅

연결이 잘 되지 않을 경우에는 /etc/pptpd.conf에서 debug 옵션을 활성화하고 /var/log/messages 를 보도록 한다.

아이폰 설정하기

아이폰 설정은 간단하다.

설정 > VPN > VPN 구성 추가 ... > PPTP 에서

설명 : 적당한 설명 적어준다.
서버 : 공유기 공인 IP 설정
계정 : chap-secrets 파일에 적은 <ID>
암호 : chap-secrets 파일에 적은 <PW>

나머지는 변경하지 않는다.

:

OpenVPN를 이용해서 Mac과 Linux 연결하기

Mac | 2010. 12. 8. 11:22 | Posted by 블로장생

집에서 서버와 연결해서 사용하던 환경을 외부에서도 동일하게 이용하고 싶어서 VPN을 연결을 시도했다. PPTP로 VPN을 연결하는 구성을 했지만 일부 환경에서는 PPTP 패킷이 차단당해서 사용할 수 없었다. 그래서 이번에는 OpenVPN을 이용한 SSL  VPN 연결을 시도하게 되었다.

테스트 환경

  • 클라이언트 : Mac OS X 10.6.5
  • 서버 : Linux CentOS 5.5

서버 설치하기

OpenVPN 버전은 2가지 있다. 동시 사용자가 2명까지는 무료 사용이 가능하기 때문에 상용 버전으로 일단 설치한다. 동시 사용자가 많은 경우에는 라이센스를 구입하거나 오픈 소스(커뮤니티) 버전을 이용하면 된다. 모두 같은 사이트에서 제공하고 있다.

설치는 간단하다.

1. 자신의 리눅스 버전에 맞는 access server RPM을 받아서 설치한다. 여기서는 CentOS를 사용하고 있어서 다음의 버전을 설치했다.

$ rpm -ivh openvpn-as-1.5.6-CentOS5.i386.rpm

2. 초기 설정을 위한 명령을 수행한다. 여러 가지 질문에 대해 읽고 답을 하면 끝난다. 대부분은 디폴트값을 사용하면 된다.

$/usr/local/openvpn_as/bin/ovpn-init

3. Admin Web Interface에 브라우저를 이용해서 접속한다. 접속 주소는 다음과 같다.

http://<AS 서버 IP 주소>:943/admin

클라이언트 설치하기

OS 별로 여러 클라이언트가 있다. Mac의 경우에는 tunnelblick이라는 오픈 소스 클라이언트가 있다. 설치를 한 후에 설정 디렉토리(/Users/<사용자계정>/Library/Application Support/Tunnelblick/Configurations)에 http://<AS 서버 IP 주소>:943 (/admin은 빼고) 접속해서 다운받은 client.ovpn 파일을 가져다 놓는다.

만일 서버가 공유기 등의 내부에 위치한 경우에는 client.vpn의 서버에 할당된 공인 IP로 아래의 설정 부분을 변경해야 한다.

remote <AS 서버 공인 IP> 1194 udp
remote <AS 서버 공인 IP> 1194 tcp

Tunnelblick 실행하기

준비한 설정 파일을 이용해서 tunnelblick을 실행하면 상단의 상태바에 터널 모양의 아이콘이 생성된다. 클리하고 연결을 실행하면 연결이 된다.  연결 후에 netstat -nr을 이용해서 상태를 보면 다음과 같이 tun0 인터페이스가 추가된 것을 알 수 있을 것이다. AS 서버를 제외한 모든 패킷은 tun0로 가도록 설정이 추가된다.
Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
0/1                10.10.0.129        UGSc            7        0    tun0
10.10.0.128/25     10.10.0.130        UGSc           12        0    tun0
10.10.0.130        10.10.0.130        UH              3        0    tun0
<AS 서버 주소>/32  192.168.1.254      UGSc            1        0     en1
128.0/1            10.10.0.129        UGSc            4        0    tun0
: