123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- #!/bin/sh
- CONFIG=1
- source /usr/sbin/helper.sh
- DNSMASQ_CONF=/tmp/etc/dnsmasq.conf
- cmd_log () {
- logger "${2}[${1}] - ${3}"
- }
- cmd_run () {
- CMD=`${2}`
- ERRCODE=$?
- cmd_log ${ERRCODE} "${1}" "${ERR}: ${2}, ${CMD}"
- return ${ERRCODE}
- }
- iptable () {
- ARG="${1}"
- if [ $# -gt 3 ]; then
- ARG="${ARG} -d ${4}"
- fi
- cmd_run "iptable" "iptables -C ${2} -i ${ARG} -j ${3}"
- if [ $? -eq 1 ]; then
- cmd_run "iptable" "iptables -I ${2} -i ${ARG} -j ${3}"
- else
- cmd_run "iptable" "iptables -D ${2} -i ${ARG} -j ${3}"
- #iptable ${1} ${2} ${3} ${4}
- fi
- }
- ebtable () {
- CMD="-p ${2} -${4} ${1} -j ${3}"
- if [ `ebtables -t broute -L | grep -ice "${CMD}"` -eq 0 ]; then
- if [ $# -eq 1 ]; then
- cmd_run "ebtable" "ebtables ${1}"
- return $?
- else
- cmd_run "ebtable" "ebtables -t broute -I BROUTING ${CMD}"
- fi
- else
- cmd_run "ebtable" "ebtables -t broute -D BROUTING ${CMD}"
- if [ $# -eq 4 ]; then
- ebtable ${1} ${2} ${3} ${4}
- fi
- fi
- return $?
- }
- assign_ip () {
- IFACE="${1}"
- IFACE_INET_ADDR="${2}"
- IFACE_NWRK_ADDR="${IFACE_INET_ADDR%.*}.0"
- IFACE_MASK_ADDR="255.255.255.0"
-
- DHCP_START="${IFACE_INET_ADDR%.*}.${3}"
- DHCP_END="${IFACE_INET_ADDR%.*}.${4}"
- LAN=$(ifconfig "br0" | sed -ne's/.*inet addr:\([^ ]*\).*$/\1/p')
- echo "
- IFACE: ${IFACE}
- INET: ${IFACE_INET_ADDR}
- NWRK: ${IFACE_NWRK_ADDR}
- MASK: ${IFACE_MASK_ADDR}
- DCHP
- START: ${DHCP_START}
- END: ${DHCP_END}
- LAN: ${LAN}"
- ifconfig "${IFACE}" > /dev/null 2>&1 || continue
- cmd_run "ifconfig" "ifconfig ${IFACE} ${IFACE_INET_ADDR} netmask ${IFACE_MASK_ADDR}"
- ebtable "${IFACE}" "ipv4" "DROP" "i"
- ebtable "${IFACE}" "ipv6" "DROP" "i"
- ebtable "${IFACE}" "arp" "DROP" "i"
-
- iptable "${IFACE}" "FORWARD" "ACCEPT"
- iptable "${IFACE}" "INPUT" "ACCEPT"
- iptable "${IFACE}" "FORWARD" "DROP" "${LAN}/24"
- iptable "${IFACE}" "INPUT" "DROP" "${LAN}/24"
- ebtable "-D FORWARD -i ${IFACE} -j DROP"
- ebtable "-D FORWARD -o ${IFACE} -j DROP"
- if [ `cat ${DNSMASQ_CONF} | grep -c ${IFACE}` -eq 0 ]; then
- logger "dnsmasq-dhcp: Configure ${IFACE} to have special DHCP"
- pc_append "interface=${IFACE}" ${DNSMASQ_CONF}
- pc_append "dhcp-range=${IFACE},${DHCP_START},${DHCP_END},${IFACE_MASK_ADDR},24h" ${DNSMASQ_CONF}
- pc_append "dhcp-option=${IFACE},3,${IFACE_INET_ADDR}" ${DNSMASQ_CONF}
- #pc_append "dhcp-option=${IFACE},6,8.8.8.8,8.8.4.4" ${DNSMASQ_CONF}
- pc_append "dhcp-option=${IFACE},252,\"\n\"" ${DNSMASQ_CONF}
- fi
- }
- killall dnsmasq
- if [ `cat ${DNSMASQ_CONF} | grep -c "log-dhcp"` -eq 0 ]; then
- pc_append "log-dhcp" ${DNSMASQ_CONF}
- fi
- assign_ip "wl0.1" "192.168.2.1" "128" "191" #/26
- assign_ip "wl0.2" "192.168.3.1" "128" "191" #/26
- cat ${DNSMASQ_CONF}
- dnsmasq --log-async
|