assign-ip-ssid 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. #!/bin/sh
  2. CONFIG=1
  3. source /usr/sbin/helper.sh
  4. DNSMASQ_CONF=/tmp/etc/dnsmasq.conf
  5. cmd_log () {
  6. logger "${2}[${1}] - ${3}"
  7. }
  8. cmd_run () {
  9. CMD=`${2}`
  10. ERRCODE=$?
  11. cmd_log ${ERRCODE} "${1}" "${ERR}: ${2}, ${CMD}"
  12. return ${ERRCODE}
  13. }
  14. iptable () {
  15. ARG="${1}"
  16. if [ $# -gt 3 ]; then
  17. ARG="${ARG} -d ${4}"
  18. fi
  19. cmd_run "iptable" "iptables -C ${2} -i ${ARG} -j ${3}"
  20. if [ $? -eq 1 ]; then
  21. cmd_run "iptable" "iptables -I ${2} -i ${ARG} -j ${3}"
  22. else
  23. cmd_run "iptable" "iptables -D ${2} -i ${ARG} -j ${3}"
  24. #iptable ${1} ${2} ${3} ${4}
  25. fi
  26. }
  27. ebtable () {
  28. CMD="-p ${2} -${4} ${1} -j ${3}"
  29. if [ `ebtables -t broute -L | grep -ice "${CMD}"` -eq 0 ]; then
  30. if [ $# -eq 1 ]; then
  31. cmd_run "ebtable" "ebtables ${1}"
  32. return $?
  33. else
  34. cmd_run "ebtable" "ebtables -t broute -I BROUTING ${CMD}"
  35. fi
  36. else
  37. cmd_run "ebtable" "ebtables -t broute -D BROUTING ${CMD}"
  38. if [ $# -eq 4 ]; then
  39. ebtable ${1} ${2} ${3} ${4}
  40. fi
  41. fi
  42. return $?
  43. }
  44. assign_ip () {
  45. IFACE="${1}"
  46. IFACE_INET_ADDR="${2}"
  47. IFACE_NWRK_ADDR="${IFACE_INET_ADDR%.*}.0"
  48. IFACE_MASK_ADDR="255.255.255.0"
  49. DHCP_START="${IFACE_INET_ADDR%.*}.${3}"
  50. DHCP_END="${IFACE_INET_ADDR%.*}.${4}"
  51. LAN=$(ifconfig "br0" | sed -ne's/.*inet addr:\([^ ]*\).*$/\1/p')
  52. echo "
  53. IFACE: ${IFACE}
  54. INET: ${IFACE_INET_ADDR}
  55. NWRK: ${IFACE_NWRK_ADDR}
  56. MASK: ${IFACE_MASK_ADDR}
  57. DCHP
  58. START: ${DHCP_START}
  59. END: ${DHCP_END}
  60. LAN: ${LAN}"
  61. ifconfig "${IFACE}" > /dev/null 2>&1 || continue
  62. cmd_run "ifconfig" "ifconfig ${IFACE} ${IFACE_INET_ADDR} netmask ${IFACE_MASK_ADDR}"
  63. ebtable "${IFACE}" "ipv4" "DROP" "i"
  64. ebtable "${IFACE}" "ipv6" "DROP" "i"
  65. ebtable "${IFACE}" "arp" "DROP" "i"
  66. iptable "${IFACE}" "FORWARD" "ACCEPT"
  67. iptable "${IFACE}" "INPUT" "ACCEPT"
  68. iptable "${IFACE}" "FORWARD" "DROP" "${LAN}/24"
  69. iptable "${IFACE}" "INPUT" "DROP" "${LAN}/24"
  70. ebtable "-D FORWARD -i ${IFACE} -j DROP"
  71. ebtable "-D FORWARD -o ${IFACE} -j DROP"
  72. if [ `cat ${DNSMASQ_CONF} | grep -c ${IFACE}` -eq 0 ]; then
  73. logger "dnsmasq-dhcp: Configure ${IFACE} to have special DHCP"
  74. pc_append "interface=${IFACE}" ${DNSMASQ_CONF}
  75. pc_append "dhcp-range=${IFACE},${DHCP_START},${DHCP_END},${IFACE_MASK_ADDR},24h" ${DNSMASQ_CONF}
  76. pc_append "dhcp-option=${IFACE},3,${IFACE_INET_ADDR}" ${DNSMASQ_CONF}
  77. #pc_append "dhcp-option=${IFACE},6,8.8.8.8,8.8.4.4" ${DNSMASQ_CONF}
  78. pc_append "dhcp-option=${IFACE},252,\"\n\"" ${DNSMASQ_CONF}
  79. fi
  80. }
  81. killall dnsmasq
  82. if [ `cat ${DNSMASQ_CONF} | grep -c "log-dhcp"` -eq 0 ]; then
  83. pc_append "log-dhcp" ${DNSMASQ_CONF}
  84. fi
  85. assign_ip "wl0.1" "192.168.2.1" "128" "191" #/26
  86. assign_ip "wl0.2" "192.168.3.1" "128" "191" #/26
  87. cat ${DNSMASQ_CONF}
  88. dnsmasq --log-async