OpenVPN เชชเชฐ SMB เชธเช‚เชธเซเชฅเชพเชจเชพ เชฆเซ‚เชฐเชธเซเชฅ เช•เชพเชฐเซเชฏเชจเซเช‚ เชธเช‚เช—เช เชจ

เชธเชฎเชธเซเชฏเชพเชจเซ€ เชฐเชšเชจเชพ

เช† เชฒเซ‡เช– เช“เชชเชจ เชธเซ‹เชฐเซเชธ เชชเซเชฐเซ‹เชกเช•เซเชŸเซเชธ เชชเชฐ เช•เชฐเซเชฎเชšเชพเชฐเซ€เช“ เชฎเชพเชŸเซ‡ เชฐเชฟเชฎเซ‹เชŸ เชเช•เซเชธเซ‡เชธเชจเชพ เชธเช‚เช—เช เชจเชจเซเช‚ เชตเชฐเซเชฃเชจ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชธเซเชตเชพเชฏเชคเซเชค เชธเชฟเชธเซเชŸเชฎ เชฌเชจเชพเชตเชตเชพ เชฌเช‚เชจเซ‡ เชฎเชพเชŸเซ‡ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡, เช…เชจเซ‡ เชœเซเชฏเชพเชฐเซ‡ เชนเชพเชฒเชจเซ€ เชตเซเชฏเชพเชชเชพเชฐเซ€ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เชฒเชพเชฏเชธเชจเซเชธเชจเซ€ เช…เช›เชค เชนเซ‹เชฏ เช…เชฅเชตเชพ เชคเซ‡เชจเซ€ เช•เชพเชฎเช—เซ€เชฐเซ€ เช…เชชเซ‚เชฐเชคเซ€ เชนเซ‹เชฏ เชคเซเชฏเชพเชฐเซ‡ เชตเชฟเชธเซเชคเชฐเชฃ เชฎเชพเชŸเซ‡ เช‰เชชเชฏเซ‹เช—เซ€ เชฅเชถเซ‡.

เชฒเซ‡เช–เชจเซ‹ เชงเซเชฏเซ‡เชฏ เชธเช‚เชธเซเชฅเชพเชจเซ‡ เชฐเชฟเชฎเซ‹เชŸ เชเช•เซเชธเซ‡เชธ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชเช• เชธเช‚เชชเซ‚เชฐเซเชฃ เชธเชฟเชธเซเชŸเชฎเชจเซ‹ เช…เชฎเชฒ เช•เชฐเชตเชพเชจเซ‹ เช›เซ‡, เชœเซ‡ "10 เชฎเชฟเชจเชฟเชŸเชฎเชพเช‚ OpenVPN เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพ" เช•เชฐเชคเชพเช‚ เชฅเซ‹เชกเซเช‚ เชตเชงเชพเชฐเซ‡ เช›เซ‡.

เชชเชฐเชฟเชฃเชพเชฎเซ‡, เช…เชฎเชจเซ‡ เชเช• เชธเชฟเชธเซเชŸเชฎ เชฎเชณเชถเซ‡ เชœเซ‡เชฎเชพเช‚ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹ เช…เชจเซ‡ (เชตเซˆเช•เชฒเซเชชเชฟเช• เชฐเซ€เชคเซ‡) เช•เซ‹เชฐเซเชชเซ‹เชฐเซ‡เชŸ เชเช•เซเชŸเชฟเชต เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซ‡ เชชเซเชฐเชฎเชพเชฃเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. เชคเซ‡. เช…เชฎเชจเซ‡ เชฌเซ‡ เชšเช•เชพเชธเชฃเซ€ เชชเชฐเชฟเชฌเชณเซ‹ เชธเชพเชฅเซ‡เชจเซ€ เชธเชฟเชธเซเชŸเชฎ เชฎเชณเชถเซ‡ - เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชถเซเช‚ เช›เซ‡ (เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ) เช…เชจเซ‡ เชนเซเช‚ เชถเซเช‚ เชœเชพเชฃเซเช‚ เช›เซเช‚ (เชชเชพเชธเชตเชฐเซเชก).

เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช›เซ‡ เชคเซ‡ เชธเช‚เช•เซ‡เชค เช myVPNUsr เชœเซ‚เชฅเชฎเชพเช‚ เชคเซ‡เชฎเชจเซ€ เชธเชญเซเชฏเชชเชฆ เช›เซ‡. เชธเชฐเซเชŸเชฟเชซเชฟเช•เซ‡เชŸ เช“เชฅเซ‹เชฐเชฟเชŸเซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช‘เชซเชฒเชพเช‡เชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.

เชธเซ‹เชฒเซเชฏเซเชถเชจเชจเชพ เช…เชฎเชฒเซ€เช•เชฐเชฃเชจเซ€ เช•เชฟเช‚เชฎเชค เชฎเชพเชคเซเชฐ เชจเชพเชจเชพ เชนเชพเชฐเซเชกเชตเซ‡เชฐ เชธเช‚เชธเชพเชงเชจเซ‹ เช…เชจเซ‡ เชธเชฟเชธเซเชŸเชฎ เชเชกเชฎเชฟเชจเชฟเชธเซเชŸเซเชฐเซ‡เชŸเชฐเชจเซเช‚ 1 เช•เชฒเชพเช• เช•เชพเชฎ เช›เซ‡.

เช…เชฎเซ‡ CetntOS 3 เชชเชฐ OpenVPN เช…เชจเซ‡ Easy-RSA เชธเช‚เชธเซเช•เชฐเชฃ 7 เชธเชพเชฅเซ‡ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชถเซเช‚, เชœเซ‡เชจเซ‡ 100 เช•เชจเซ‡เช•เซเชถเชจ เชฆเซ€เช  4 vCPUs เช…เชจเซ‡ 4 GiB RAM เชซเชพเชณเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡.

เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚, เช…เชฎเชพเชฐเซ€ เชธเช‚เชธเซเชฅเชพเชจเซเช‚ เชจเซ‡เชŸเชตเชฐเซเช• 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 VPN เช•เซเชฒเชพเชฏเชจเซเชŸเซเชธ เชฎเชพเชŸเซ‡ เชซเชพเชณเชตเซ‡เชฒ เช›เซ‡.

เชฌเชนเชพเชฐเชฅเซ€ เช•เชจเซ‡เช•เซเชŸ เชฅเชตเชพ เชฎเชพเชŸเซ‡, เชชเซ‹เชฐเซเชŸ 1194/udp เชฆเซเชตเชพเชฐเชพ เช•เชจเซ‡เช•เซเชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เช…เชจเซ‡ เช…เชฎเชพเชฐเชพ เชธเชฐเซเชตเชฐ เชฎเชพเชŸเซ‡ DNS เชฎเชพเช‚ A-record gw.abc.ru เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡.

SELinux เชจเซ‡ เชจเชฟเชทเซเช•เซเชฐเชฟเชฏ เช•เชฐเชตเชพเชจเซ€ เชธเช–เชค เชญเชฒเชพเชฎเชฃ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชคเซ€ เชจเชฅเซ€! OpenVPN เชธเซเชฐเช•เซเชทเชพ เชจเซ€เชคเชฟเช“เชจเซ‡ เช…เช•เซเชทเชฎ เช•เชฐเซเชฏเชพ เชตเชฟเชจเชพ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡.

เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพ

  1. OS เช…เชจเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชธเซ‹เชซเซเชŸเชตเซ‡เชฐเชจเซ€ เชธเซเชฅเชพเชชเชจเชพ
  2. เช•เซเชฐเชฟเชชเซเชŸเซ‹เช—เซเชฐเชพเชซเซ€ เชธเซ‡เชŸ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡
  3. OpenVPN เชธเซ‡เชŸ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡
  4. เชเชกเซ€ เชชเซเชฐเชฎเชพเชฃเซ€เช•เชฐเชฃ
  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

เชถเชฐเชคเซ€ เชธเช‚เชธเซเชฅเชพ เชเชฌเซ€เชธเซ€ เชเชฒเชเชฒเชธเซ€ เชฎเชพเชŸเซ‡เชจเชพ เชชเชฐเชฟเชฎเชพเชฃเซ‹ เช…เชนเซ€เช‚ เชตเชฐเซเชฃเชตเซ‡เชฒ เช›เซ‡; เชคเชฎเซ‡ เชคเซ‡เชฎเชจเซ‡ เชตเชพเชธเซเชคเชตเชฟเช•เชฎเชพเช‚ เชธเซเชงเชพเชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชฅเชตเชพ เชคเซ‡เชฎเชจเซ‡ เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚เชฅเซ€ เช›เซ‹เชกเซ€ เชถเช•เซ‹ เช›เซ‹. เชชเชฐเชฟเชฎเชพเชฃเซ‹เชฎเชพเช‚ เชธเซŒเชฅเซ€ เชฎเชนเชคเซเชตเชจเซ€ เชฌเชพเชฌเชค เช เช›เซ‡เชฒเซเชฒเซ€ เชฒเชพเช‡เชจ เช›เซ‡, เชœเซ‡ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเชจเซ€ เชฎเชพเชจเซเชฏเชคเชพ เช…เชตเชงเชฟ เชฆเชฟเชตเชธเซ‹เชฎเชพเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซ‡ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชฎเซ‚เชฒเซเชฏ 10 เชตเชฐเซเชท (365*10+2 เชฒเซ€เชช เชตเชฐเซเชท) เชตเชพเชชเชฐเซ‡ เช›เซ‡. เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹ เชœเชพเชฐเซ€ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เชคเซ‡ เชชเชนเซ‡เชฒเชพเช‚ เช† เชฎเซ‚เชฒเซเชฏเชจเซ‡ เชธเชฎเชพเชฏเซ‹เชœเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡.

เช†เช—เชณ, เช…เชฎเซ‡ เช“เชŸเซ‹เชจเซ‹เชฎเชธ เชธเชฐเซเชŸเชฟเชซเชฟเช•เซ‡เชถเชจ เช“เชฅเซ‹เชฐเชฟเชŸเซ€เชจเซ‡ เช—เซ‹เช เชตเซ€เช เช›เซ€เช.

เชธเซ‡เชŸเช…เชชเชฎเชพเช‚ เชšเชฒเซ‹เชจเซ€ เชจเชฟเช•เชพเชธ เช•เชฐเชตเซ€, CA เชถเชฐเซ‚ เช•เชฐเชตเซ€, CA เชฐเซ‚เชŸ เช•เซ€ เช…เชจเซ‡ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เชœเชพเชฐเซ€ เช•เชฐเชตเซเช‚, เชกเชฟเชซเซ€-เชนเซ‡เชฒเชฎเซ‡เชจ เช•เซ€, 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 เชธเชฐเซเชตเชฐ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡;
  • AD** เชฎเชพเช‚ เชชเซเชฐเชฎเชพเชฃเซ€เช•เชฐเชฃ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพ เชฎเชพเชŸเซ‡ เช›เซ‡เชฒเซเชฒเซ€ 2 เชฒเชพเช‡เชจเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

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

**เชœเซ‹ AD เชฎเชพเช‚ เชชเซเชฐเชฎเชพเชฃเซ€เช•เชฐเชฃเชจเซ€ เชœเชฐเซ‚เชฐ เชจ เชนเซ‹เชฏ, เชคเซ‹ เชคเซ‡เชจเชพ เชชเชฐ เชŸเชฟเชชเซเชชเชฃเซ€ เช•เชฐเซ‹, เช†เช—เชฒเชพ เชตเชฟเชญเชพเช—เชจเซ‡ เช›เซ‹เชกเซ€ เชฆเซ‹, เช…เชจเซ‡ เชจเชฎเซ‚เชจเชพเชฎเชพเช‚ auth-user-pass เชฒเชพเช‡เชจ เชฆเซ‚เชฐ เช•เชฐเซ‹.

เชเชกเซ€ เชชเซเชฐเชฎเชพเชฃเซ€เช•เชฐเชฃ

เชฌเซ€เชœเชพ เชชเชฐเชฟเชฌเชณเชจเซ‡ เชธเชฎเชฐเซเชฅเชจ เช†เชชเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ 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-pass เชกเชพเชฏเชฐเซ‡เช•เซเชŸเชฟเชตเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชตเชงเชพเชฐเชพเชจเชพ เชฌเชพเชนเซเชฏ เชชเซเชฐเชฎเชพเชฃเซ€เช•เชฐเชฃ เชฎเชพเชŸเซ‡ เชฅเชพเชฏ เช›เซ‡.

เชนเซ‹เชฎ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ (เช…เชฅเชตเชพ เช…เชจเซเชฏ เช…เชจเซเช•เซ‚เชณ เชธเซเชฅเชพเชจ) เช…เชฎเซ‡ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเชจเซ€ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเชตเชพ เช…เชจเซ‡ เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชเช• เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชฌเชจเชพเชตเซ€เช เช›เซ€เช:

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

เชธเซเชชเชทเซเชŸเชคเชพเช“:

  • เชชเซเชฐเชฅเชฎ เชฒเชพเช‡เชจ เชธเชฐเซเชตเชฐ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เช›เซ‡;
  • เชชเซเชฐเชฅเชฎ เชชเชพเชคเซเชฐ
    • เชตเซ€ (เชฎเชพเชจเซเชฏ) - เชฎเชพเชจเซเชฏ;
    • เช†เชฐ (เชฐเชฆ) - เชฏเชพเชฆ.

เชจเซ‡เชŸเชตเชฐเซเช• เช—เซ‹เช เชตเชฃเซ€

เช›เซ‡เชฒเซเชฒเชพ เชชเช—เชฒเชพเช“ เชŸเซเชฐเชพเชจเซเชธเชฎเชฟเชถเชจ เชจเซ‡เชŸเชตเชฐเซเช• - เชฐเซ‚เชŸเซ€เช‚เช— เช…เชจเซ‡ เชซเชพเชฏเชฐเชตเซ‹เชฒเชจเซ‡ เช—เซ‹เช เชตเชตเชพเชจเซเช‚ เช›เซ‡.

เชธเซเชฅเชพเชจเชฟเช• เชซเชพเชฏเชฐเชตเซ‹เชฒเชฎเชพเช‚ เช•เชจเซ‡เช•เซเชถเชจเซเชธเชจเซ‡ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเชตเซ€:

$ 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

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹