OpenVPN Server ແລະການຕິດຕັ້ງແລະຕັ້ງຄ່າລູກຄ້າໃນ Debian 7


ບົດຂຽນນີ້ມີລາຍລະອຽດກ່ຽວກັບວິທີການເຊື່ອມຕໍ່ IPv6 ໃນ OpenVPN ໂດຍໃຊ້ Debian Linux. ຂະບວນການດັ່ງກ່າວໄດ້ຖືກທົດສອບໃນ Debian 7 ໃນ KVM VPS ທີ່ມີການເຊື່ອມຕໍ່ IPv6 ເປັນ server, ແລະ desktop Debian 7. ຄຳ ສັ່ງແມ່ນໃຫ້ໃຊ້ເປັນຮາກ.

OpenVPN ແມ່ນໂປແກຼມ VPN ທີ່ໃຊ້ SSL/TLS ເພື່ອສ້າງການເຊື່ອມຕໍ່ VPN ທີ່ປອດໄພ, ເຂົ້າລະຫັດ, ເພື່ອການຈະລາຈອນທາງອິນເຕີເນັດຂອງທ່ານ, ດັ່ງນັ້ນຈຶ່ງປ້ອງກັນການ snooping. Open VPN ແມ່ນມີຄວາມສາມາດສູງໃນການເດີນທາງດ້ວຍຄວາມໂປ່ງໃສຜ່ານ firewalls. ໃນຄວາມເປັນຈິງ, ຖ້າສະຖານະການຕ້ອງການ, ທ່ານສາມາດແລ່ນມັນຢູ່ໃນພອດ TCP ດຽວກັນກັບ HTTPS (443), ເຮັດໃຫ້ການຈະລາຈອນບໍ່ສາມາດແຍກອອກໄດ້ແລະດັ່ງນັ້ນຈຶ່ງບໍ່ສາມາດສະກັດກັ້ນໄດ້.

OpenVPN ສາມາດ ນຳ ໃຊ້ຫລາຍໆວິທີເຊັ່ນ: ຄີລັບທີ່ໄດ້ແບ່ງປັນລ່ວງ ໜ້າ, ໃບຢັ້ງຢືນຫລືຊື່ຜູ້ໃຊ້/ລະຫັດຜ່ານ, ເພື່ອໃຫ້ລູກຄ້າກວດສອບຄວາມຖືກຕ້ອງກັບເຊີບເວີ. OpenVPN ໃຊ້ OpenSSL ອະນຸສັນຍາແລະປະຕິບັດຄຸນນະສົມບັດຄວາມປອດໄພແລະການຄວບຄຸມຫຼາຍຢ່າງເຊັ່ນ: ການກວດສອບການຕອບສະ ໜອງ ຄວາມທ້າທາຍ, ຄວາມສາມາດໃນການເຊັນດຽວ, ການດຸ່ນດ່ຽງການໂຫຼດແລະຄຸນລັກສະນະທີ່ຫຼົ້ມເຫຼວແລະການສະ ໜັບ ສະ ໜູນ daemon.

ຄິດວ່າການສື່ສານທີ່ປອດໄພ - ຄິດວ່າ OpenVPN. ຖ້າທ່ານບໍ່ຕ້ອງການໃຫ້ຜູ້ໃດເຂົ້າຊົມການຈະລາຈອນທາງອິນເຕີເນັດຂອງທ່ານ, ໃຫ້ໃຊ້ OpenVPN ເພື່ອ ນຳ ໃຊ້ເສັ້ນທາງການຈະລາຈອນຂອງທ່ານທັງ ໝົດ ໂດຍຜ່ານອຸໂມງທີ່ມີການເຂົ້າລະຫັດແລະປອດໄພສູງ.

ນີ້ມີຄວາມ ສຳ ຄັນເປັນພິເສດເມື່ອເຊື່ອມຕໍ່ກັບເຄືອຂ່າຍ WIFI ສາທາລະນະໃນສະ ໜາມ ບິນແລະສະຖານທີ່ອື່ນໆ. ທ່ານບໍ່ສາມາດແນ່ໃຈໄດ້ວ່າຜູ້ໃດ ກຳ ລັງຈະເຂົ້າໄປໃນການຈະລາຈອນຂອງທ່ານ. ທ່ານສາມາດສົ່ງຊ່ອງທາງການຈະລາຈອນຂອງທ່ານຜ່ານເຊີຟເວີ OpenVPN ຂອງທ່ານເອງເພື່ອປ້ອງກັນບໍ່ໃຫ້ຖືກລັກ.

ຖ້າທ່ານຢູ່ໃນປະເທດໃດ ໜຶ່ງ ທີ່ຕິດຕາມກວດກາການເຂົ້າຊົມແລະປິດເວັບໄຊທ໌ຂອງທ່ານທັງ ໝົດ ຕາມປົກກະຕິ, ທ່ານສາມາດໃຊ້ OpenVPN ຜ່ານພອດ TCP 443, ເພື່ອເຮັດໃຫ້ມັນແຍກອອກຈາກການຈາລະຈອນຂອງ HTTPS. ທ່ານຍັງສາມາດປະສົມປະສານ OpenVPN ກັບກົນລະຍຸດຄວາມປອດໄພອື່ນໆເຊັ່ນ: ເຈາະອຸໂມງການຈະລາຈອນ OpenVPN ຂອງທ່ານຜ່ານອຸໂມງ SSL, ເພື່ອຕີເຕັກນິກການກວດກາແບບ Packet ແບບເລິກເຊິ່ງອາດຈະສາມາດລະບຸລາຍເຊັນ OpenVPN.

OpenVPN ຮຽກຮ້ອງໃຫ້ມີຄວາມຕ້ອງການຫນ້ອຍທີ່ສຸດທີ່ຈະດໍາເນີນການ. ລະບົບທີ່ມີ RAM 64 MB ແລະຊ່ອງ HDD 1 GB ແມ່ນພຽງພໍທີ່ຈະໃຊ້ງານ OpenVPN. OpenVPN ດຳ ເນີນງານເກືອບທັງ ໝົດ ຂອງລະບົບປະຕິບັດການຫລັກ.

ການຕິດຕັ້ງແລະການຕັ້ງຄ່າຂອງ OpenVPN ເທິງ Debian 7

ດໍາເນີນການຄໍາສັ່ງຕໍ່ໄປນີ້ເພື່ອຕິດຕັ້ງ OpenVPN.

# apt-get install openvpn

ໂດຍຄ່າເລີ່ມຕົ້ນ, ສະຄິບທີ່ງ່າຍ-rsa ຖືກຕິດຕັ້ງຢູ່ພາຍໃຕ້ '/ usr/share/easy-rsa /'. ດັ່ງນັ້ນ, ພວກເຮົາ ຈຳ ເປັນຕ້ອງຄັດລອກສະຄິບເຫລົ່ານີ້ໄປຫາສະຖານທີ່ທີ່ຕ້ອງການ i.e./root/easy-rsa.

# mkdir /root/easy-rsa
cp -prv /usr/share/doc/openvpn/examples/easy-rsa/2.0 /root/easy-rsa

ເປີດແຟ້ມ 'ເປີດ' ແລະເຮັດການປ່ຽນແປງດັ່ງຕໍ່ໄປນີ້, ແຕ່ກ່ອນທີ່ຈະເຮັດການປ່ຽນແປງຂ້ອຍຂໍແນະ ນຳ ໃຫ້ເຈົ້າ ສຳ ຮອງເອກະສານເດີມ.

# cp vars{,.orig}

ການໃຊ້ຕົວແກ້ໄຂຕົວ ໜັງ ສືຂອງທ່ານ, ຕັ້ງຄ່າຄ່າເລີ່ມຕົ້ນ ສຳ ລັບງ່າຍໆ - rsa. ຍົກຕົວຢ່າງ.

KEY_SIZE=4096
KEY_COUNTRY="IN"
KEY_PROVINCE="UP"
KEY_CITY="Noida"
KEY_ORG="Home"
KEY_EMAIL="[email "

ນີ້, ຂ້ອຍ ກຳ ລັງໃຊ້ປຸ່ມ 4096 ນ້ອຍ. ທ່ານສາມາດໃຊ້ຄີບິດ 1024, 2048, 4096 ຫລື 8192 ຕາມຄວາມຕ້ອງການ.

ສົ່ງອອກຄ່າເລີ່ມຕົ້ນໂດຍການແລ່ນ ຄຳ ສັ່ງ.

# source ./vars

ເຮັດຄວາມສະອາດໃບຢັ້ງຢືນໃດໆທີ່ຖືກສ້າງຂື້ນໃນເມື່ອກ່ອນ.

./clean-all

ຕໍ່ໄປ, ດໍາເນີນການຄໍາສັ່ງຕໍ່ໄປນີ້ເພື່ອສ້າງໃບຢັ້ງຢືນ CA ແລະຄີ CA.

# ./build-ca

ສ້າງໃບຢັ້ງຢືນການເຊີຟເວີໂດຍການແລ່ນ ຄຳ ສັ່ງ. ປ່ຽນຊື່ ‘server server’ ໃສ່ຊື່ server ຂອງທ່ານ.

# ./build-key-server server-name

ສ້າງໃບຢັ້ງຢືນ Diffie Hellman PEM.

# ./build-dh

ສ້າງໃບຢັ້ງຢືນລູກຄ້າ. ປ່ຽນແທນ ‘ຊື່ລູກຄ້າ’ ພ້ອມດ້ວຍຊື່ລູກຄ້າຂອງທ່ານ.

# ./build-key client-name

ສ້າງລະຫັດ HMAC.

# openvpn --genkey --secret /root/easy-rsa/keys/ta.key

ສຳ ເນົາໃບຢັ້ງຢືນໃຫ້ລູກຄ້າແລະເຄື່ອງແມ່ຂ່າຍຂອງເຄື່ອງແມ່ຂ່າຍດັ່ງຕໍ່ໄປນີ້.

<

  • ຮັບປະກັນວ່າ ca.crt ມີຢູ່ທັງລູກຄ້າແລະເຊີບເວີ.
  • ກະແຈ ca.key ຄວນຢູ່ກັບລູກຄ້າ.
  • ເຄື່ອງແມ່ຂ່າຍຕ້ອງການ server.crt, dh4096.pem, server.key ແລະ ta.key.
  • client.crt, client.key ແລະ ta.key ຄວນຢູ່ກັບລູກຄ້າ.
  • ເພື່ອຕັ້ງຄ່າຄີແລະໃບຢັ້ງຢືນໃນເຊີຟເວີ, ໃຫ້ ດຳ ເນີນການ ຄຳ ສັ່ງ.

    # mkdir -p /etc/openvpn/certs
    # cp -pv /root/easy-rsa/keys/{ca.{crt,key},server-name.{crt,key},ta.key,dh4096.pem} /etc/openvpn/certs/

    ຕອນນີ້ທ່ານ ຈຳ ເປັນຕ້ອງ ກຳ ຫນົດຄ່າເຊີຟເວີ OpenVPN. ເປີດເອກະສານ ‘/etc/openvpn/server.conf‘. ກະລຸນາເຮັດການປ່ຽນແປງຕາມທີ່ອະທິບາຍຂ້າງລຸ່ມນີ້.

    script security 3 system
    port 1194
    proto udp
    dev tap
    
    ca /etc/openvpn/certs/ca.crt
    cert /etc/openvpn/certs/server-name.crt
    key /etc/openvpn/certs/server-name.key
    dh /etc/openvpn/certs/dh4096.pem
    tls-auth /etc/openvpn/certs/ta.key 0
    
    server 192.168.88.0 255.255.255.0
    ifconfig-pool-persist ipp.txt
    push "redirect-gateway def1 bypass-dhcp"
    push "dhcp-option DNS 8.8.8.8"
    push "dhcp-option DNS 8.8.4.4"
    
    keepalive 1800 4000
    
    cipher DES-EDE3-CBC # Triple-DES
    comp-lzo
    
    max-clients 10
    
    user nobody
    group nogroup
    
    persist-key
    persist-tun
    
    #log openvpn.log
    #status openvpn-status.log
    verb 5
    mute 20

    ເປີດໃຊ້ການສົ່ງຕໍ່ IP ໃນເຊີບເວີ.

    # echo 1 > /proc/sys/net/ipv4/ip_forward

    ດໍາເນີນການຄໍາສັ່ງຕໍ່ໄປນີ້ເພື່ອຕັ້ງ OpenVPN ເພື່ອເລີ່ມຕົ້ນການໃສ່ເກີບ.

    # update-rc.d -f openvpn defaults

    ເລີ່ມຕົ້ນໃຫ້ບໍລິການ OpenVPN.

    # service openvpn restart

    ດໍາເນີນການຄໍາສັ່ງຕໍ່ໄປນີ້ເພື່ອຕິດຕັ້ງ OpenVPN ໃນເຄື່ອງຂອງລູກຄ້າ.

    # apt-get install openvpn

    ການໃຊ້ຕົວແກ້ໄຂຕົວ ໜັງ ສື, ຕັ້ງຄ່າການຕັ້ງຄ່າລູກຄ້າ OpenVPN ໃນ '/etc/openvpn/client.conf', ໃສ່ລູກຄ້າ. ການຕັ້ງຄ່າຕົວຢ່າງແມ່ນດັ່ງຕໍ່ໄປນີ້:

    script security 3 system
    client
    remote vpn_server_ip
    ca /etc/openvpn/certs/ca.crt
    cert /etc/openvpn/certs/client.crt
    key /etc/openvpn/certs/client.key
    cipher DES-EDE3-CBC
    comp-lzo yes
    dev tap
    proto udp
    tls-auth /etc/openvpn/certs/ta.key 1
    nobind
    auth-nocache
    persist-key
    persist-tun
    user nobody
    group nogroup

    ດໍາເນີນການຄໍາສັ່ງຕໍ່ໄປນີ້ເພື່ອຕັ້ງ OpenVPN ເພື່ອເລີ່ມຕົ້ນການໃສ່ເກີບ.

    # update-rc.d -f openvpn defaults

    ເລີ່ມບໍລິການ OpenVPN ໃນລູກຄ້າ.

    # service openvpn restart

    ເມື່ອທ່ານພໍໃຈທີ່ OpenVPN ເຮັດວຽກໄດ້ດີໃນ IPv4, ນີ້ແມ່ນວິທີການເຮັດໃຫ້ IPv6 ເຮັດວຽກຫຼາຍກວ່າ OpenVPN.

    ຕື່ມສາຍຕໍ່ໄປນີ້ໃສ່ທ້າຍຂອງການຕັ້ງຄ່າເຊີບເວີ '/etc/openvpn/server.conf'.

    client-connect /etc/openvpn/client-connect.sh
    client-disconnect /etc/openvpn/client-disconnect.sh

    ສອງສະຄິບເຫລົ່ານີ້ສ້າງ/ທຳ ລາຍອຸໂມງ IPv6 ໃນແຕ່ລະຄັ້ງທີ່ລູກຄ້າເຊື່ອມຕໍ່/ຕັດສາຍ.

    ນີ້ແມ່ນເນື້ອໃນຂອງ client-connect.sh.

    #!/bin/bash
    BASERANGE="2a00:dd80:003d:000c"
    ifconfig $dev up
    ifconfig $dev add ${BASERANGE}:1001::1/64
    ip -6 neigh add proxy 2a00:dd80:003d:000c:1001::2 dev eth0
    exit 0

    ເຈົ້າພາບຂອງຂ້ອຍມອບໃຫ້ຂ້ອຍທີ່ຢູ່ IPV6 ຈາກທ່ອນ 2a00: dd80: 003d: 000c ::/64. ເພາະສະນັ້ນ, ຂ້ອຍໃຊ້
    2a00: dd80: 003d: 000c ເປັນ BASERANGE. ດັດແປງມູນຄ່ານີ້ໃຫ້ສອດຄ່ອງກັບສິ່ງທີ່ເຈົ້າພາບຂອງເຈົ້າໄດ້ມອບ ໝາຍ ໃຫ້ເຈົ້າ.

    ແຕ່ລະຄັ້ງທີ່ລູກຄ້າເຊື່ອມຕໍ່ກັບ OpenVPN, ບົດຂຽນນີ້ມອບ ໝາຍ ທີ່ຢູ່ 2a00: dd80: 003d: 000c: 1001 :: 1 ເປັນທີ່ຢູ່ IPV6 ຂອງອິນເຕີເຟດ tap0 ຂອງເຊີບເວີ.

    ສາຍສຸດທ້າຍຕັ້ງ Neighbor Discovery ສຳ ລັບອຸໂມງຂອງພວກເຮົາ. ຂ້ອຍໄດ້ເພີ່ມທີ່ຢູ່ IPv6 ຂອງການເຊື່ອມຕໍ່ tap0 ຂອງລູກຄ້າເປັນທີ່ຢູ່ຂອງຕົວແທນ.

    ນີ້ແມ່ນເນື້ອໃນຂອງ client-disconnect.sh.

    #!/bin/bash
    BASERANGE="2a00:dd80:003d:000c"
    /sbin/ip -6 addr del ${BASERANGE}::1/64 dev $dev
    exit 0

    ນີ້ພຽງແຕ່ລຶບທີ່ຢູ່ອຸໂມງ IPv6 ຂອງເຊີບເວີ, ເມື່ອລູກຄ້າຕັດການເຊື່ອມຕໍ່. ດັດແປງຄຸນຄ່າຂອງ BASERANGE ຕາມຄວາມ ເໝາະ ສົມ.

    ເຮັດໃຫ້ສະຄິບສາມາດປະຕິບັດໄດ້.

    # chmod 700 /etc/openvpn/client-connect.sh
    # chmod 700 /etc/openvpn/client-disconnect.sh

    ຕື່ມລາຍການຕໍ່ໄປນີ້ໃສ່ '/etc/rc.local' (ທ່ານຍັງສາມາດດັດແປງ sysctls ທີ່ ເໝາະ ສົມໃນ /etc/sysctl.conf).

    echo 1 >/proc/sys/net/ipv6/conf/all/proxy_ndp
    echo 1 > /proc/sys/net/ipv4/ip_forward
    echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
    /etc/init.d/firewall stop && /etc/init.d/firewall start

    ການອອກສຽງເຫຼົ່ານີ້ກະຕຸ້ນ Neighbor Discovery ແລະການສົ່ງຕໍ່. ຂ້ອຍຍັງໄດ້ເພີ່ມໄຟວໍ.

    ສ້າງ ‘/etc/init.d/firewall’ ແລະໃສ່ເນື້ອໃນຕໍ່ໄປນີ້.

    #!/bin/sh
    # description: Firewall
    IPT=/sbin/iptables
    IPT6=/sbin/ip6tables
    case "$1" in
    start)
    $IPT -F INPUT
    $IPT -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
    $IPT -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
    $IPT -A INPUT -i eth0 -p icmp -j ACCEPT
    $IPT -A INPUT -i eth0 -p udp --dport 1194 -j ACCEPT
    $IPT -A INPUT -i tap+ -j ACCEPT
    $IPT -A FORWARD -i tap+ -j ACCEPT
    $IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
    $IPT -t nat -F POSTROUTING
    $IPT -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
    $IPT -A INPUT -i eth0 -j DROP
    $IPT6 -F INPUT
    $IPT6 -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
    $IPT6 -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
    $IPT6 -A INPUT -i eth0 -p icmpv6 -j ACCEPT
    $IPT6 -A FORWARD -s 2a00:dd80:003d:000c::/64 -i tap0 -o eth0 -j ACCEPT
    $IPT6 -A INPUT -i eth0 -j DROP
    exit 0
    ;;
    stop)
    $IPT -F
    $IPT6 -F
    exit 0
    ;;
    *)
    echo "Usage: /etc/init.d/firewall {start|stop}"
    exit 1
    ;;
    esac

    ດໍາເນີນການ '/etc/rc.local' ແລະເລີ່ມຕົ້ນໄຟວໍ.

    # sh /etc/rc.local

    ນີ້ເຮັດ ສຳ ເລັດການດັດແປງດ້ານເຊີເວີ້.

    ຕື່ມໃສ່ສິ່ງຕໍ່ໄປນີ້ເປັນສາຍສຸດທ້າຍຂອງແຟ້ມການຕັ້ງຄ່າລູກຄ້າຂອງທ່ານ '/etc/openvpn/client.conf'.

    # create the ipv6 tunnel
    up /etc/openvpn/up.sh
    down /etc/openvpn/down.sh
    # need this so when the client disconnects it tells the server
    explicit-exit-notify

    ສະຄິບທີ່ຂື້ນແລະລົງກໍ່ສ້າງ/ທຳ ລາຍຈຸດຈົບຂອງລູກຄ້າ IPV6 ຂອງການເຊື່ອມຕໍ່ລູກຄ້າ tap0 ໃນແຕ່ລະຄັ້ງທີ່ລູກຄ້າເຊື່ອມຕໍ່/ຕັດການເຊື່ອມຕໍ່ໄປຫາຫຼືຈາກເຄື່ອງແມ່ຂ່າຍ OpenVPN.

    ນີ້ແມ່ນເນື້ອໃນຂອງ up.sh.

    #!/bin/bash
    IPV6BASE="2a00:dd80:3d:c"
    ifconfig $dev up
    ifconfig $dev add ${IPV6BASE}:1001::2/64
    ip -6 route add default via ${IPV6BASE}:1001::1
    exit 0

    ສະຄິບ ກຳ ນົດທີ່ຢູ່ IPV6 2a00: dd80: 3d: c: 1001 :: 2 ເປັນທີ່ຢູ່ IPV6 ຂອງລູກຄ້າແລະ ກຳ ນົດເສັ້ນທາງ IPV6 ໃນຕອນຕົ້ນຜ່ານ server.

    ດັດແປງ IPV6BASE ໃຫ້ຄືກັນກັບ BASERANGE ໃນການຕັ້ງຄ່າເຊີຟເວີ.

    ນີ້ແມ່ນເນື້ອໃນຂອງ down.sh.

    #!/bin/bash
    IPV6BASE="2a00:dd80:3d:c"
    /sbin/ip -6 addr del ${IPV6BASE}::2/64 dev $dev
    /sbin/ip link set dev $dev down
    /sbin/ip route del ::/0 via ${IPV6BASE}::1
    exit 0

    ນີ້ພຽງແຕ່ລຶບທີ່ຢູ່ IPV6 ຂອງລູກຄ້າແລະເຮັດໃຫ້ເສັ້ນທາງ IPV6 ຫຼຸດລົງເມື່ອລູກຄ້າຕັດການເຊື່ອມຕໍ່ຈາກ server.

    ດັດແປງ IPV6BASE ໃຫ້ຄືກັນກັບ BASERANGE ໃນການຕັ້ງຄ່າຂອງ server ແລະເຮັດໃຫ້ script ສາມາດໃຊ້ງານໄດ້.

    # chmod 700 /etc/openvpn/up.sh
    # chmod 700 /etc/openvpn/down.sh

    ທາງເລືອກອື່ນ, ດັດແປງ ‘/etc/resolv.conf’ ແລະເພີ່ມ nameservers IPV6 ຂອງ Google ສຳ ລັບການແກ້ໄຂບັນຫາ DNS.

    nameserver 2001:4860:4860::8888
    nameserver 2001:4860:4860::8844

    Restart openvpn ເທິງ server ແລະຫຼັງຈາກນັ້ນເຊື່ອມຕໍ່ກັບມັນຈາກລູກຄ້າ. ທ່ານຄວນຈະເຊື່ອມຕໍ່. ເຂົ້າເບິ່ງ test-ipv6.com ເພື່ອເບິ່ງວ່າການເຊື່ອມຕໍ່ IPV6 ຂອງທ່ານຜ່ານ OpenVPN ແມ່ນ ກຳ ລັງເຮັດວຽກຢູ່.

    ລິ້ງອ້າງອີງ

    ໜ້າ ທຳ ອິດຂອງ OpenVPN