Raspberry Pi 로 PPTP SERVER 구축하기.

pptp server 를 구축하게 된 이유.

  • 내 서버는 내부 내트워크에 설치 되어 있어서 공인 아이피가 없다.

  • pptp vpn 서비스를 이용해서 내 서버에 고정 아이피를 할당해서 서버를 운영 중 이다.

  • ip4 에서 vpn 유료 서비스를 이용하고 있었는데, 돈이 아까웠다.

  • 친구집의 인터넷이 공인 아이피더라. 공인 아이피가 무려 4개나 들어 오더라.

  • 그래서 놀고 있던 라즈베리 파이 2 를 친구내 집에 설치해서 vpn 서버를 운영함으로서 비용을 절약 할 수 있었음.

내 서버 상태.

  • 내 서버는 공인 아이피 -> 친구네집 -> 라즈베리파이 pptp server -> 내 서버 이렇게 운영이 된다.

글을 남기는 이유.

  • 이미 인터넷에 pptp server를 구축하는 글은 많은데 나처럼 사용하는 사람은 없더라.

  • 일반 적으로 pptp server 를 구축한 뒤 pptp vpn 으로 인터넷 서핑만 하려면 이 포스팅은 필요 없다.

구축환경.

  • 라즈베리 파이 (Ubuntu)

본문.

  1. 난 전문적인 지식이 없음. 그냥 내가 대충 막해서 성공한 내역을 기록 함.

  2. 우선 업데이트 하자.

    sudo apt-get update && sudo apt-get upgrade

  3. pptp 를 설치하자.

    sudo apt-get install pptpd

    그리고 재부팅 후에도 자동으로 시작하게 설정하자.

    sudo systemctl enable pptpd

  4. /etc/pptpd.conf 파일을 수정하자.

    vim /etc/pptpd.conf

    파일 마지막에 아래 내용을 추가한다.

    localip 192.168.99.1
    remoteip 192.168.99.200-210

  5. /etc/ppp/pptpd-options 파일을 수정한다.

    vim /etc/ppp/pptpd-options

    마지막에 다음을 추가한다.

    ms-dns 8.8.8.8
    ms-dns 8.8.4.4
    noipx
    mtu 1490
    mru 1490

    그리고 이 부분이 중요 함. require-mppe-128 이 부분을 찾아서 주석 처리 한다.

    # require-mppe-128

    이 부분을 주석 처리 하지 않으면 pptp 연결 설정할 때 pptp 접속 시 보안 사용 옵션을 체크 해야 하는데,

    난 리눅스에서 pptp 연결 할 때 보안 사용 옵션을 사용할 줄 모른다.;;;

    사용 할 줄 아는 사람은 저 부분을 주석 처리 하지 않아도 된다.

  6. 이제 사용자를 추가하자.

    vim /etc/ppp/chap-secrets

    Username[TAB]*[TAB]password[TAB]*

    이런 식으로 추가 하면 된다

    Userid  *   PassWd  *
  7. /etc/sysctl.conf 파일을 수정한다.

    vim /etc/sysctl.conf

    #net.ipv4.ip_forward=1 이 부분을 찾아 주석 처리를 해제 한다.

    net.ipv4.ip_forward=1

    이런식으로 정의 되어 있어야 한다.

  8. 그리고 라우팅 추가.

    sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

  9. 라즈베리 파이 ubuntu 에는 iptables 가 설치 되어 있지 않다. 설치하자.

    iptables 를 설치 하지 않아도 되지만 서버 운영을 위해서 포트포워딩이 필요하다.

    그래서 나는 iptables 가 필요 했다.

    apt-get install iptables-persistent

    iptables 을 설정하자.

    vim /etc/iptables/rules.v4

    아래는 나의 iptables 내역.

    # Generated by iptables-save v1.4.21 on Mon Feb 27 10:49:12 2017
    *filter
    :INPUT ACCEPT [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
    -A INPUT -i eth0 -p tcp -m tcp --dport 1723 -j ACCEPT
    -A INPUT -i eth0 -p gre -j ACCEPT
    
    -A FORWARD -s 192.168.99.0/24 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j TCPMSS --set-mss 1356
    
    COMMIT
    # Completed on Mon Feb 27 10:49:12 2017
    # Generated by iptables-save v1.4.21 on Mon Feb 27 10:49:12 2017
    *nat
    :PREROUTING ACCEPT [14:1824]
    :INPUT ACCEPT [14:1824]
    :OUTPUT ACCEPT [38:3758]
    :POSTROUTING ACCEPT [0:0]
    -A POSTROUTING -o eth0 -j MASQUERADE
    
    -A PREROUTING -p tcp -i eth0 --dport 9091 -j DNAT --to 192.168.99.200:9091
    -A PREROUTING -p tcp -i eth0 --dport 80 -j DNAT --to 192.168.99.200:80
    -A PREROUTING -p tcp -i eth0 --dport 32400 -j DNAT --to 192.168.99.200:32400
    -A PREROUTING -p tcp -i eth0 --dport 222 -j DNAT --to 192.168.99.200:222
    
    COMMIT
    # Completed on Mon Feb 27 10:49:12 2017

    각 부분을 설명한다.

    이 부분은

    -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
    -A INPUT -i eth0 -p tcp -m tcp --dport 1723 -j ACCEPT
    -A INPUT -i eth0 -p gre -j ACCEPT
    
    -A FORWARD -s 192.168.99.0/24 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j TCPMSS --set-mss 1356

    기본적으로 설정이 되어 있을 수도 있다.

    아래 부분은 내가 정의한 내역이다. 공인 아이피로 들어 오는 특정포트를 내가 접속한 vpn 주소로 포트 포워딩 시키는 역활을 한다.

    -A PREROUTING -p tcp -i eth0 --dport 9091 -j DNAT --to 192.168.99.200:9091
    -A PREROUTING -p tcp -i eth0 --dport 80 -j DNAT --to 192.168.99.200:80
    -A PREROUTING -p tcp -i eth0 --dport 32400 -j DNAT --to 192.168.99.200:32400
    -A PREROUTING -p tcp -i eth0 --dport 222 -j DNAT --to 192.168.99.200:222

    위에서 remoteip 192.168.99.200-210 이렇게 설정이 되어 있으므로,내 서버에서 vpn 접속을 하면 192.168.99.200 아이피를 할당 받더라.

    그래서 내가 원하는 포트들을 192.168.99.200 번으로 포워딩 시킴으로서 서버 운영이 가능해 진다.

  10. iptables 를 수정했으면 reload 한다.

 sudo netfilter-persistent reload

  1. 구축 끝 .

    이제 클라이언트 서버에서 pptp로 vpn 서버에 접속하면 된다.

참고한 사이트.

다음에는 client 서버에서 pptp 를 접속하는 방법을 기록 하겠다.

오류나 잘 못된 부분이 있으면 알려주세요.

'Linux' 카테고리의 다른 글

Centos 에 Docker 설치하기  (0) 2017.03.03