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
ສຳ ເນົາໃບຢັ້ງຢືນໃຫ້ລູກຄ້າແລະເຄື່ອງແມ່ຂ່າຍຂອງເຄື່ອງແມ່ຂ່າຍດັ່ງຕໍ່ໄປນີ້.
<
ເພື່ອຕັ້ງຄ່າຄີແລະໃບຢັ້ງຢືນໃນເຊີຟເວີ, ໃຫ້ ດຳ ເນີນການ ຄຳ ສັ່ງ.
# 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