#!/usr/bin/env bash # Ceci est un script bash ayant pour but de crĂ©er un partage de connection # # ssid=🩄 passphrase=chocolat ip=10.5.6.11 range=24 network=10.5.6.0/24 dhcp_range=$(echo 10.5.6.{12\,,254}),12h function guess_wifi { for i in `ls /sys/class/net/`; do if [ -d "/sys/class/net/$i/wireless" ] ; then _interface="$i" fi done echo "${_interface}" } function guess_internet { echo $(ip route show | grep 'default' | \ sed 's/.*dev/dev/' | sed 's/scope//' | \ sed 's/src \([[:digit:]]\{1,3\}\.\)\{3\}[[:digit:]]\{1,3\}//g' | \ sed 's/link//' | tr -s ' ' | cut -d' ' -f 2) } #net.ipv4.ip_forward=1 #sudo snnnnet.ipv4.ip_forward=1 #sudo systnnet.ipv4.ip_forward=1 #sudo sysctl -w net.ipv4.ip_forward=1 echo 'Voici la configuration des interfaces :' sudo ip a echo echo echo 'Veuillez vĂ©rifier la table de routage :' sudo ip r echo echo 'Activation de IP fowarding' sudo sysctl -w net.ipv4.ip_forward=1 if [ -z "${1}" ] ; then echo "DĂ©tection automatique de l'interface Wifi" interface=$(guess_wifi) else interface="${1}" fi echo "Interface Wifi : ${interface}" if [ -z "${2}" ] ; then echo "DĂ©tection automatique de l'interface connectĂ©e Ă  internet" interface_internet="$(guess_internet)" else interface="${2}" fi echo "Interface internet : ${interface_internet}" # sudo iw dev wlp3s0 interface add wlan1 type station sudo pkill dnsmasq echo "Configuration de l'IP 10.5.6.11" sudo ip a r "${ip}/${range}" dev "$interface" echo "Configuration de DNSQMASQ" cat <<< $( echo " listen-address=${ip} interface=${interface} dhcp-range=${dhcp_range}" ) > /tmp/dnsmasq_hotspot.conf echo 'Lancement de DNSMASQ (DHCP sur le rĂ©seau 10.5.6.0/24)' if sudo dnsmasq --conf-file=/tmp/dnsmasq_hotspot.conf ; then echo 'Ok dnsmasq prĂȘt' else echo 'Erreur : Impossible de dĂ©marrer dnsmasq' echo 'Abandon' exit 1 fi echo "Activation de l'interface ${interface}" sudo ip link set "${interface}" up echo 'Ajout du rĂ©seau dans la table de routage' sudo ip r add 10.5.6.0/24 via 10.5.6.11 dev "${interface}" echo "Routage des connections internet" sudo sysctl net.ipv4.ip_forward=1 sudo iptables -t nat -A POSTROUTING -o "${interface_internet}" -j MASQUERADE sudo iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i "${interface}" -o "${interface_internet}" -j ACCEPT echo "Configuration de hostapd" cat <<< $( echo " interface=${interface} ssid=${ssid} wpa=1 wpa_passphrase=${passphrase} channel=1 hw_mode=g logger_syslog=-1 logger_syslog_level=2 logger_stdout=-1 logger_stdout_level=2 ctrl_interface=/var/run/hostapd ctrl_interface_group=0 beacon_int=100 dtim_period=2 max_num_sta=255 rts_threshold=2347 fragm_threshold=2346 macaddr_acl=0 auth_algs=3 ignore_broadcast_ssid=0 wmm_enabled=1 wmm_ac_bk_cwmin=4 wmm_ac_bk_cwmax=10 wmm_ac_bk_aifs=7 wmm_ac_bk_txop_limit=0 wmm_ac_bk_acm=0 wmm_ac_be_aifs=3 wmm_ac_be_cwmin=4 wmm_ac_be_cwmax=10 wmm_ac_be_txop_limit=0 wmm_ac_be_acm=0 wmm_ac_vi_aifs=2 wmm_ac_vi_cwmin=3 wmm_ac_vi_cwmax=4 wmm_ac_vi_txop_limit=94 wmm_ac_vi_acm=0 wmm_ac_vo_aifs=2 wmm_ac_vo_cwmin=2 wmm_ac_vo_cwmax=3 wmm_ac_vo_txop_limit=47 wmm_ac_vo_acm=0 vht_oper_chwidth=3 eap_message=hello eapol_key_index_workaround=0 eap_server=0" ) > /tmp/hostapd.conf echo "Lancement du hostpot Wifi" if sudo hostapd /tmp/hostapd.conf ; then echo 'Yeah, i wish you enjoyed it' else echo 'Error: there is a problem with hostapd' fi echo 'Clean des iptables' sudo iptables --flush sudo iptables -t nat --flush echo 'Clean config' rm /tmp/dnsmasq_hotspot.conf /tmp/hostapd.conf echo 'Bye 💋' echo 'Have a nice day <3'