ocserv.sh 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. #!/bin/bash
  2. # Script by MoeClub.org
  3. [ $EUID -ne 0 ] && echo "Error:This script must be run as root!" && exit 1
  4. EthName=`cat /proc/net/dev |grep ':' |cut -d':' -f1 |sed 's/\s//g' |grep -iv '^lo\|^sit\|^stf\|^gif\|^dummy\|^vmnet\|^vir\|^gre\|^ipip\|^ppp\|^bond\|^tun\|^tap\|^ip6gre\|^ip6tnl\|^teql\|^ocserv\|^vpn' |sed -n '1p'`
  5. [ -n "$EthName" ] || exit 1
  6. command -v yum >>/dev/null 2>&1
  7. if [ $? -eq 0 ]; then
  8. yum install -y curl wget nc xz openssl gnutls-utils
  9. else
  10. apt-get install -y curl wget netcat openssl gnutls-bin xz-utils
  11. fi
  12. XCMDS=("wget" "tar" "xz" "nc" "openssl" "certtool")
  13. for XCMD in "${XCMDS[@]}"; do command -v "$XCMD" >>/dev/null 2>&1; [ $? -ne 0 ] && echo "Not Found $XCMD."; done
  14. case `uname -m` in aarch64|arm64) VER="arm64";; x86_64|amd64) VER="amd64";; *) VER="";; esac
  15. [ ! -n "$VER" ] && echo "Not Support! " && exit 1
  16. mkdir -p /tmp
  17. PublicIP="$(wget --no-check-certificate -4 -qO- http://checkip.amazonaws.com)"
  18. # BBR
  19. bash <(wget --no-check-certificate -4 -qO- 'https://raw.githubusercontent.com/MoeClub/apt/master/bbr/bbr.sh') 0 0
  20. # vlmcs
  21. if [ "$VER" == "amd64" ]; then
  22. rm -rf /etc/vlmcs
  23. wget --no-check-certificate -4 -qO /tmp/vlmcs.tar "https://raw.githubusercontent.com/MoeClub/Note/master/AnyConnect/vlmcsd/vlmcsd_${VER}.tar"
  24. tar --overwrite -xvf /tmp/vlmcs.tar -C /
  25. [ -f /etc/vlmcs/vlmcs.d ] && bash /etc/vlmcs/vlmcs.d init
  26. fi
  27. # dnsmasq
  28. rm -rf /etc/dnsmasq.d
  29. wget --no-check-certificate -4 -qO /tmp/dnsmasq_bin.tar "https://raw.githubusercontent.com/MoeClub/Note/master/AnyConnect/build/dnsmasq_${VER}_v2.8.2.tar"
  30. tar --overwrite -xvf /tmp/dnsmasq_bin.tar -C /
  31. wget --no-check-certificate -4 -qO /tmp/dnsmasq_config.tar "https://raw.githubusercontent.com/MoeClub/Note/master/AnyConnect/build/dnsmasq_config.tar"
  32. tar --overwrite -xvf /tmp/dnsmasq_config.tar -C /
  33. sed -i "s/#\?except-interface=.*/except-interface=${EthName}/" /etc/dnsmasq.conf
  34. if [ -f /etc/crontab ]; then
  35. sed -i '/dnsmasq/d' /etc/crontab
  36. while [ -z "$(sed -n '$p' /etc/crontab)" ]; do sed -i '$d' /etc/crontab; done
  37. sed -i "\$a\@reboot root /usr/sbin/dnsmasq >>/dev/null 2>&1 &\n\n\n" /etc/crontab
  38. fi
  39. # ocserv
  40. rm -rf /etc/ocserv
  41. wget --no-check-certificate -4 -qO /tmp/ocserv_bin.tar "https://raw.githubusercontent.com/MoeClub/Note/master/AnyConnect/build/ocserv_${VER}_v1.1.6.tar"
  42. tar --overwrite -xvf /tmp/ocserv_bin.tar -C /
  43. wget --no-check-certificate -4 -qO /tmp/ocserv_config.tar "https://raw.githubusercontent.com/MoeClub/Note/master/AnyConnect/build/ocserv_config.tar"
  44. tar --overwrite -xvf /tmp/ocserv_config.tar -C /
  45. # server cert key file: /etc/ocserv/server.key.pem
  46. openssl genrsa -out /etc/ocserv/server.key.pem 2048
  47. # server cert file: /etc/ocserv/server.cert.pem
  48. openssl req -new -x509 -days 3650 -key /etc/ocserv/server.key.pem -out /etc/ocserv/server.cert.pem -subj "/C=/ST=/L=/O=/OU=/CN=${PublicIP}"
  49. # Default User
  50. UserPasswd=`openssl passwd MoeClub`
  51. echo -e "Default:Default:${UserPasswd}\nRoute:Route:${UserPasswd}\nNoRoute:NoRoute:${UserPasswd}\nNull:Null:${UserPasswd}\n" >/etc/ocserv/ocpasswd
  52. [ -d /etc/ocserv/group ] && echo -n >/etc/ocserv/group/Null
  53. bash /etc/ocserv/template/client.sh
  54. chown -R root:root /etc/ocserv
  55. chmod -R 755 /etc/ocserv
  56. [ -d /lib/systemd/system ] && find /lib/systemd/system -name 'ocserv*' -delete
  57. if [ -f /etc/crontab ]; then
  58. sed -i '/\/etc\/ocserv/d' /etc/crontab
  59. while [ -z "$(sed -n '$p' /etc/crontab)" ]; do sed -i '$d' /etc/crontab; done
  60. sed -i "\$a\@reboot root bash /etc/ocserv/ocserv.d >>/dev/null 2>&1 &\n\n\n" /etc/crontab
  61. fi
  62. # Sysctl
  63. if [ -f /etc/sysctl.conf ]; then
  64. sed -i '/^net\.ipv4\.ip_forward/d' /etc/sysctl.conf
  65. while [ -z "$(sed -n '$p' /etc/sysctl.conf)" ]; do sed -i '$d' /etc/sysctl.conf; done
  66. sed -i '$a\net.ipv4.ip_forward = 1\n\n' /etc/sysctl.conf
  67. fi
  68. # Limit
  69. if [[ -f /etc/security/limits.conf ]]; then
  70. LIMIT='262144'
  71. sed -i '/^\(\*\|root\).*\(hard\|soft\).*\(memlock\|nofile\)/d' /etc/security/limits.conf
  72. while [ -z "$(sed -n '$p' /etc/security/limits.conf)" ]; do sed -i '$d' /etc/security/limits.conf; done
  73. echo -ne "*\thard\tnofile\t${LIMIT}\n*\tsoft\tnofile\t${LIMIT}\nroot\thard\tnofile\t${LIMIT}\nroot\tsoft\tnofile\t${LIMIT}\n" >>/etc/security/limits.conf
  74. echo -ne "*\thard\tmemlock\t${LIMIT}\n*\tsoft\tmemlock\t${LIMIT}\nroot\thard\tmemlock\t${LIMIT}\nroot\tsoft\tmemlock\t${LIMIT}\n\n\n" >>/etc/security/limits.conf
  75. fi
  76. # SSH
  77. #[ -f /etc/ssh/sshd_config ] && sed -i "s/^#\?Port .*/Port 9527/g" /etc/ssh/sshd_config;
  78. [ -f /etc/ssh/sshd_config ] && sed -i "s/^#\?PermitRootLogin.*/PermitRootLogin yes/g" /etc/ssh/sshd_config;
  79. [ -f /etc/ssh/sshd_config ] && sed -i "s/^#\?PasswordAuthentication.*/PasswordAuthentication yes/g" /etc/ssh/sshd_config;
  80. # Timezone
  81. cp -rf /usr/share/zoneinfo/PRC /etc/localtime 2>/dev/null
  82. echo "Asia/Shanghai" >/etc/timezone
  83. ## Not Reboot
  84. [ "$1" == "NotReboot" ] && exit 0
  85. ## Rebot Now
  86. read -n 1 -p "Press <ENTER> to reboot..."
  87. reboot