eibgrad

tomato-ovpn-ptp-client-74555.sh

Apr 22nd, 2019 (edited)
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.51 KB | None | 0 0
  1. #!/bin/sh
  2. # openvpn ptp (point-to-point) tunnel - client
  3. # tomato ref: https://bit.ly/2DrmODq
  4. # v1.0.0
  5.  
  6. # ip and port of openvpn server
  7. REMOTE_IP="199.199.199.199"
  8. REMOTE_PORT="22810"
  9.  
  10. # vps port forward
  11. EXT_PORT="80"
  12. INT_IP="192.168.61.43"
  13. INT_PORT="80"
  14.  
  15. # default working directory
  16. OVPN_DIR="/tmp/ovpn_ptp"
  17.  
  18. [ -d $OVPN_DIR ] || mkdir -p $OVPN_DIR
  19.  
  20. # --------------------------- begin ovpn-start.sh ---------------------------- #
  21. cat << EOF > $OVPN_DIR/ovpn-start.sh
  22. #!/bin/sh
  23. modprobe tun
  24. killall -q openvpn && sleep 3
  25. openvpn --config $OVPN_DIR/openvpn.conf
  26. EOF
  27. chmod +x $OVPN_DIR/ovpn-start.sh
  28. # ---------------------------- end ovpn-start.sh ----------------------------- #
  29.  
  30. # ---------------------------- begin openvpn.conf ---------------------------- #
  31. cat << EOF > $OVPN_DIR/openvpn.conf
  32. daemon
  33. dev tun0
  34. proto udp4
  35. remote $REMOTE_IP $REMOTE_PORT
  36. ifconfig 10.8.0.2 10.8.0.1
  37. route $INT_IP
  38. script-security 2
  39. up $OVPN_DIR/up.sh
  40. down $OVPN_DIR/down.sh
  41. secret $OVPN_DIR/static.key 1
  42. #user nobody
  43. #group nobody
  44. cipher aes-256-cbc
  45. auth sha256
  46. auth-nocache
  47. persist-tun
  48. persist-key
  49. keepalive 10 60
  50. ping-timer-rem
  51. comp-lzo no
  52. verb 4
  53. EOF
  54. # ----------------------------- end openvpn.conf ----------------------------- #
  55.  
  56. # ----------------------------- begin static.key ----------------------------- #
  57. cat << "EOF" > $OVPN_DIR/static.key
  58. #
  59. # 2048 bit OpenVPN static key
  60. #
  61. -----BEGIN OpenVPN Static key V1-----
  62. 5b4cdb0114d8d499ad97210a1c2fd7ea
  63. 1f1ede99c506109ba0df8c84a0b6d824
  64. 75b9d5def574883f5883532d09f244ed
  65. 8fd21d44b43da99536ab5e8592441f50
  66. 0063ff4d2280f302f39147cd5d9c21b8
  67. 37f3a2102cdeff9746a192ffa6f87f24
  68. 2770677ea3a0af3a30a630d24350a605
  69. c9cf6715dab985ba5105739dc61f1111
  70. 3e368b64287e9fe0d7e48284e10be4c1
  71. 4965de0f60554a5a9753bb14f3008462
  72. 2ae6c86f3710a122bc3954eb20688697
  73. 5d3e1ed2d19fe930c997aac121888376
  74. 4bdfc2d462cd23000fb221b6702de7e6
  75. a7b5c718b5e5d351e401a35d8b66e407
  76. a4b467e1c9095003e5db52ae4d3574b1
  77. 1be6e37867ef2455d5cbed8b8a614245
  78. -----END OpenVPN Static key V1-----
  79. EOF
  80. chmod 600 $OVPN_DIR/static.key
  81. # ------------------------------ end static.key ------------------------------ #
  82.  
  83. # ------------------------------- begin up.sh -------------------------------- #
  84. cat << EOF > $OVPN_DIR/up.sh
  85. #!/bin/sh
  86.  
  87. # allow bidirectional (aka site-to-site) access
  88. iptables -A INPUT -i tun0 -j ACCEPT
  89. iptables -A FORWARD -i tun0 -j ACCEPT
  90.  
  91. # port forward over the VPN (no SNAT required)
  92. iptables -t nat -A PREROUTING -p tcp --dport $EXT_PORT \
  93.     -j DNAT --to-destination $INT_IP:$INT_PORT
  94. iptables -A FORWARD -p tcp -d $INT_IP --dport $INT_PORT -j ACCEPT
  95.  
  96. # allow internet access over local network interface (e.g., ens2)
  97. iptables -t nat -A POSTROUTING -s $INT_IP -j MASQUERADE
  98. EOF
  99. chmod +x $OVPN_DIR/up.sh
  100. # -------------------------------- end up.sh --------------------------------- #
  101.  
  102. # ------------------------------ begin down.sh ------------------------------- #
  103. cat << EOF > $OVPN_DIR/down.sh
  104. #!/bin/sh
  105. ipt() { while iptables "\$@" 2>/dev/null; do :; done }
  106.  
  107. # flush the firewall rules
  108. ipt -D INPUT -i tun0 -j ACCEPT
  109. ipt -D FORWARD -i tun0 -j ACCEPT
  110. ipt -t nat -D PREROUTING -p tcp --dport $EXT_PORT \
  111.     -j DNAT --to-destination $INT_IP:$INT_PORT
  112. ipt -D FORWARD -p tcp -d $INT_IP --dport $INT_PORT -j ACCEPT
  113. ipt -t nat -D POSTROUTING -s $INT_IP -j MASQUERADE
  114. EOF
  115. chmod +x $OVPN_DIR/down.sh
  116. # ------------------------------- end down.sh -------------------------------- #
  117.  
  118. # begin openvpn execution and verify connection
  119. cd $OVPN_DIR && sh -x ./ovpn-start.sh && ping 10.8.0.1
Add Comment
Please, Sign In to add comment