Advertisement
Guest User

Untitled

a guest
Apr 21st, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.95 KB | None | 0 0
  1. #!/bin/bash
  2. firewall_clean=0
  3.  
  4. display() { echo $var; }
  5.  
  6. open_port(){
  7. /sbin/iptables -A FORWARD -i $EXTERNAL_INF -o $INTERNAL_INF -p tcp --syn --dport $var -m conntrack --ctstate NEW -j ACCEPT
  8. /sbin/iptables -A FORWARD -i $EXTERNAL_INF -o $INTERNAL_INF -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
  9. /sbin/iptables -A FORWARD -i $INTERNAL_INF -o $EXTERNAL_INF -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
  10. /sbin/iptables -t nat -A PREROUTING -i $EXTERNAL_INF -p tcp --dport $var -j DNAT --to-destination $INTERNAL_SERVER
  11. /sbin/iptables -t nat -A POSTROUTING -o $EXTERNAL_INF -p tcp --dport $var -d $INTERNAL_SERVER -j SNAT --to-source $LOCAL_IP
  12. }
  13.  
  14. clean_rules (){
  15.  
  16. /sbin/iptables -F
  17. /sbin/iptables -X
  18. /sbin/iptables -t nat -F
  19. /sbin/iptables -t nat -X
  20. /sbin/iptables -t mangle -F
  21. /sbin/iptables -t mangle -X
  22. /sbin/iptables -P INPUT ACCEPT
  23. /sbin/iptables -P FORWARD ACCEPT
  24. /sbin/iptables -P OUTPUT ACCEPT
  25. firewall_clean=1
  26. }
  27.  
  28. portcheck (){
  29.  
  30. echo "Working with port :$var"
  31.  
  32. if nc -w 1 -v $INTERNAL_SERVER $var </dev/null &>/dev/null
  33. then
  34. echo "Success: Let's forward it"
  35. PORT=var
  36. if [ "$firewall_clean" -eq "1" ];
  37. then
  38. echo "We are ready to go"
  39. else
  40. echo "Lets clean older firewall rules"
  41. clean_rules
  42. fi
  43. open_port
  44. else
  45. echo "Failed: This port is not open"
  46. fi
  47.  
  48. }
  49.  
  50. if [ "$#" -le "4" ];
  51. then
  52. echo "Invalid arguments:
  53. Usage: portforward INTERNAL_SERVER INTERNAL_INTERFACE EXTERNAL_INTERFACE LOCAL_IP < PORTS >
  54. For example:
  55. portforward 10.42.0.10 wlan0 eth0 10.42.0.1 80 443 5555
  56. "
  57. exit
  58. fi
  59.  
  60. echo 1 | tee /proc/sys/net/ipv4/ip_forward
  61.  
  62. echo "#### local IP address to be exposed is :"
  63.  
  64. echo $1
  65. INTERNAL_SERVER=$1
  66.  
  67. shift
  68.  
  69. INTERNAL_INF=$1
  70.  
  71. shift
  72.  
  73. EXTERNAL_INF=$1
  74.  
  75. shift
  76.  
  77. LOCAL_IP=$1
  78.  
  79. shift
  80.  
  81. if ping -c 1 $INTERNAL_SERVER &> /dev/null
  82. then
  83. echo 'server is accessible'
  84. else
  85. echo 'server is not up'
  86. exit
  87. fi
  88.  
  89. echo "#### And list of port to be exposed is :"
  90. for var in "$@"
  91. do
  92. display
  93. done
  94.  
  95. for var in "$@"
  96. do
  97. portcheck
  98. done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement