OpenVPN 'เจคเฉ‡ เจ‡เฉฑเจ• SMB เจธเฉฐเจธเจฅเจพ เจฆเฉ‡ เจฐเจฟเจฎเฉ‹เจŸ เจ•เฉฐเจฎ เจฆเจพ เจธเฉฐเจ—เจ เจจ

เจธเจฎเฉฑเจธเจฟเจ† เจฆเจพ เจ—เจ เจจ

เจฒเฉ‡เจ– เจ“เจชเจจ เจธเฉ‹เจฐเจธ เจ‰เจคเจชเจพเจฆเจพเจ‚ 'เจคเฉ‡ เจ•เจฐเจฎเจšเจพเจฐเฉ€เจ†เจ‚ เจฒเจˆ เจฐเจฟเจฎเฉ‹เจŸ เจเจ•เจธเฉˆเจธ เจฆเฉ‡ เจธเฉฐเจ—เจ เจจ เจฆเจพ เจตเจฐเจฃเจจ เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจ–เฉเจฆเจฎเฉเจ–เจคเจฟเจ†เจฐ เจชเฉเจฐเจฃเจพเจฒเฉ€ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจฆเฉ‹เจตเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เฉ€เจคเฉ€ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆ, เจ…เจคเฉ‡ เจฎเฉŒเจœเฉ‚เจฆเจพ เจตเจชเจพเจฐเจ• เจชเฉเจฐเจฃเจพเจฒเฉ€ เจตเจฟเฉฑเจš เจฒเจพเจ‡เจธเฉˆเจ‚เจธเจพเจ‚ เจฆเฉ€ เจ˜เจพเจŸ เจนเฉ‹เจฃ เจœเจพเจ‚ เจ‡เจธเจฆเฉ€ เจ•เจพเจฐเจ—เฉเจœเจผเจพเจฐเฉ€ เจจเจพเจ•เจพเจซเจผเฉ€ เจนเฉ‹เจฃ 'เจคเฉ‡ เจตเจฟเจธเจฅเจพเจฐ เจฒเจˆ เจ‰เจชเจฏเฉ‹เจ—เฉ€ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค

เจฒเฉ‡เจ– เจฆเจพ เจŸเฉ€เจšเจพ เจ•เจฟเจธเฉ‡ เจธเฉฐเจ—เจ เจจ เจจเฉ‚เฉฐ เจฐเจฟเจฎเฉ‹เจŸ เจเจ•เจธเฉˆเจธ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจธเฉฐเจชเฉ‚เจฐเจจ เจชเฉเจฐเจฃเจพเจฒเฉ€ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจเจพ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ "10 เจฎเจฟเฉฐเจŸเจพเจ‚ เจตเจฟเฉฑเจš เจ“เจชเจจเจตเฉ€เจชเฉ€เจเจจ เจธเจฅเจพเจชเจค เจ•เจฐเจจ" เจจเจพเจฒเฉ‹เจ‚ เจฅเฉ‹เฉœเฉเจนเจพ เจตเฉฑเจง เจนเฉˆเฅค

เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเจฟเจธเจŸเจฎ เจฎเจฟเจฒเฉ‡เจ—เจพ เจœเจฟเจธ เจตเจฟเฉฑเจš เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจ…เจคเฉ‡ (เจตเจฟเจ•เจฒเจชเจฟเจ• เจคเฉŒเจฐ 'เจคเฉ‡) เจ•เจพเจฐเจชเฉ‹เจฐเฉ‡เจŸ เจเจ•เจŸเจฟเจต เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉเจฐเจฎเจพเจฃเจฟเจค เจ•เจฐเจจ เจฒเจˆ เจ•เฉ€เจคเฉ€ เจœเจพเจตเฉ‡เจ—เฉ€เฅค เจ•เจฟ. เจธเจพเจจเฉ‚เฉฐ เจฆเฉ‹ เจคเจธเจฆเฉ€เจ• เจ•เจพเจฐเจ•เจพเจ‚ เจตเจพเจฒเจพ เจ‡เฉฑเจ• เจธเจฟเจธเจŸเจฎ เจฎเจฟเจฒเฉ‡เจ—เจพ - เจฎเฉ‡เจฐเฉ‡ เจ•เฉ‹เจฒ เจ•เฉ€ เจนเฉˆ (เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ) เจ…เจคเฉ‡ เจœเฉ‹ เจฎเฉˆเจ‚ เจœเจพเจฃเจฆเจพ เจนเจพเจ‚ (เจชเจพเจธเจตเจฐเจก)เฅค

เจ‡เฉฑเจ• เจจเจฟเจธเจผเจพเจจเฉ€ เจœเจฟเจธ เจตเจฟเฉฑเจš เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจจเฉ‚เฉฐ เจœเฉเฉœเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฑเจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ เจ‰เจน เจนเฉˆ myVPNUsr เจธเจฎเฉ‚เจน เจตเจฟเฉฑเจš เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจธเจฆเฉฑเจธเจคเจพเฅค เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจ…เจฅเจพเจฐเจŸเฉ€ เจจเฉ‚เฉฐ เจ”เจซเจฒเจพเจˆเจจ เจตเจฐเจคเจฟเจ† เจœเจพเจตเฉ‡เจ—เจพเฅค

เจนเฉฑเจฒ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเฉ€ เจฒเจพเจ—เจค เจธเจฟเจฐเจซ เจ›เฉ‹เจŸเฉ‡ เจนเจพเจฐเจกเจตเฉ‡เจ…เจฐ เจธเจฐเฉ‹เจค เจ…เจคเฉ‡ เจธเจฟเจธเจŸเจฎ เจชเฉเจฐเจธเจผเจพเจธเจ• เจฆเจพ 1 เจ˜เฉฐเจŸเฉ‡ เจฆเจพ เจ•เฉฐเจฎ เจนเฉˆเฅค

เจ…เจธเฉ€เจ‚ CetntOS 3 'เจคเฉ‡ OpenVPN เจ…เจคเฉ‡ Easy-RSA เจธเฉฐเจธเจ•เจฐเจฃ 7 เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡, เจœเจฟเจธ เจจเฉ‚เฉฐ 100 vCPUs เจ…เจคเฉ‡ 4 GiB RAM เจชเฉเจฐเจคเฉ€ 4 เจ•เฉเจจเฉˆเจ•เจธเจผเจจ เจฆเจฟเฉฑเจคเฉ‡ เจ—เจ เจนเจจเฅค

เจ‰เจฆเจพเจนเจฐเจจ เจตเจฟเฉฑเจš, เจธเจพเจกเฉ‡ เจธเฉฐเจ—เจ เจจ เจฆเจพ เจจเฉˆเฉฑเจŸเจตเจฐเจ• 172.16.0.0/16 เจนเฉˆ, เจœเจฟเจธ เจตเจฟเฉฑเจš 172.16.19.123 เจชเจคเฉ‡ เจตเจพเจฒเจพ VPN เจธเจฐเจตเจฐ 172.16.19.0/24, DNS เจธเจฐเจตเจฐ 172.16.16.16 เจ…เจคเฉ‡ 172.16.17.17 เจ…เจคเฉ‡ เจ‰เจช, 172.16.20.0 เจ…เจคเฉ‡ เจ‰เจช 23 เจตเจฟเฉฑเจš เจธเจฅเจฟเจค เจนเฉˆเฅค .XNUMX/XNUMX VPN เจ•เจฒเจพเจ‡เฉฐเจŸเจธ เจฒเจˆ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค

เจฌเจพเจนเจฐเฉ‹เจ‚ เจœเฉเฉœเจจ เจฒเจˆ, เจชเฉ‹เจฐเจŸ 1194/udp เจฐเจพเจนเฉ€เจ‚ เจ‡เฉฑเจ• เจ•เฉเจจเฉˆเจ•เจธเจผเจจ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจธเจพเจกเฉ‡ เจธเจฐเจตเจฐ เจฒเจˆ DNS เจตเจฟเฉฑเจš เจ‡เฉฑเจ• A-เจฐเจฟเจ•เจพเจฐเจก gw.abc.ru เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆเฅค

SELinux เจจเฉ‚เฉฐ เจ…เจฏเฉ‹เจ— เจ•เจฐเจจ เจฆเฉ€ เจธเจ–เจคเฉ€ เจจเจพเจฒ เจธเจฟเจซเจพเจฐเจธเจผ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€! OpenVPN เจธเฉเจฐเฉฑเจ–เจฟเจ† เจจเฉ€เจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจ…เจฏเฉ‹เจ— เจ•เฉ€เจคเฉ‡ เจฌเจฟเจจเจพเจ‚ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจธเจฎเฉฑเจ—เจฐเฉ€

  1. OS เจ…เจคเฉ‡ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ เจฆเฉ€ เจธเจฅเจพเจชเจจเจพ
  2. เจ•เฉเจฐเจฟเจชเจŸเฉ‹เจ—เฉเจฐเจพเจซเจผเฉ€ เจธเจฅเจพเจชเจค เจ•เฉ€เจคเฉ€ เจœเจพ เจฐเจนเฉ€ เจนเฉˆ
  3. OpenVPN เจธเฉˆเฉฑเจŸเจ…เฉฑเจช
  4. AD เจชเฉเจฐเจฎเจพเจฃเจฟเจ•เจคเจพ
  5. เจธเจŸเจพเจฐเจŸเจ…เจช เจ…เจคเฉ‡ เจกเจพเจ‡เจ—เจจเฉŒเจธเจŸเจฟเจ•เจธ
  6. เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจœเจพเจฐเฉ€ เจ•เจฐเจจเจพ เจ…เจคเฉ‡ เจฐเฉฑเจฆ เจ•เจฐเจจเจพ
  7. เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจธเฉฐเจฐเจšเจจเจพ
  8. เจ…เฉฑเจ—เฉ‡ เจ•เฉ€ เจนเฉˆ

OS เจ…เจคเฉ‡ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ เจฆเฉ€ เจธเจฅเจพเจชเจจเจพ

เจ…เจธเฉ€เจ‚ CentOS 7.8.2003 เจตเฉฐเจก เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจธเฉฐเจฐเจšเจจเจพ เจตเจฟเฉฑเจš OS เจจเฉ‚เฉฐ เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ. เจ‡เจน เจตเจฐเจค เจ•เฉ‡ เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจนเฉˆ เจ•เจฟเฉฑเจ•เจธเจŸเจพเจฐเจŸ, เจชเจนเจฟเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจธเจฅเจพเจชเจฟเจค OS เจšเจฟเฉฑเจคเจฐ เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจธเจพเจงเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจฒเฉ‹เจจ เจ•เจฐเจจเจพเฅค

เจ‡เฉฐเจธเจŸเจพเจฒเฉ‡เจธเจผเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจชเจคเจพ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจเจพ (เจŸเจพเจธเจ• เจฆเฉ€เจ†เจ‚ เจธเจผเจฐเจคเจพเจ‚ 172.16.19.123 เจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐ), เจ…เจธเฉ€เจ‚ OS เจจเฉ‚เฉฐ เจ…เจชเจกเฉ‡เจŸ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚:

$ sudo yum update -y && reboot

เจธเจพเจจเฉ‚เฉฐ เจ‡เจน เจตเฉ€ เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจ•เจฟ เจธเจพเจกเฉ€ เจฎเจธเจผเฉ€เจจ 'เจคเฉ‡ เจธเจฎเฉ‡เจ‚ เจฆเจพ เจธเจฎเจ•เจพเจฒเฉ€เจ•เจฐเจจ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค
เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฎเฉเฉฑเจ– เจธเฉฐเจชเจพเจฆเจ• เจตเจœเฉ‹เจ‚ openvpn, openvpn-auth-ldap, easy-rsa เจ…เจคเฉ‡ vim เจชเฉˆเจ•เฉ‡เจœเจพเจ‚ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ (เจคเฉเจนเจพเจจเฉ‚เฉฐ EPEL เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡เจ—เฉ€)เฅค

$ sudo yum install epel-release
$ sudo yum install openvpn openvpn-auth-ldap easy-rsa vim

เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจ เจฒเจˆ เจ—เฉˆเจธเจŸ เจเจœเฉฐเจŸ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจจเจพ เจฒเจพเจญเจฆเจพเจ‡เจ• เจนเฉˆ:

$ sudo yum install open-vm-tools

VMware ESXi เจนเฉ‹เจธเจŸเจพเจ‚ เจฒเจˆ, เจœเจพเจ‚ oVirt เจฒเจˆ

$ sudo yum install ovirt-guest-agent

เจ•เฉเจฐเจฟเจชเจŸเฉ‹เจ—เฉเจฐเจพเจซเจผเฉ€ เจธเจฅเจพเจชเจค เจ•เฉ€เจคเฉ€ เจœเจพ เจฐเจนเฉ€ เจนเฉˆ

เจ†เจธเจพเจจ-rsa เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ 'เจคเฉ‡ เจœเจพเจ“:

$ cd /usr/share/easy-rsa/3/

เจ‡เฉฑเจ• เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจซเจพเจˆเจฒ เจฌเจฃเจพเจ“:

$ sudo vim vars

เจนเฉ‡เจ  เจฆเจฟเฉฑเจคเฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€:

export KEY_COUNTRY="RU"
export KEY_PROVINCE="MyRegion"
export KEY_CITY="MyCity"
export KEY_ORG="ABC LLC"
export KEY_EMAIL="[email protected]"
export KEY_CN="allUsers"
export KEY_OU="allUsers"
export KEY_NAME="gw.abc.ru"
export KEY_ALTNAMES="abc-openvpn-server"
export EASYRSA_CERT_EXPIRE=3652

เจธเจผเจฐเจคเฉ€เจ† เจธเฉฐเจธเจฅเจพ ABC LLC เจฒเจˆ เจฎเจพเจชเจฆเฉฐเจก เจ‡เฉฑเจฅเฉ‡ เจตเจฐเจฃเจฟเจค เจนเจจ; เจคเฉเจธเฉ€เจ‚ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ เฉ€เจ• เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจœเจพเจ‚ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ‰เจฆเจพเจนเจฐเจจ เจคเฉ‹เจ‚ เจ›เฉฑเจก เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐเจพเจ‚ เจตเจฟเฉฑเจš เจธเจญ เจคเฉ‹เจ‚ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจšเฉ€เจœเจผ เจ†เจ–เจฐเฉ€ เจฒเจพเจˆเจจ เจนเฉˆ, เจœเฉ‹ เจฆเจฟเจจเจพเจ‚ เจตเจฟเฉฑเจš เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจฆเฉ€ เจตเฉˆเจงเจคเจพ เจฆเฉ€ เจฎเจฟเจ†เจฆ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจฆเฉ€ เจนเฉˆ. เจ‰เจฆเจพเจนเจฐเจจ 10 เจธเจพเจฒ (365*10+2 เจฒเฉ€เจช เจธเจพเจฒ) เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจœเจพเจฐเฉ€ เจ•เฉ€เจคเฉ‡ เจœเจพเจฃ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจ‡เจธ เจฎเฉเฉฑเจฒ เจจเฉ‚เฉฐ เจเจกเจœเจธเจŸ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค

เจ…เฉฑเจ—เฉ‡, เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจ–เฉเจฆเจฎเฉเจ–เจคเจฟเจ†เจฐเฉ€ เจชเฉเจฐเจฎเจพเจฃเฉ€เจ•เจฐเจฃ เจ…เจฅเจพเจฐเจŸเฉ€ เจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค

เจธเฉˆเฉฑเจŸเจ…เฉฑเจช เจตเจฟเฉฑเจš เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจจเจฟเจฐเจฏเจพเจค เจ•เจฐเจจเจพ, CA เจจเฉ‚เฉฐ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจเจพ, CA เจฐเฉ‚เจŸ เจ•เฉเฉฐเจœเฉ€ เจ…เจคเฉ‡ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจœเจพเจฐเฉ€ เจ•เจฐเจจเจพ, Diffie-Hellman เจ•เฉเฉฐเจœเฉ€, TLS เจ•เฉเฉฐเจœเฉ€, เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจ•เฉเฉฐเจœเฉ€ เจ…เจคเฉ‡ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจธเจผเจพเจฎเจฒ เจนเจจเฅค CA เจ•เฉเฉฐเจœเฉ€ เจจเฉ‚เฉฐ เจงเจฟเจ†เจจ เจจเจพเจฒ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เฉ€เจคเจพ เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ—เฉเจชเจค เจฐเฉฑเจ–เจฟเจ† เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ! เจธเจพเจฐเฉ‡ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจกเจฟเจซเฉŒเจฒเจŸ เจตเจœเฉ‹เจ‚ เจ›เฉฑเจกเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค

cd /usr/share/easy-rsa/3/
. ./vars
./easyrsa init-pki
./easyrsa build-ca nopass
./easyrsa gen-dh
./easyrsa gen-req myvpngw nopass
./easyrsa sign-req server myvpngw
./easyrsa gen-crl
openvpn --genkey --secret pki/ta.key

เจ‡เจน เจ•เฉเจฐเจฟเจชเจŸเฉ‹เจ—เฉเจฐเจพเจซเจฟเจ• เจตเจฟเจงเฉ€ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฆเฉ‡ เจฎเฉเฉฑเจ– เจนเจฟเฉฑเจธเฉ‡ เจจเฉ‚เฉฐ เจชเฉ‚เจฐเจพ เจ•เจฐเจฆเจพ เจนเฉˆ.

OpenVPN เจธเฉˆเฉฑเจŸเจ…เฉฑเจช

OpenVPN เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ 'เจคเฉ‡ เจœเจพเจ“, เจธเฉ‡เจตเจพ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€เจ†เจ‚ เจฌเจฃเจพเจ“ เจ…เจคเฉ‡ เจ†เจธเจพเจจ-rsa เจฒเจˆ เจฒเจฟเฉฐเจ• เจœเฉ‹เฉœเฉ‹:

cd /etc/openvpn/
mkdir /var/log/openvpn/ /etc/openvpn/ccd /usr/share/easy-rsa/3/client
ln -s /usr/share/easy-rsa/3/pki/ /etc/openvpn/

เจฎเฉเฉฑเจ– เจ“เจชเจจเจตเฉ€เจชเฉ€เจเจจ เจธเฉฐเจฐเจšเจจเจพ เจซเจพเจˆเจฒ เจฌเจฃเจพเจ“:

$ sudo vim server.conf

เจนเฉ‡เจ  เจฆเจฟเฉฑเจคเฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€

port 1194
proto udp
dev tun
ca /etc/openvpn/pki/ca.crt
cert /etc/openvpn/pki/issued/myvpngw.crt
key /etc/openvpn/pki/private/myvpngw.key
crl-verify /etc/openvpn/pki/crl.pem
dh /etc/openvpn/pki/dh.pem
server 172.16.20.0 255.255.254.0
ifconfig-pool-persist ipp.txt
push "route 172.16.0.0 255.255.255.0"
push "route 172.17.0.0 255.255.255.0"
client-config-dir ccd
push "dhcp-option DNS 172.16.16.16"
push "dhcp-option DNS 172.16.17.17"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nobody
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log-append  /var/log/openvpn/openvpn.log
verb 3
explicit-exit-notify 1
username-as-common-name
plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so /etc/openvpn/ldap.conf

เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐเจพเจ‚ 'เจคเฉ‡ เจ•เฉเจ เจจเฉ‹เจŸ:

  • เจœเฉ‡เจ•เจฐ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจœเจพเจฐเฉ€ เจ•เจฐเจจ เจตเฉ‡เจฒเฉ‡ เจ•เฉ‹เจˆ เจตเฉฑเจ–เจฐเจพ เจจเจพเจฎ เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจธเฉ€, เจคเจพเจ‚ เจ‡เจธ เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ“;
  • เจคเฉเจนเจพเจกเฉ‡ เจ•เฉฐเจฎเจพเจ‚ เจฆเฉ‡ เจ…เจจเฉเจ•เฉ‚เจฒ เจชเจคเจฟเจ†เจ‚ เจฆเจพ เจชเฉ‚เจฒ เจฆเจฟเจ“*;
  • เจ‡เฉฑเจ• เจœเจพเจ‚ เจ‡เฉฑเจ• เจคเฉ‹เจ‚ เจตเฉฑเจง เจฐเฉ‚เจŸ เจ…เจคเฉ‡ DNS เจธเจฐเจตเจฐ เจนเฉ‹ เจธเจ•เจฆเฉ‡ เจนเจจ;
  • AD** เจตเจฟเฉฑเจš เจชเฉเจฐเจฎเจพเจฃเฉ€เจ•เจฐเจจ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฒเจˆ เจ†เจ–เจฐเฉ€ 2 เจฒเจพเจˆเจจเจพเจ‚ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค

*เจ‰เจฆเจพเจนเจฐเจฃ เจตเจฟเฉฑเจš เจšเฉเจฃเฉ‡ เจ—เจ เจชเจคเจฟเจ†เจ‚ เจฆเฉ€ เจฐเฉ‡เจ‚เจœ 127 เจ—เจพเจนเจ•เจพเจ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจ•เฉ‹ เจธเจฎเฉ‡เจ‚ เจจเจพเจฒ เจœเฉเฉœเจจ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเฉ‡เจตเฉ‡เจ—เฉ€, เจ•เจฟเจ‰เจ‚เจ•เจฟ /23 เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจšเฉเจฃเจฟเจ† เจ—เจฟเจ† เจนเฉˆ, เจ…เจคเฉ‡ OpenVPN /30 เจฎเจพเจธเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจนเจฐเฉ‡เจ• เจ•เจฒเจพเจ‡เฉฐเจŸ เจฒเจˆ เจ‡เฉฑเจ• เจธเจฌเจจเฉˆเฉฑเจŸ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค
เจœเฉ‡เจ•เจฐ เจ–เจพเจธ เจคเฉŒเจฐ 'เจคเฉ‡ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡, เจชเฉ‹เจฐเจŸ เจ…เจคเฉ‡ เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ, เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ‡เจน เจงเจฟเจ†เจจ เจตเจฟเฉฑเจš เจฐเฉฑเจ–เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจ•เจฟ เจชเฉ‹เจฐเจŸ เจชเฉ‹เจฐเจŸ เจจเฉฐเจฌเจฐ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฃ เจจเจพเจฒ SELinux เจฆเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจนเฉ‹เจตเฉ‡เจ—เฉ€, เจ…เจคเฉ‡ tcp เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจจเจพเจฒ เจ“เจตเจฐเจนเฉˆเฉฑเจก เจตเจง เจœเจพเจตเฉ‡เจ—เจพ, เจ•เจฟเจ‰เจ‚เจ•เจฟ TCP เจชเฉˆเจ•เฉ‡เจŸ เจกเจฟเจฒเฉ€เจตเจฐเฉ€ เจจเจฟเจฏเฉฐเจคเจฐเจฃ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจธเฉเจฐเฉฐเจ— เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจชเฉˆเจ•เฉ‡เจŸเจพเจ‚ เจฆเฉ‡ เจชเฉฑเจงเจฐ 'เจคเฉ‡ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

**เจœเฉ‡เจ•เจฐ AD เจตเจฟเฉฑเจš เจชเฉเจฐเจฎเจพเจฃเจฟเจ•เจคเจพ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจคเจพเจ‚ เจ‰เจนเจจเจพเจ‚ 'เจคเฉ‡ เจŸเจฟเฉฑเจชเจฃเฉ€ เจ•เจฐเฉ‹, เจ…เจ—เจฒเฉ‡ เจญเจพเจ— เจจเฉ‚เฉฐ เจ›เฉฑเจกเฉ‹, เจ…เจคเฉ‡ เจŸเฉˆเจ‚เจชเจฒเฉ‡เจŸ เจตเจฟเฉฑเจš auth-user-pass เจฒเจพเจˆเจจ เจจเฉ‚เฉฐ เจนเจŸเจพเจ“.

AD เจชเฉเจฐเจฎเจพเจฃเจฟเจ•เจคเจพ

เจฆเฉ‚เจœเฉ‡ เจ•เจพเจฐเจ• เจฆเจพ เจธเจฎเจฐเจฅเจจ เจ•เจฐเจจ เจฒเจˆ, เจ…เจธเฉ€เจ‚ AD เจตเจฟเฉฑเจš เจ–เจพเจคเจพ เจชเฉเจธเจผเจŸเฉ€เจ•เจฐเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค

เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจ†เจฎ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจธเจฎเฉ‚เจน เจฆเฉ‡ เจ…เจงเจฟเจ•เจพเจฐเจพเจ‚ เจตเจพเจฒเฉ‡ เจกเฉ‹เจฎเฉ‡เจจ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ–เจพเจคเฉ‡ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ, เจฎเฉˆเจ‚เจฌเจฐเจธเจผเจฟเจช เจœเจฟเจธ เจตเจฟเฉฑเจš เจœเฉเฉœเจจ เจฆเฉ€ เจฏเฉ‹เจ—เจคเจพ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเฉ€ เจœเจพเจตเฉ‡เจ—เฉ€เฅค

เจ‡เฉฑเจ• เจธเฉฐเจฐเจšเจจเจพ เจซเจพเจ‡เจฒ เจฌเจฃเจพเจ“:

/etc/openvpn/ldap.conf

เจนเฉ‡เจ  เจฆเจฟเฉฑเจคเฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€

<LDAP>
        URL             "ldap://ldap.abc.ru"
        BindDN          "CN=bindUsr,CN=Users,DC=abc,DC=ru"
        Password        b1ndP@SS
        Timeout         15
        TLSEnable       no
        FollowReferrals yes
</LDAP>
<Authorization>
        BaseDN          "OU=allUsr,DC=abc,DC=ru"
        SearchFilter    "(sAMAccountName=%u)"
        RequireGroup    true
        <Group>
                BaseDN          "OU=myGrp,DC=abc,DC=ru"
                SearchFilter    "(cn=myVPNUsr)"
                MemberAttribute "member"
        </Group>
</Authorization>

เจฎเฉเฉฑเจ– เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚:

  • URL โ€œldap://ldap.abc.ruโ€ - เจกเฉ‹เจฎเฉ‡เจจ เจ•เฉฐเจŸเจฐเฉ‹เจฒเจฐ เจชเจคเจพ;
  • BindDN โ€œCN=bindUsr,CN=Users,DC=abc,DC=ruโ€ - LDAP เจจเจพเจฒ เจฌเจพเจˆเจกเจฟเฉฐเจ— เจฒเจˆ เจชเฉเจฐเจฎเจพเจฃเจฟเจ• โ€‹โ€‹เจจเจพเจฎ (UZ - abc.ru/Users เจ•เฉฐเจŸเฉ‡เจจเจฐ เจตเจฟเฉฑเจš bindUsr);
  • เจชเจพเจธเจตเจฐเจก b1ndP@SS โ€” เจฌเจพเจˆเจกเจฟเฉฐเจ— เจฒเจˆ เจฏเฉ‚เจœเจผเจฐ เจชเจพเจธเจตเจฐเจก;
  • BaseDN โ€œOU=allUsr,DC=abc,DC=ruโ€ โ€” เจ‰เจน เจฎเจพเจฐเจ— เจœเจฟเฉฑเจฅเฉ‹เจ‚ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฆเฉ€ เจ–เฉ‹เจœ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจเฉ€ เจนเฉˆ;
  • BaseDN โ€œOU=myGrp,DC=abc,DC=ruโ€ โ€“ เจ‡เจœเจพเจœเจผเจค เจฆเฉ‡เจฃ เจตเจพเจฒเฉ‡ เจธเจฎเฉ‚เจน เจฆเจพ เจ•เฉฐเจŸเฉ‡เจจเจฐ (abc.rumyGrp เจ•เฉฐเจŸเฉ‡เจจเจฐ เจตเจฟเฉฑเจš เจ—เจฐเฉเฉฑเจช myVPNUsr);
  • เจธเจฐเจšเจซเจฟเจฒเจŸเจฐ "(cn=myVPNUsr)" เจ†เจ—เจฟเจ† เจฆเฉ‡เจฃ เจตเจพเจฒเฉ‡ เจธเจฎเฉ‚เจน เจฆเจพ เจจเจพเจฎ เจนเฉˆเฅค

เจธเจŸเจพเจฐเจŸเจ…เจช เจ…เจคเฉ‡ เจกเจพเจ‡เจ—เจจเฉŒเจธเจŸเจฟเจ•เจธ

เจนเฉเจฃ เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจธเจฎเจฐเฉฑเจฅ เจ…เจคเฉ‡ เจšเจพเจฒเฉ‚ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚:

$ sudo systemctl enable [email protected]
$ sudo systemctl start [email protected]

เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจœเจพเจ‚เจš:

systemctl status [email protected]
journalctl -xe
cat /var/log/messages
cat /var/log/openvpn/*log

เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจœเจพเจฐเฉ€ เจ•เจฐเจจเจพ เจ…เจคเฉ‡ เจฐเฉฑเจฆ เจ•เจฐเจจเจพ

เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ†เจชเจฃเฉ‡ เจ†เจช เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸเจพเจ‚ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ; เจ‡เจน เจธเจญ เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจซเจพเจˆเจฒ เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจฒเจชเฉ‡เจŸเจฃเจพ เจฌเจนเฉเจค เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจนเฉˆ. เจ‡เจน เจซเจพเจˆเจฒ เจซเจฟเจฐ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจจเฉ‚เฉฐ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจชเฉเจฐเฉ‹เจซเจพเจˆเจฒ เจจเฉ‚เฉฐ OpenVPN เจ•เจฒเจพเจ‡เฉฐเจŸ 'เจคเฉ‡ เจ†เจฏเจพเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจธเฉˆเจŸเจฟเฉฐเจ— เจŸเฉˆเจ‚เจชเจฒเฉ‡เจŸ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจธเจ•เฉเจฐเจฟเจชเจŸ เจฌเจฃเจพเจตเจพเจ‚เจ—เฉ‡ เจœเฉ‹ เจชเฉเจฐเฉ‹เจซเจพเจˆเจฒ เจคเจฟเจ†เจฐ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค

เจคเฉเจนเจพเจจเฉ‚เฉฐ เจชเฉเจฐเฉ‹เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจฐเฉ‚เจŸ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ (ca.crt) เจ…เจคเฉ‡ TLS เจ•เฉเฉฐเจœเฉ€ (ta.key) เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€ เจธเจผเจพเจฎเจฒ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค

เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจœเจพเจฐเฉ€ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸเจพเจ‚ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€ เจตเฉˆเจงเจคเจพ เจ…เจตเจงเฉ€ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจเจพ เจจเจพ เจญเฉเฉฑเจฒเฉ‹ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš. เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจธ เจจเฉ‚เฉฐ เจฌเจนเฉเจค เจฒเฉฐเจฎเจพ เจจเจนเฉ€เจ‚ เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพ; เจฎเฉˆเจ‚ เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจตเฉฑเจง เจคเฉ‹เจ‚ เจตเฉฑเจง 180 เจฆเจฟเจจเจพเจ‚ เจคเฉฑเจ• เจธเฉ€เจฎเจค เจ•เจฐเจจ เจฆเฉ€ เจธเจฟเจซเจพเจฐเจธเจผ เจ•เจฐเจฆเจพ เจนเจพเจ‚เฅค

vim /usr/share/easy-rsa/3/vars

...
export EASYRSA_CERT_EXPIRE=180

vim /usr/share/easy-rsa/3/client/template.ovpn

client
dev tun
proto udp
remote gw.abc.ru 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
verb 3
auth-user-pass

<ca>
-----BEGIN CERTIFICATE-----
PUT YOUR CA CERT (ca.crt) HERE
-----END CERTIFICATE-----
</ca>

key-direction 1
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
PUT YOUR TA KEY (ta.key) HERE
-----END OpenVPN Static key V1-----
</tls-auth>

เจŸเจฟเฉฑเจชเจฃเฉ€:

  • เจฒเจพเจˆเจจเจพเจ‚ เจชเจพเจ“ เจ†เจชเจฃเจพ... เจธเจฎเฉฑเจ—เจฐเฉ€ เจตเจฟเฉฑเจš เจฌเจฆเจฒเฉ‹ เจ‰เจจเฉเจนเจพเจ‚ เจฆเฉ‡ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ;
  • เจฐเจฟเจฎเฉ‹เจŸ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฟเจต เจตเจฟเฉฑเจš, เจ†เจชเจฃเฉ‡ เจ—เฉ‡เจŸเจตเฉ‡ เจฆเจพ เจจเจพเจฎ/เจชเจคเจพ เจฆเจฟเจ“;
  • auth-user-เจชเจพเจธ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฟเจต เจตเจพเจงเฉ‚ เจฌเจพเจนเจฐเฉ€ เจชเฉเจฐเจฎเจพเจฃเฉ€เจ•เจฐเจจ เจฒเจˆ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

เจนเฉ‹เจฎ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ (เจœเจพเจ‚ เจนเฉ‹เจฐ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจœเจ—เฉเจนเจพ) เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจฆเฉ€ เจฌเฉ‡เจจเจคเฉ€ เจ•เจฐเจจ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจซเจพเจˆเจฒ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจ‡เฉฑเจ• เจธเจ•เฉเจฐเจฟเจชเจŸ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚:

vim ~/make.profile.sh

#!/bin/bash

if [ -z "$1" ] ; then
 echo Missing mandatory client name. Usage: $0 vpn-username
 exit 1
fi

#Set variables
basepath=/usr/share/easy-rsa/3
clntpath=$basepath/client
privpath=$basepath/pki/private
certpath=$basepath/pki/issued
profile=$clntpath/$1.ovpn

#Get current year and lowercase client name
year=`date +%F`
client=${1,,}
echo Processing $year year cert for user/device $client

cd $basepath

if [  -f client/$client* ]; then
    echo "*** ERROR! ***"
    echo "Certificate $client already issued!"
    echo "*** ERROR! ***"
    exit 1
fi

. ./vars
./easyrsa --batch --req-cn=$client gen-req $client nopass
./easyrsa --batch sign-req client $client

#Make profile
cp $clntpath/template.ovpn $profile

echo "<key>" >> $profile
cat $privpath/$1.key >> $profile
echo "</key>" >> $profile

echo -e "n" >> $profile
openssl x509 -in $certpath/$1.crt -out $basepath/$1.crt

echo "<cert>" >> $profile
cat $basepath/$1.crt >> $profile
echo "</cert>" >> $profile
echo -e "n" >> $profile

#remove tmp file
rm -f $basepath/$1.crt

echo Complete. See $profile file.

cd ~

เจซเจพเจˆเจฒ เจจเฉ‚เฉฐ เจšเฉฑเจฒเจฃเจฏเฉ‹เจ— เจฌเจฃเจพเจ‰เจฃเจพ:

chmod a+x ~/make.profile.sh

เจ…เจคเฉ‡ เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเจพ เจชเจนเจฟเจฒเจพ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจœเจพเจฐเฉ€ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค

~/make.profile.sh my-first-user

เจซเฉ€เจกเจฌเฉˆเจ•

เจ•เจฟเจธเฉ‡ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ (เจจเฉเจ•เจธเจพเจจ, เจšเฉ‹เจฐเฉ€) เจจเจพเจฒ เจธเจฎเจเฉŒเจคเจพ เจนเฉ‹เจฃ เจฆเฉ‡ เจฎเจพเจฎเจฒเฉ‡ เจตเจฟเฉฑเจš, เจ‡เจธ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจจเฉ‚เฉฐ เจฐเฉฑเจฆ เจ•เจฐเจจเจพ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆ:

cd /usr/share/easy-rsa/3/
./easyrsa revoke my-first-user
./easyrsa gen-crl

เจœเจพเจฐเฉ€ เจ•เฉ€เจคเฉ‡ เจ…เจคเฉ‡ เจฐเฉฑเจฆ เจ•เฉ€เจคเฉ‡ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจตเฉ‡เจ–เฉ‹

เจœเจพเจฐเฉ€ เจ•เฉ€เจคเฉ‡ เจ…เจคเฉ‡ เจฐเฉฑเจฆ เจ•เฉ€เจคเฉ‡ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸเจพเจ‚ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฃ เจฒเจˆ, เจฌเจธ เจ‡เฉฐเจกเฉˆเจ•เจธ เจซเจพเจˆเจฒ เจตเฉ‡เจ–เฉ‹:

cd /usr/share/easy-rsa/3/
cat pki/index.txt

เจตเจฟเจ†เจ–เจฟเจ†:

  • เจชเจนเจฟเจฒเฉ€ เจฒเจพเจˆเจจ เจธเจฐเจตเจฐ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจนเฉˆ;
  • เจชเจนเจฟเจฒเจพ เจ…เฉฑเจ–เจฐ
    • V (เจตเฉˆเจง) - เจตเฉˆเจง;
    • เจ†เจฐ (เจฐเฉฑเจฆ) - เจตเจพเจชเจธ เจฌเฉเจฒเจพเจ‡เจ†.

เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจธเฉฐเจฐเจšเจจเจพ

เจ†เจ–เจฐเฉ€ เจชเฉœเจพเจ… เจŸเจฐเจพเจ‚เจธเจฎเจฟเจธเจผเจจ เจจเฉˆเฉฑเจŸเจตเจฐเจ• - เจฐเฉ‚เจŸเจฟเฉฐเจ— เจ…เจคเฉ‡ เจซเจพเจ‡เจฐเจตเจพเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉฐเจฐเจšเจฟเจค เจ•เจฐเจจเจพ เจนเฉˆเฅค

เจธเจฅเจพเจจเจ• เจซเจพเจ‡เจฐเจตเจพเจฒ เจตเจฟเฉฑเจš เจ•เจจเฉˆเจ•เจธเจผเจจเจพเจ‚ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเฉ‡ เจฐเจฟเจนเจพ เจนเฉˆ:

$ sudo firewall-cmd --add-service=openvpn
$ sudo firewall-cmd --add-service=openvpn --permanent

เจ…เฉฑเจ—เฉ‡, IP เจŸเฉเจฐเฉˆเจซเจฟเจ• เจฐเฉ‚เจŸเจฟเฉฐเจ— เจจเฉ‚เฉฐ เจธเจฎเจฐเฉฑเจฅ เจ•เจฐเฉ‹:

$ sudo sysctl net.ipv4.ip_forward=1
$ sudo echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/50-sysctl.conf

เจ•เจพเจฐเจชเฉ‹เจฐเฉ‡เจŸ เจตเจพเจคเจพเจตเจฐเจฃ เจตเจฟเฉฑเจš, เจธเจฌเจจเฉˆเจŸเจฟเฉฐเจ— เจนเฉ‹เจฃ เจฆเฉ€ เจธเฉฐเจญเจพเจตเจจเจพ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจธเจพเจจเฉ‚เฉฐ เจฐเจพเจŠเจŸเจฐ(เจ†เจ‚) เจจเฉ‚เฉฐ เจ‡เจน เจฆเฉฑเจธเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ เจ•เจฟ เจธเจพเจกเฉ‡ VPN เจ•เจฒเจพเจ‡เฉฐเจŸเจธ เจฒเจˆ เจจเจฟเจฐเจงเจพเจฐเจฟเจค เจชเฉˆเจ•เฉ‡เจŸ เจ•เจฟเจตเฉ‡เจ‚ เจญเฉ‡เจœเจฃเฉ‡ เจนเจจเฅค เจ•เจฎเจพเจ‚เจก เจฒเจพเจˆเจจ 'เจคเฉ‡ เจ…เจธเฉ€เจ‚ เจ•เจฎเจพเจ‚เจก เจจเฉ‚เฉฐ เจ‡เจธ เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚ (เจตเจฐเจคเฉ‡ เจ—เจ เจ‰เจชเจ•เจฐเจจ 'เจคเฉ‡ เจจเจฟเจฐเจญเจฐ เจ•เจฐเจฆเจพ เจนเฉˆ):

# ip route 172.16.20.0 255.255.254.0 172.16.19.123

เจ…เจคเฉ‡ เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจธเฉฐเจญเจพเจฒเฉ‹.

เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจฌเจพเจฐเจกเจฐ เจฐเจพเจŠเจŸเจฐ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ 'เจคเฉ‡ เจœเจฟเฉฑเจฅเฉ‡ เจฌเจพเจนเจฐเฉ€ เจชเจคเจพ gw.abc.ru เจฆเจฟเฉฑเจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, udp/1194 เจชเฉˆเจ•เฉ‡เจŸเจพเจ‚ เจจเฉ‚เฉฐ เจฒเฉฐเจ˜เจฃ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเฉ‡เจฃเจพ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆเฅค

เจœเฉ‡เจ•เจฐ เจธเฉฐเจธเจฅเจพ เจฆเฉ‡ เจธเจ–เจผเจค เจธเฉเจฐเฉฑเจ–เจฟเจ† เจจเจฟเจฏเจฎ เจนเจจ, เจคเจพเจ‚ เจธเจพเจกเฉ‡ VPN เจธเจฐเจตเจฐ 'เจคเฉ‡ เจซเจพเจ‡เจฐเจตเจพเจฒ เจจเฉ‚เฉฐ เจตเฉ€ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เฉ€เจคเจพ เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค เจฎเฉ‡เจฐเฉ€ เจฐเจพเจ เจตเจฟเฉฑเจš, เจธเจญ เจคเฉ‹เจ‚ เจตเฉฑเจกเฉ€ เจฒเจšเจ•เจคเจพ iptables FORWARD เจšเฉ‡เจจ เจธเจฅเจพเจชเจค เจ•เจฐเจ•เฉ‡ เจชเฉเจฐเจฆเจพเจจ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจนเจพเจฒเจพเจ‚เจ•เจฟ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจค เจ•เจฐเจจเจพ เจ˜เฉฑเจŸ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจนเฉˆ. เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฌเจพเจฐเฉ‡ เจฅเฉ‹เฉœเจพ เจนเฉ‹เจฐ. เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, "เจธเจฟเฉฑเจงเจพ เจจเจฟเจฏเจฎ" เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจธเจญ เจคเฉ‹เจ‚ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจนเฉˆ - เจธเจฟเฉฑเจงเฉ‡ เจจเจฟเจฏเจฎ, เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ‡ เจ—เจ เจนเจจ /etc/firewalld/direct.xml. เจจเจฟเจฏเจฎเจพเจ‚ เจฆเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจพ เจธเฉฐเจฐเจšเจจเจพ เจนเฉ‡เจ  เจฒเจฟเจ–เฉ‡ เจ…เจจเฉเจธเจพเจฐ เจฒเฉฑเจญเฉ€ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆ:

$ sudo firewall-cmd --direct --get-all-rule

เจ•เจฟเจธเฉ‡ เจซเจพเจˆเจฒ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฃ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจ‡เจธเจฆเฉ€ เจฌเฉˆเจ•เจ…เฉฑเจช เจ•เจพเจชเฉ€ เจฌเจฃเจพเจ“:

cp /etc/firewalld/direct.xml /etc/firewalld/direct.xml.`date +%F.%T`.bak

เจซเจพเจˆเจฒ เจฆเฉ€ เจ…เฉฐเจฆเจพเจœเจผเจจ เจธเจฎเฉฑเจ—เจฐเฉ€ เจนเจจ:

<?xml version="1.0" encoding="utf-8"?>
<direct>
 <!--Common Remote Services-->
  <!--DNS-->
    <rule priority="0" table="filter" ipv="ipv4" chain="FORWARD">-i tun0 -o ens192 -p udp --dport 53 -j ACCEPT</rule>
  <!--web-->
    <rule priority="0" table="filter" ipv="ipv4" chain="FORWARD">-i tun0 -o eth0 -p tcp -d 172.16.19.200 --dport 80 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT</rule>
    <rule priority="0" table="filter" ipv="ipv4" chain="FORWARD">-i tun0 -o eth0 -p tcp -d 172.16.19.201 --dport 443 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT</rule>
  <!--Some Other Systems-->
    <rule priority="0" table="filter" ipv="ipv4" chain="FORWARD">-i tun0 -o eth0 -p udp -d 172.16.19.100 --dport 7000 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT</rule>
  <!--just logging-->
    <rule priority="1" table="filter" ipv="ipv4" chain="FORWARD">-i tun0 -o eth0 -j LOG --log-prefix 'forward_fw '</rule>
</direct>

เจตเจฟเจ†เจ–เจฟเจ†

เจ‡เจน เจœเจผเจฐเฉ‚เจฐเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจจเจฟเจฏเจฎเจค iptables เจจเจฟเจฏเจฎ เจนเจจ, เจจเจนเฉ€เจ‚ เจคเจพเจ‚ เจซเจพเจ‡เจฐเจตเจพเจฒเจก เจฆเฉ‡ เจ†เจ—เจฎเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจชเฉˆเจ• เจ•เฉ€เจคเฉ‡ เจ—เจ เจนเจจเฅค

เจกเจฟเจซเจพเจฒเจŸ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจตเจพเจฒเจพ เจฎเฉฐเจœเจผเจฟเจฒ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ tun0 เจนเฉˆ, เจ…เจคเฉ‡ เจธเฉเจฐเฉฐเจ— เจฒเจˆ เจฌเจพเจนเจฐเฉ€ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ เจตเฉฑเจ–เจฐเจพ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, ens192, เจตเจฐเจคเฉ‡ เจ—เจ เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ 'เจคเฉ‡ เจจเจฟเจฐเจญเจฐ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจ†เจ–เจฐเฉ€ เจฒเจพเจˆเจจ เจกเจฐเจพเจช เจชเฉˆเจ•เฉ‡เจŸเจพเจ‚ เจจเฉ‚เฉฐ เจฒเฉŒเจ— เจ•เจฐเจจ เจฒเจˆ เจนเฉˆเฅค เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจฒเจพเจ—เจฟเฉฐเจ— เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจซเจพเจ‡เจฐเจตเจพเจฒเจก เจธเฉฐเจฐเจšเจจเจพ เจตเจฟเฉฑเจš เจกเฉ€เจฌเฉฑเจ— เจชเฉฑเจงเจฐ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ:

vim /etc/sysconfig/firewalld
FIREWALLD_ARGS=--debug=2

เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจจเฉ‚เฉฐ เจฎเฉเฉœ-เจชเฉœเฉเจนเจจ เจฒเจˆ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจเจพ เจ†เจฎ เจซเจพเจ‡เจฐเจตเจพเจฒเจก เจ•เจฎเจพเจ‚เจก เจนเฉˆ:

$ sudo firewall-cmd --reload

เจคเฉเจธเฉ€เจ‚ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจ›เฉฑเจกเฉ‡ เจนเฉ‹เจ เจชเฉˆเจ•เฉ‡เจŸ เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹:

grep forward_fw /var/log/messages

เจ…เฉฑเจ—เฉ‡ เจ•เฉ€ เจนเฉˆ

เจ‡เจน เจธเฉˆเฉฑเจŸเจ…เฉฑเจช เจจเฉ‚เฉฐ เจชเฉ‚เจฐเจพ เจ•เจฐเจฆเจพ เจนเฉˆ!

เจœเฉ‹ เจฌเจšเจฆเจพ เจนเฉˆ เจ‰เจน เจนเฉˆ เจ•เจฒเจพเจ‡เฉฐเจŸ เจธเจพเจˆเจก 'เจคเฉ‡ เจ•เจฒเจพเจ‡เฉฐเจŸ เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจจเจพ, เจชเฉเจฐเฉ‹เจซเจพเจˆเจฒ เจจเฉ‚เฉฐ เจ†เจฏเจพเจค เจ•เจฐเจจเจพ เจ…เจคเฉ‡ เจ•เจจเฉˆเจ•เจŸ เจ•เจฐเจจเจพเฅค เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎเจพเจ‚ เจฒเจˆ, เจกเจฟเจธเจŸเจฐเฉ€เจฌเจฟเจŠเจธเจผเจจ เจ•เจฟเฉฑเจŸ 'เจคเฉ‡ เจธเจฅเจฟเจค เจนเฉˆ เจกเจฟเจตเฉˆเจฒเจชเจฐ เจตเฉˆเฉฑเจฌเจธเจพเจˆเจŸ.

เจ…เฉฐเจค เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ เจจเจตเฉ‡เจ‚ เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจจเจฟเจ—เจฐเจพเจจเฉ€ เจ…เจคเฉ‡ เจชเฉเจฐเจพเจฒเฉ‡เจ– เจชเฉเจฐเจฃเจพเจฒเฉ€เจ†เจ‚ เจจเจพเจฒ เจœเฉ‹เฉœเจฆเฉ‡ เจนเจพเจ‚, เจ…เจคเฉ‡ เจจเจฟเจฏเจฎเจฟเจค เจคเฉŒเจฐ 'เจคเฉ‡ เจ…เฉฑเจชเจกเฉ‡เจŸ เจธเจฅเจพเจชเจค เจ•เจฐเจจเจพ เจจเจพ เจญเฉเฉฑเจฒเฉ‹เฅค

เจธเจฅเจฟเจฐ เจ•เฉเจจเฉˆเจ•เจธเจผเจจ!

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹