เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบฒเบ‡เป„เบเบ‚เบญเบ‡เบญเบปเบ‡เบเบฒเบ™ SMB เปƒเบ™ OpenVPN

เบเบฒเบ™เบชเป‰เบฒเบ‡เบšเบฑเบ™เบซเบฒ

เบšเบปเบ”เบ„เบงเบฒเบกเบญเบฐเบ—เบดเบšเบฒเบเป€เบ–เบดเบ‡เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ‚เบญเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบซเปˆเบฒเบ‡เป„เบเบชเบญเบเบซเบผเบตเบเบชเปเบฒเบฅเบฑเบšเบžเบฐเบ™เบฑเบเบ‡เบฒเบ™เปƒเบ™เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เปเบซเบผเปˆเบ‡เป€เบ›เบตเบ”เปเบฅเบฐเบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบ—เบฑเบ‡เบชเบญเบ‡เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบฅเบฐเบšเบปเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™, เปเบฅเบฐเบˆเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ‚เบฒเบ”เปเบ„เบ™เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบ™เบฅเบฐเบšเบปเบšเบเบฒเบ™เบ„เป‰เบฒเบ—เบตเปˆเบกเบตเบขเบนเปˆเบซเบผเบทเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบกเบฑเบ™เบšเปเปˆเบžเบฝเบ‡เบžเป.

เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ‚เบญเบ‡เบšเบปเบ”เบ„เบงเบฒเบกเปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบšเบปเบšเบ—เบตเปˆเบชเบปเบกเบšเบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบซเปˆเบฒเบ‡เป„เบเบชเบญเบเบซเบผเบตเบเบเบฑเบšเบญเบปเบ‡เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡, เป€เบŠเบดเปˆเบ‡เบซเบผเบฒเบเบเปˆเบงเบฒ "เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ OpenVPN เปƒเบ™ 10 เบ™เบฒเบ—เบต."

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบฅเบฐเบšเบปเบšเบ—เบตเปˆเปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เปเบฅเบฐ (เบ—เบฒเบ‡เป€เบฅเบทเบญเบ) Active Directory เบ‚เบญเบ‡เบšเปเบฅเบดเบชเบฑเบ”เบˆเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบเบงเบ”เบชเบญเบšเบœเบนเป‰เปƒเบŠเป‰. เบ™เบฑเป‰เบ™. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบฅเบฐเบšเบปเบšเบ—เบตเปˆเบกเบตเบชเบญเบ‡เบ›เบฑเบ”เปƒเบˆเบเบฒเบ™เบเบงเบ”เบชเบญเบš - เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเบกเบต (เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™) เปเบฅเบฐเบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเบฎเบนเป‰ (เบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™).

เบชเบฑเบ™เบเบฒเบ™เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰เป„เบ”เป‰เบฎเบฑเบšเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปเบกเปˆเบ™เบเบฒเบ™เป€เบ›เบฑเบ™เบชเบฐเบกเบฒเบŠเบดเบเบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเปƒเบ™เบเบธเปˆเบก myVPNUsr. เบชเบดเบ”เบญเบณเบ™เบฒเบ”เปƒเบšเบฎเบฑเบšเบฎเบญเบ‡เบˆเบฐเบ–เบทเบเปƒเบŠเป‰เปเบšเบšเบญเบญเบšเบฅเบฒเบ.

เบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เปเบเป‰เป„เบ‚เปเบกเปˆเบ™เบžเบฝเบ‡เปเบ•เปˆเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบฎเบฒเบ”เปเบงเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเปเบฅเบฐเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡ 1 เบŠเบปเปˆเบงเป‚เบกเบ‡เบ‚เบญเบ‡เบœเบนเป‰เป€เบšเบดเปˆเบ‡เปเบเบ‡เบฅเบฐเบšเบปเบš.

เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡ virtual เบเบฑเบš 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 servers 172.16.16.16 เปเบฅเบฐ 172.16.17.17 เปเบฅเบฐเบเปˆเบญเบ. .172.16.20.0/23 เบ–เบทเบเบˆเบฑเบ”เบชเบฑเบ™เปƒเบซเป‰เบฅเบนเบเบ„เป‰เบฒ VPN .

เป€เบžเบทเปˆเบญเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบˆเบฒเบเบžเบฒเบเบ™เบญเบ, เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบœเปˆเบฒเบ™เบžเบญเบ” 1194/udp เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰, เปเบฅเบฐ A-record gw.abc.ru เป„เบ”เป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เปƒเบ™ DNS เบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.

เบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™ SELinux เบขเปˆเบฒเบ‡เป€เบ‚เบฑเป‰เบกเบ‡เบงเบ”! OpenVPN เป€เบฎเบฑเบ”เบงเบฝเบเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ›เบดเบ”เบ™เบฐเป‚เบเบšเบฒเบเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž.

เป€เบ™เบทเป‰เบญเปƒเบ™

  1. เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ OS เปเบฅเบฐเบŠเบญเบšเปเบงเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ
  2. เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบฅเบฑเบš
  3. เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ OpenVPN
  4. AD Authentication
  5. เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบฅเบฐเบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบช
  6. เบšเบฑเบ™เบซเบฒเปƒเบšเบฎเบฑเบšเบฎเบญเบ‡ เปเบฅเบฐเบเบฒเบ™เบ–เบญเบ™เบ„เบทเบ™
  7. เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบ„เบทเบญเบ‚เปˆเบฒเบ
  8. เบกเบตเบซเบเบฑเบ‡เบ•เปเปˆเป„เบ›

เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ OS เปเบฅเบฐเบŠเบญเบšเปเบงเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ

เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบเบฒเบ™เปเบˆเบเบขเบฒเบ CentOS 7.8.2003. เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบ•เบดเบ”เบ•เบฑเป‰เบ‡ OS เปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบซเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”. เบกเบฑเบ™เบชเบฐเบ”เบงเบเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰เป‚เบ”เบเปƒเบŠเป‰ kickstart, cloning เบฎเบนเบšโ€‹เบžเบฒเบš OS เบ—เบตเปˆโ€‹เบ•เบดเบ”โ€‹เบ•เบฑเป‰เบ‡โ€‹เบเปˆเบญเบ™โ€‹เบซเบ™เป‰เบฒโ€‹เบ™เบตเป‰โ€‹เปเบฅเบฐโ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เบญเบทเปˆเบ™เป†โ€‹.

เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เบ•เบดเบ”โ€‹เบ•เบฑเป‰เบ‡โ€‹, เบเบฒเบ™โ€‹เบกเบญเบšโ€‹เบซเบกเบฒเบโ€‹เบ—เบตเปˆโ€‹เบขเบนเปˆโ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เป‚เบ•เป‰โ€‹เบ•เบญเบšโ€‹เป€เบ„เบทเบญโ€‹เบ‚เปˆเบฒเบ (เบ•เบฒเบกโ€‹เป€เบ‡เบทเปˆเบญเบ™โ€‹เป„เบ‚โ€‹เบ‚เบญเบ‡โ€‹เบงเบฝเบโ€‹เบ‡เบฒเบ™ 172.16.19.123โ€‹)โ€‹, เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบ›เบฑเบšโ€‹เบ›เบธเบ‡ OSโ€‹:

$ sudo yum update -y && reboot

เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒ synchronization เป€เบงเบฅเบฒเปเบกเปˆเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.
เป€เบžเบทเปˆเบญเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบŠเบญเบšเปเบงเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™ openvpn, openvpn-auth-ldap, easy-rsa เปเบฅเบฐ vim packages เป€เบ›เบฑเบ™เบ•เบปเบงเปเบเป‰เป„เบ‚เบ•เบปเป‰เบ™เบ•เป (เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™ EPEL repository).

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

เบกเบฑเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบ—เบตเปˆเบˆเบฐเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ•เบปเบงเปเบ—เบ™เปเบ‚เบเบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡ virtual:

$ sudo yum install open-vm-tools

เบชเปเบฒเบฅเบฑเบš VMware ESXi hosts, เบซเบผเบทเบชเปเบฒเบฅเบฑเบš 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 Authentication

เป€เบžเบทเปˆเบญเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ›เบฑเบ”เปƒเบˆเบ—เบตเบชเบญเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบšเบฑเบ™เบŠเบตเปƒเบ™ 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โ€ โ€“ container of the allow group (group myVPNUsr in the container 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 เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบžเบดเบชเบนเบ”เบขเบทเบ™เบขเบฑเบ™เบžเบฒเบเบ™เบญเบเป€เบžเบตเปˆเบกเป€เบ•เบตเบก.

เปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเป€เบฎเบทเบญเบ™ (เบซเบผเบทเบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ—เบตเปˆเบชเบฐเบ”เบงเบเบญเบทเปˆเบ™เป†) เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เบชเบฐเบ„เบดเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เปเบฅเบฐเบเบฒเบ™เบชเป‰เบฒเบ‡เป‚เบ›เบฃเป„เบŸเบฅเปŒ:

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

Feedback

เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ™เบตเบ›เบฐเบ™เบญเบกเบ‚เบญเบ‡เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™ (เบเบฒเบ™เบชเบนเบ™เป€เบชเบ, เบเบฒเบ™เบฅเบฑเบ), เบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบ–เบญเบ™เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เบ™เบตเป‰:

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 (เบ–เบทเบเบ•เป‰เบญเบ‡) - เบ–เบทเบเบ•เป‰เบญเบ‡;
    • R (เบ–เบญเบ™เบ„เบทเบ™) - เป€เบญเบตเป‰เบ™เบ„เบทเบ™.

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบ„เบทเบญเบ‚เปˆเบฒเบ

เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบชเบธเบ”เบ—เป‰เบฒเบเปเบกเปˆเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบชเบฒเบเบชเบปเปˆเบ‡ - routing เปเบฅเบฐ firewalls.

เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปƒเบ™ Firewall เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™:

$ 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

เปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ‚เบญเบ‡เบšเปเบฅเบดเบชเบฑเบ”, เบกเบตเปเบ™เบงเป‚เบ™เป‰เบกเบ—เบตเปˆเบˆเบฐเบกเบต subnetting เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบšเบญเบ router (s) เบงเบดเบ—เบตเบเบฒเบ™เบชเบปเปˆเบ‡ packets เบ›เบฒเบเบ—เบฒเบ‡เบชเปเบฒเบฅเบฑเบšเบฅเบนเบเบ„เป‰เบฒ VPN เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เปƒเบ™เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡เปƒเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ (เบ‚เบถเป‰เบ™เบเบฑเบšเบญเบธเบ›เบฐเบเบญเบ™เบ—เบตเปˆเปƒเบŠเป‰):

# ip route 172.16.20.0 255.255.254.0 172.16.19.123

เปเบฅเบฐเบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ.

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เปƒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš router เบŠเบฒเบเปเบ”เบ™เบ—เบตเปˆ 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 เบ›เบปเบเบเบฐเบ•เบด, เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบˆเบฐเบ–เบทเบเบซเบธเป‰เบกเบซเปเปˆเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบกเบฒเป€เบ–เบดเบ‡เบ‚เบญเบ‡ firewalld.

เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ›เบฒเบเบ—เบฒเบ‡เบ—เบตเปˆเบกเบตเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ tun0, เปเบฅเบฐเบชเปˆเบงเบ™เบ•เบดเบ”เบ•เปเปˆเบžเบฒเบเบ™เบญเบเบชเปเบฒเบฅเบฑเบšเบญเบธเป‚เบกเบ‡เบญเบฒเบ”เบˆเบฐเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เบ•เบปเบงเบขเปˆเบฒเบ‡, ens192, เบ‚เบถเป‰เบ™เบเบฑเบšเป€เบงเบ—เบตเบ—เบตเปˆเปƒเบŠเป‰.

เป€เบชเบฑเป‰เบ™เบชเบธเบ”เบ—เป‰เบฒเบเปเบกเปˆเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเบฑเบ™เบ—เบถเบเบŠเบธเบ”เบ—เบตเปˆเบซเบผเบธเบ”เบฅเบปเบ‡. เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเบฑเบ™เบ—เบถเบเป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบ, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบ›เปˆเบฝเบ™เบฅเบฐเบ”เบฑเบšเบเบฒเบ™เบ”เบตเบšเบฑเบเปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ firewalld:

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

เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปเบกเปˆเบ™เบ„เบณเบชเบฑเปˆเบ‡ firewalld เบ›เบปเบเบเบฐเบ•เบดเป€เบžเบทเปˆเบญเบญเปˆเบฒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ„เบทเบ™เปƒเปเปˆ:

$ sudo firewall-cmd --reload

เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบŠเบธเบ”เบ—เบตเปˆเบซเบผเบธเบ”เบฅเบปเบ‡เป€เบŠเบฑเปˆเบ™เบ™เบตเป‰:

grep forward_fw /var/log/messages

เบกเบตเบซเบเบฑเบ‡เบ•เปเปˆเป„เบ›

เบญเบฑเบ™เบ™เบตเป‰เป€เบฎเบฑเบ”เบชเบณเป€เบฅเบฑเบ”เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡!

เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเปเบกเปˆเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบŠเบญเบšเปเบงเบฅเบนเบเบ„เป‰เบฒเปƒเบ™เบเปˆเบฒเบเบฅเบนเบเบ„เป‰เบฒ, เบ™เปเบฒเป€เบ‚เบปเป‰เบฒเป‚เบ›เบฃเป„เบŸเบฅเปŒเปเบฅเบฐเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ Windows, เบŠเบธเบ”เปเบˆเบเบขเบฒเบเปเบกเปˆเบ™เบ•เบฑเป‰เบ‡เบขเบนเปˆเป€เบ—เบดเบ‡ เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ.

เบชเบธเบ”เบ—เป‰เบฒเบ, เบžเบงเบเป€เบฎเบปเบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเปƒเบซเบกเปˆเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบšเบฅเบฐเบšเบปเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเปเบฅเบฐเบเบฒเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™, เปเบฅเบฐเบขเปˆเบฒเบฅเบทเบกเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เป€เบ›เบฑเบ™เบ›เบฐเบˆเปเบฒ.

เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡!

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™