샌드박스 VPN 서버로 설정

고정 IP가 필요하기 때문에 VPN 서버를 구축하여 고정 IP를 시도해 봤습니다.

벚꽃 VPS 계약설치 우분투 20.04


이 일대는 포치포치와 GUI로만 해서 생략합니다.
최소한
  • 공개 키의 ssh 로그인만 허용
  • 루트에서 ssh 로그인을 미리 할 수 없음
  • 22에서 ssh 포트 변경
  • 를 가설10022로 설정하고 글을 미리 쓴다
  • 그룹 필터 설정을 통해 ssh용 포트만 비워두기
  • OpenVPN 설치


    귀찮아서 루트 사용자로 쉽게 했어요.
    # apt-get update
    # apt-get install openvpn libssl-dev openssl easy-rsa
    

    인증 키 생성


    초기 설정


    # cd /etc/openvpn/easy-rsa
    # ./easyrsa init-pki
    # vim vars
    
    Key
    Value
    EASYRSA_REQ_COUNTRY
    국가.설정JPEASYRSA_REQ_PROVINCE
    도도부 현
    EASYRSA_REQ_CITY
    시내
    EASYRSA_REQ_ORG
    회사명개인이라면 적당히.
    EASYRSA_REQ_EMAIL
    전자 우편 주소
    EASYRSA_REQ_OU
    부서 이름?개인이라면 적당히.
    EASYRSA_CA_EXPIRE
    CA 인증서의 기간좀 길게 기르는 게 좋을 것 같아요.3650일에 설정된 기사도 있다.
    EASYRSA_CERT_EXPIRE
    증서 기한.이것도 길러.
    설정

    CA 인증서 작성


    # cd /etc/openvpn/easy-rsa
    # ./easyrsa build-ca
    # cp pki/ca.crt /etc/openvpn
    
    암호문이 들리기 때문에 1Password 등을 사용하여 적당한 암호문을 생성하고 사용한다.

    서버 인증서 만들기


    # cd /etc/openvpn/easy-rsa
    # ./easyrsa build-server-full server nopass
    # cp pki/issued/server.crt /etc/openvpn
    # cp pki/private/server.key /etc/openvpn
    
    CA 인증서의 암호가 들리므로

    DH 매개변수 생성


    # cd /etc/openvpn/easy-rsa
    # ./easyrsa gen-dh
    # cp pki/dh.pem /etc/openvpn
    

    클라이언트 인증서 생성


    # cd /etc/openvpn/easy-rsa
    # ./easyrsa gen-crl
    # cp pki/crl.pem /etc/openvpn
    # chmod o+r /etc/openvpn/crl.pem
    
    CA 인증서의 암호가 들리므로

    OpenVPN 설정


    설정
    # vim /etc/openvpn/server.conf
    
    dhcp-option DNS하면 이름을 해결할 수 없기 때문에 여기서 논평합니다.
    /etc/openvpn/server.conf
    port 1194
    proto udp
    
    dev tun
    
    ca ca.crt
    cert server.crt
    key server.key
    dh dh.pem
    crl-verify crl.pem
    
    server 10.8.0.0 255.255.255.0
    topology subnet
    
    ifconfig-pool-persist /var/log/openvpn/ipp.txt
    
    push "redirect-gateway def1 bypass-dhcp"
    push "route 10.8.0.0 255.255.255.0"
    
    # いろんな記事でDNS設定しろと書いてあるけどさくらVPSのDNS設定しても動かなかったので指定はしない
    # push "dhcp-option DNS 133.242.0.3"
    # push "dhcp-option DNS 133.242.0.4"
    
    client-to-client
    
    keepalive 10 120
    cipher AES-256-CBC
    comp-lzo
    
    user nobody
    group nogroup
    
    persist-key
    persist-tun
    
    status /var/log/openvpn/openvpn-status.log
    
    log         /var/log/openvpn/openvpn.log
    log-append  /var/log/openvpn/openvpn.log
    
    verb 3
    
    explicit-exit-notify 1
    

    방화벽 구성


    ufw 구성


    # ufw default deny
    # ufw allow 1194/udp
    # ufw allow 10022 # 自分で設定したsshのポート
    # ufw status
    # ufw enable
    

    전달 설정


    # vim /etc/default/ufw
    
    /etc/default/ufw
    - DEFAULT_FORWARD_POLICY="DROP"
    + DEFAULT_FORWARD_POLICY="ACCEPT"
    
    # vim /etc/ufw/sysctl.conf
    
    /etc/ufw/sysctl.conf
    - # net.ipv4.ip_forward=1
    + net.ipv4.ip_forward=1
    

    IP 마스카라 설정

  • 기본nic
  • 확인
    # ip -4 route ls | grep default | grep -Po '(?<=dev )(\S+)' | head -1
    
  • /etc/ufw/before.rules의 수정
  • # vim /etc/ufw/before.rules
    
    맨 위에 nat의 설정을 삽입합니다.ens3 방금 정한nic의 이름을 입력하세요
    /etc/ufw/before.rules
    + *nat
    + :POSTROUTING ACCEPT [0:0]
    + -A POSTROUTING -s 10.8.0.0/24 -o ens3 -j MASQUERADE
    + COMMIT
    
    # Don't delete these required lines, otherwise there will be errors
    *filter
    
    # ufw reload
    
    마지막으로 벚꽃 VPS의 제어판에 그룹 필터 설정을 닫습니다

    OpenVPN 서버 시작


    # service openvpn@server start
    # service openvpn@server status
    ● [email protected] - OpenVPN connection to server
         Loaded: loaded (/lib/systemd/system/[email protected]; enabled; vendor preset: enabled)
         Active: active (running) since Wed 2021-12-29 17:56:51 JST; 45min ago
           Docs: man:openvpn(8)
                 https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
                 https://community.openvpn.net/openvpn/wiki/HOWTO
       Main PID: 601 (openvpn)
         Status: "Initialization Sequence Completed"
          Tasks: 1 (limit: 468)
         Memory: 4.9M
         CGroup: /system.slice/system-openvpn.slice/[email protected]
                 └─601 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/server.conf --writepid /run/openvpn/server.pid
    
    Dec 29 17:56:51 XXX systemd[1]: Starting OpenVPN connection to server...
    Dec 29 17:56:51 XXX systemd[1]: Started OpenVPN connection to server.
    
    active (running)로 바뀌면 OK.자동 시작으로 설정
    # systemctl enable openvpn@server
    

    고객을 위한 프로필 만들기


    개인 키 생성


    # cd /etc/openvpn/easy-rsa
    # ./easyrsa build-client-full username
    
    username 부분을 적당히 교체합니다.테스트 사용자로 설정할 때 미리 쓰기
    # cd /etc/openvpn/easy-rsa
    # cp /etc/openvpn/ca.crt ~ubuntu
    # cp pki/issued/testuser.crt ~ubuntu
    # cp pki/private/testuser.key ~ubuntu
    # chown ubuntu:ubuntu ~ubuntu/ca.crt
    # chown ubuntu:ubuntu ~ubuntu/testuser.crt
    # chown ubuntu:ubuntu ~ubuntu/testuser.key
    

    OpenVPN Connect용 설정 파일 만들기


    여기에는 ubuntu 사용자가 수행합니다.
    $ vim vpn.ovpn
    
    client
    
    dev    tun
    proto  udp
    tun-mtu  1350
    
    # `192.0.2.0` の部分はこのサーバのグローバルIPアドレスを指定する
    remote 192.0.2.0 1194
    
    resolv-retry  infinite
    nobind
    
    persist-key
    persist-tun
    
    # ca.crtの中身を貼り付ける
    # grep -A 30 'BEGIN CERTIFICATE' ca.crt
    # で抽出できる
    <ca>
    ...
    </ca>
    
    # testuser.crtの中身を貼り付ける
    # grep -A 30 'BEGIN CERTIFICATE' testuser.crt
    # で抽出できる
    <cert>
    ...
    </cert>
    
    # testuser.keyの中身を貼り付ける
    <key>
    ...
    </key>
    
    comp-lzo
    verb 3
    
    OpenVPN Connect를 로컬로 가져오는 경우 안전하게 VPN으로 이동해야 합니다.

    원활하지 않을 때

    vpn.ovpn에 로그가 있으므로 오류 메시지가 표시되고 로그가 깨집니다.

    좋은 웹페이지 즐겨찾기