αž€αžΆαžšαžšαŸ€αž”αž…αŸ†αž€αžΆαžšαž„αžΆαžšαž–αžΈαž…αž˜αŸ’αž„αžΆαž™αžšαž”αžŸαŸ‹αž’αž„αŸ’αž‚αž€αžΆαžš SMB αž“αŸ…αž›αžΎ OpenVPN

αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž”αž‰αŸ’αž αžΆ

αž’αžαŸ’αžαž”αž‘αž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαž€αžΆαžšαžšαŸ€αž”αž…αŸ†αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαž–αžΈαž…αž˜αŸ’αž„αžΆαž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž»αž‚αŸ’αž‚αž›αž·αž€αž“αŸ…αž›αžΎαž•αž›αž·αžαž•αž›αž”αŸ’αžšαž—αž–αž”αžΎαž€αž…αŸ†αž  αž αžΎαž™αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž‘αžΆαŸ†αž„αž–αžΈαžšαžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŸαŸ’αžœαž™αŸαžαž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„ αž αžΎαž™αž“αžΉαž„αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž–αž„αŸ’αžšαžΈαž€αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž˜αžΆαž“αž€αžΆαžšαžαŸ’αžœαŸ‡αžαžΆαžαž’αžΆαž‡αŸ’αž‰αžΆαž”αŸαžŽαŸ’αžŽαž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž–αžΆαžŽαž·αž‡αŸ’αž‡αž€αž˜αŸ’αž˜αžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹ αž¬αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžšαž”αžŸαŸ‹αžœαžΆαž˜αž·αž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αŸ”

αž‚αŸ„αž›αžŠαŸ…αž“αŸƒαž’αžαŸ’αžαž”αž‘αž‚αžΊαžŠαžΎαž˜αŸ’αž”αžΈαž’αž“αž»αžœαžαŸ’αžαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž–αŸαž‰αž›αŸαž‰αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αžαž›αŸ‹αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαž–αžΈαž…αž˜αŸ’αž„αžΆαž™αž‘αŸ…αž€αžΆαž“αŸ‹αžŸαŸ’αžαžΆαž”αŸαž“αž˜αž½αž™ αžŠαŸ‚αž›αž›αžΎαžŸαž–αžΈ "αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ OpenVPN αž€αŸ’αž“αž»αž„αžšαž™αŸˆαž–αŸαž› 10 αž“αžΆαž‘αžΈ" αŸ”

αž‡αžΆαž›αž‘αŸ’αž’αž•αž› αž™αžΎαž„αž“αžΉαž„αž‘αž‘αž½αž›αž”αžΆαž“αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŠαŸ‚αž›αžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αžαŸ’αžš αž“αž·αž„ (αž‡αžΆαž‡αž˜αŸ’αžšαžΎαžŸ) αžαžαžŸαž€αž˜αŸ’αž˜αžŸαžΆαž‡αžΈαžœαž€αž˜αŸ’αž˜αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αŸ” αž“αŸ„αŸ‡αŸ” αž™αžΎαž„αž“αžΉαž„αž‘αž‘αž½αž›αž”αžΆαž“αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž˜αž½αž™αžŠαŸ‚αž›αž˜αžΆαž“αž€αžαŸ’αžαžΆαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αž–αžΈαžš - αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž˜αžΆαž“ (αžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αžαŸ’αžš) αž“αž·αž„αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αžŠαžΉαž„ (αž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹) αŸ”

αžŸαž‰αŸ’αž‰αžΆαžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž—αŸ’αž‡αžΆαž”αŸ‹αž‚αžΊαž‡αžΆαžŸαž˜αžΆαž‡αž·αž€αž—αžΆαž–αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ’αžšαž»αž˜ myVPNUsr αŸ” αž’αžΆαž‡αŸ’αž‰αžΆαž’αžšαžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αžαŸ’αžšαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžαŸ”

αžαž˜αŸ’αž›αŸƒαž“αŸƒαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž‚αžΊαžαŸ’αžšαžΉαž˜αžαŸ‚αž’αž“αž’αžΆαž“αž•αŸ’αž“αŸ‚αž€αžšαžΉαž„αžαžΌαž…αŸ— αž“αž·αž„αž€αžΆαžšαž„αžΆαžš 1 αž˜αŸ‰αŸ„αž„αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αŸ”

αž™αžΎαž„αž“αžΉαž„αž”αŸ’αžšαžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αžαž‡αžΆαž˜αž½αž™ OpenVPN αž“αž·αž„ Easy-RSA αž€αŸ†αžŽαŸ‚ 3 αž“αŸ…αž›αžΎ CetntOS 7 αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ‚αž„αž…αŸ‚αž€ 100 vCPUs αž“αž·αž„ 4 GiB RAM αž€αŸ’αž“αž»αž„ 4 αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αŸ”

αž€αŸ’αž“αž»αž„αž§αž‘αžΆαž αžšαžŽαŸ αž”αžŽαŸ’αžαžΆαž‰αžšαž”αžŸαŸ‹αžŸαŸ’αžαžΆαž”αŸαž“αžšαž”αžŸαŸ‹αž™αžΎαž„αž‚αžΊ 172.16.0.0/16 αžŠαŸ‚αž›αž€αŸ’αž“αž»αž„αž“αŸ„αŸ‡αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ VPN αžŠαŸ‚αž›αž˜αžΆαž“αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ 172.16.19.123 αžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€ 172.16.19.0/24 αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ DNS 172.16.16.16 αž“αž·αž„ 172.16.17.17 αž“αž·αž„αžšαž„ 172.16.20.0 αŸ” .23/XNUMX αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αžαž·αžαž·αž‡αž“ VPN αŸ”

αžŠαžΎαž˜αŸ’αž”αžΈαž—αŸ’αž‡αžΆαž”αŸ‹αž–αžΈαžαžΆαž„αž€αŸ’αžšαŸ… αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αžαžΆαž˜αžšαž™αŸˆαž…αŸ’αžšαž€ 1194/udp αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎ αž αžΎαž™ A-record gw.abc.ru αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž“αŸ…αž€αŸ’αž“αž»αž„ DNS αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ”

αžœαžΆαž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŽαŸ‚αž“αžΆαŸ†αž™αŸ‰αžΆαž„αžαžΉαž„αžšαŸ‰αžΉαž„αž±αŸ’αž™αž”αž·αž‘ SELinux αž‘αŸ! OpenVPN αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ„αž™αž˜αž·αž“αž”αž·αž‘αž‚αŸ„αž›αž€αžΆαžšαžŽαŸαžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αŸ”

αž˜αžΆαžαž·αž€αžΆ

  1. αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ OS αž“αž·αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ
  2. αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž€αžΆαžšαž‚αŸ’αžšαžΈαž”
  3. αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ OpenVPN
  4. αž€αžΆαžšαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹ AD
  5. αž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ αž“αž·αž„αž€αžΆαžšαž’αŸ’αžœαžΎαžšαŸ„αž‚αžœαž·αž“αž·αž…αŸ’αž†αŸαž™
  6. αž”αž‰αŸ’αž αžΆαžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αžαŸ’αžš αž“αž·αž„αž€αžΆαžšαžŠαž€αž αžΌαž
  7. αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž”αžŽαŸ’αžαžΆαž‰
  8. αž˜αžΆαž“β€‹αž’αŸ’αžœαžΈβ€‹αž”αž“αŸ’αž‘αžΆαž”αŸ‹

αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ OS αž“αž·αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ

αž™αžΎαž„αž”αŸ’αžšαžΎαž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™ CentOS 7.8.2003 αŸ” αž™αžΎαž„αžαŸ’αžšαžΌαžœαžŠαŸ†αž‘αžΎαž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžαž·αž…αžαž½αž…αž”αŸ†αž•αž»αžαŸ” αžœαžΆαž„αžΆαž™αžŸαŸ’αžšαž½αž›αž’αŸ’αžœαžΎαžŠαŸ„αž™αž”αŸ’αžšαžΎ αž”αžΆαž›αŸ‹αž”αŸ„αŸ‡αž€αŸ’αž›αžΌαž“αžšαžΌαž”αž—αžΆαž– OS αžŠαŸ‚αž›αž”αžΆαž“αžŠαŸ†αž‘αžΎαž„αž–αžΈαž˜αž»αž“ αž“αž·αž„αž˜αž’αŸ’αž™αŸ„αž”αžΆαž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ”

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžŠαŸ†αž‘αžΎαž„αžšαž½αž… αž€αŸ†αžŽαžαŸ‹αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž‘αŸ…αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž”αžŽαŸ’αžαžΆαž‰ (αž™αŸ„αž„αžαžΆαž˜αž›αž€αŸ’αžαžαžŽαŸ’αžŒαž“αŸƒαž€αž·αž…αŸ’αž…αž€αžΆαžš 172.16.19.123) αž™αžΎαž„αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαŸ–

$ 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

αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž€αžΆαžšαž‚αŸ’αžšαžΈαž”

αž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹αžαž easy-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 αž”αž„αŸ’αž€αžΎαžαž”αž‰αŸ’αž‡αžΈαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜ αž“αž·αž„αž”αž“αŸ’αžαŸ‚αž˜αžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž€αžΆαž“αŸ‹ easy-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/

αž”αž„αŸ’αž€αžΎαžαž―αž€αžŸαžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ 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;
  • αžαŸ’αžšαžΌαžœαž€αžΆαžšαž”αž“αŸ’αž‘αžΆαžαŸ‹ 2 αž…αž»αž„αž€αŸ’αžšαŸ„αž™ αžŠαžΎαž˜αŸ’αž”αžΈαž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ AD **αŸ”

* αž‡αž½αžšαž“αŸƒαž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αžŠαŸ‚αž›αž”αžΆαž“αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž€αŸ’αž“αž»αž„αž§αž‘αžΆαž αžšαžŽαŸαž“αžΉαž„αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αžαž·αžαž·αž‡αž“αžšαž αžΌαžαžŠαž›αŸ‹αž‘αŸ… 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” - αžˆαŸ’αž˜αŸ„αŸ‡ canonical αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž…αž„αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ… LDAP (UZ - bindUsr αž“αŸ…αž€αŸ’αž“αž»αž„ abc.ru/Users container);
  • αž–αžΆαž€αŸ’αž™β€‹αžŸαž˜αŸ’αž„αžΆαžαŸ‹ b1ndP@SS β€” αž–αžΆαž€αŸ’αž™β€‹αžŸαž˜αŸ’αž„αžΆαžαŸ‹β€‹αž’αŸ’αž“αž€β€‹αž”αŸ’αžšαžΎβ€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž€αžΆαžšβ€‹αž…αž„;
  • BaseDN β€œOU=allUsr,DC=abc,DC=ru” β€” αž•αŸ’αž›αžΌαžœαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŸαŸ’αžœαŸ‚αž„αžšαž€αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αŸ”
  • BaseDN β€œOU=myGrp,DC=abc,DC=ru” – αž’αž»αž„αž“αŸƒαž€αŸ’αžšαž»αž˜αž’αž“αž»αž‰αŸ’αž‰αžΆαž (αž€αŸ’αžšαž»αž˜ myVPNUsr αž€αŸ’αž“αž»αž„αž€αž»αž„αžαžΊαž“αŸαžš abc.rumyGrp);
  • SearchFilter "(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 key (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-pass directive αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αžαžΆαž„αž€αŸ’αžšαŸ…αž”αž“αŸ’αžαŸ‚αž˜αŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αžαžαž•αŸ’αž‘αŸ‡ (αž¬αž€αž“αŸ’αž›αŸ‚αž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž•αŸ’αžŸαŸαž„αž‘αŸ€αž) αž™αžΎαž„αž”αž„αŸ’αž€αžΎαžαžŸαŸ’αž‚αŸ’αžšαžΈαž”αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸ’αž“αžΎαžŸαž»αŸ†αžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αžαŸ’αžš αž“αž·αž„αž”αž„αŸ’αž€αžΎαžαž‘αž˜αŸ’αžšαž„αŸ‹αŸ–

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 (αžŸαž»αž–αž›αž—αžΆαž–) - valid;
    • R (αžŠαž€αž αžΌαž) - αž”αŸ’αžšαž˜αžΌαž›αž˜αž€αžœαž·αž‰αŸ”

αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž”αžŽαŸ’αžαžΆαž‰

αž‡αŸ†αž αžΆαž“αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž‚αžΊαžαŸ’αžšαžΌαžœαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž”αžŽαŸ’αžαžΆαž‰αž”αž‰αŸ’αž‡αžΌαž“ - αž€αŸ†αžŽαžαŸ‹αž•αŸ’αž›αžΌαžœ αž“αž·αž„αž‡αž‰αŸ’αž‡αžΆαŸ†αž„αž—αŸ’αž›αžΎαž„αŸ”

αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž˜αžΆαž“αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž‡αž‰αŸ’αž‡αžΆαŸ†αž„αž—αŸ’αž›αžΎαž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αŸ–

$ 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 chains αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αžœαžΆαž˜αž·αž“αžŸαžΌαžœαž„αžΆαž™αžŸαŸ’αžšαž½αž›αž€αŸαžŠαŸ„αž™αŸ” αž”αž“αŸ’αžαž·αž…αž‘αŸ€αžαž’αŸ†αž–αžΈαž€αžΆαžšαžšαŸ€αž”αž…αŸ†αž–αž½αž€αž‚αŸαŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŠαžΌαž…αž“αŸαŸ‡αžœαžΆαž„αžΆαž™αžŸαŸ’αžšαž½αž›αž”αŸ†αž•αž»αžαž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ’αžšαžΎ "αž…αŸ’αž”αžΆαž”αŸ‹αž•αŸ’αž‘αžΆαž›αŸ‹" - αž…αŸ’αž”αžΆαž”αŸ‹αž•αŸ’αž‘αžΆαž›αŸ‹αžŠαŸ‚αž›αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžš /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

αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž‚αžΊαž‡αžΆαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ firewalld αž’αž˜αŸ’αž˜αžαžΆαžŠαžΎαž˜αŸ’αž”αžΈαž’αžΆαž“αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž‘αžΎαž„αžœαž·αž‰αŸ–

$ sudo firewall-cmd --reload

αž’αŸ’αž“αž€αž’αžΆαž…αž˜αžΎαž›αž€αž‰αŸ’αž…αž”αŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž‘αž˜αŸ’αž›αžΆαž€αŸ‹αžŠαžΌαž…αž“αŸαŸ‡αŸ–

grep forward_fw /var/log/messages

αž˜αžΆαž“β€‹αž’αŸ’αžœαžΈβ€‹αž”αž“αŸ’αž‘αžΆαž”αŸ‹

αž“αŸαŸ‡αž”αž‰αŸ’αž…αž”αŸ‹αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„!

αž’αŸ’αžœαžΈβ€‹αžŠαŸ‚αž›β€‹αž“αŸ…β€‹αžŸαž›αŸ‹β€‹αž‚αžΊβ€‹αžαŸ’αžšαžΌαžœβ€‹αžŠαŸ†αž‘αžΎαž„β€‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈβ€‹αž’αžαž·αžαž·αž‡αž“β€‹αž“αŸ…β€‹αžαžΆαž„β€‹αž’αžαž·αžαž·αž‡αž“ αž“αžΆαŸ†αž…αžΌαž›β€‹αž‘αž˜αŸ’αžšαž„αŸ‹ αž“αž·αž„β€‹αžαž—αŸ’αž‡αžΆαž”αŸ‹αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš Windows αž§αž”αž€αžšαžŽαŸαž…αŸ‚αž€αž…αžΆαž™αž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž“αŸ…αž›αžΎ αž‚αŸαž αž‘αŸ†αž–αŸαžšαž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ.

αž‡αžΆαž…αž»αž„αž€αŸ’αžšαŸ„αž™ αž™αžΎαž„αž—αŸ’αž‡αžΆαž”αŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžαŸ’αž˜αžΈαžšαž”αžŸαŸ‹αž™αžΎαž„αž‘αŸ…αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™ αž“αž·αž„αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž―αž€αžŸαžΆαžš αž αžΎαž™αž€αž»αŸ†αž—αŸ’αž›αŸαž…αžŠαŸ†αž‘αžΎαž„αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž‡αžΆαž”αŸ’αžšαž…αžΆαŸ†αŸ”

αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αž˜αžΆαž“αžŸαŸ’αžαŸαžšαž—αžΆαž–!

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹