better gw script
This commit is contained in:
		
							parent
							
								
									3d28041460
								
							
						
					
					
						commit
						56f9678a2c
					
				
							
								
								
									
										55
									
								
								gw.sh
									
									
									
									
									
								
							
							
						
						
									
										55
									
								
								gw.sh
									
									
									
									
									
								
							| @ -8,7 +8,7 @@ sumary="$0 [options]" | |||||||
| usage[l]="Locale iface" | usage[l]="Locale iface" | ||||||
| varia[l]=local_iface | varia[l]=local_iface | ||||||
| 
 | 
 | ||||||
| usage[w]="wan iface (must be already configured)" | usage[w]="wan iface (must be already configured. If you want the local net to have internet access, you need to put your gw here)" | ||||||
| varia[w]=wan_iface | varia[w]=wan_iface | ||||||
| wan_iface= | wan_iface= | ||||||
| 
 | 
 | ||||||
| @ -48,32 +48,46 @@ fi | |||||||
| 
 | 
 | ||||||
| root_or_die | root_or_die | ||||||
| 
 | 
 | ||||||
| run nmcli device set "$local_iface" managed no | run    nmcli device set $local_iface managed no | ||||||
| clean "nmcli device set "$local_iface" managed yes" | clean "nmcli device set $local_iface managed yes" | ||||||
| 
 | 
 | ||||||
| run ip a add "$net.$host_ip/$netmask" dev "$local_iface" | run    ip a add $net.$host_ip/$netmask dev $local_iface | ||||||
| clean "ip a del "$net.$host_ip/$netmask" dev $local_iface" | clean "ip a del $net.$host_ip/$netmask dev $local_iface" | ||||||
| 
 | 
 | ||||||
| if [ -z "$wan_iface" ] ; then | if [ -n "$wan_iface" ] ; then | ||||||
|  | 	old_value="$(sysctl net.ipv4.ip_forward)" | ||||||
| 	run sysctl net.ipv4.ip_forward=1 | 	run sysctl net.ipv4.ip_forward=1 | ||||||
| 	clean "sysctl net.ipv4.ip_forward=0" | 	clean "sysctl net.ipv4.ip_forward=$old_value" | ||||||
| 
 | 
 | ||||||
| 	run iptables -A OUTPUT -d $net.0/$netmask -j ACCEPT | 	# Allow paquets to local network | ||||||
| 	run iptables -A INPUT  -s $net.0/$netmask -j ACCEPT | 	run    iptables -A OUTPUT -d $net.0/$netmask -o $local_iface -j ACCEPT | ||||||
| 	run iptables -A INPUT  -s 255.255.255.255 -j ACCEPT | 	clean "iptables -D OUTPUT -d $net.0/$netmask -o $local_iface -j ACCEPT" | ||||||
| 	run iptables -A INPUT  -i "$local_iface" -j ACCEPT |  | ||||||
| 
 | 
 | ||||||
| 	run iptables -t nat -A POSTROUTING -o "$wan_iface" -j MASQUERADE | 	# Allow input from local network | ||||||
| 	run iptables -A FORWARD -i "$wan_iface" -o "$local_iface" -m state --state RELATED,ESTABLISHED -j ACCEPT | 	run    iptables -A INPUT -s $net.0/$netmask -i $local_iface -j ACCEPT | ||||||
| 	run iptables -A FORWARD -i "$local_iface" -o "$wan_iface"  -j ACCEPT | 	clean "iptables -D INPUT -s $net.0/$netmask -i $local_iface -j ACCEPT" | ||||||
|  | 	 | ||||||
|  | 	# Nat paquets from local network | ||||||
|  | 	run    iptables -t nat -A POSTROUTING -s $net.0/$netmask -j MASQUERADE | ||||||
|  | 	clean "iptables -t nat -D POSTROUTING -s $net.0/$netmask -j MASQUERADE" | ||||||
|  | 
 | ||||||
|  | 	# Allow related paquets to come back in local network | ||||||
|  | 	run    iptables -A FORWARD -o $local_iface -m state --state RELATED,ESTABLISHED -j ACCEPT | ||||||
|  | 	clean "iptables -D FORWARD -o $local_iface -m state --state RELATED,ESTABLISHED -j ACCEPT" | ||||||
|  | 
 | ||||||
|  | 	# Forward paquets from local net | ||||||
|  | 	run    iptables -A FORWARD -i $local_iface -j ACCEPT | ||||||
|  | 	clean "iptables -D FORWARD -i $local_iface -j ACCEPT" | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| if $enable_dhcp ; then | if $enable_dhcp ; then | ||||||
| 	# For dhcp offers | 	# For dhcp offers | ||||||
| 	run iptables -A OUTPUT -d 255.255.255.255/32 -j ACCEPT | 	run    iptables -A OUTPUT -d 255.255.255.255/32 -j ACCEPT | ||||||
|  | 	clean "iptables -D OUTPUT -d 255.255.255.255/32 -j ACCEPT" | ||||||
|  | 	run    iptables -A INPUT  -s 255.255.255.255 -j ACCEPT | ||||||
|  | 	clean "iptables -D INPUT  -s 255.255.255.255 -j ACCEPT" | ||||||
| 	 | 	 | ||||||
| 	run dnsmasq "--dhcp-range=$net.100,$net.199,1m" --server=9.9.9.9 -q --listen-address "$net.$host_ip" --interface "$local_iface" -p0 -d & | 	start dnsmasq "--dhcp-range=$net.100,$net.199,1m" --server=9.9.9.9 -q --listen-address "$net.$host_ip" --interface "$local_iface" -p0 -d | ||||||
| 	clean "kill %1" |  | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -90,13 +104,12 @@ if $enable_hostapd ; then | |||||||
| 		wpa_passphrase=$psk | 		wpa_passphrase=$psk | ||||||
| 		wpa_key_mgmt=WPA-PSK WPA-EAP | 		wpa_key_mgmt=WPA-PSK WPA-EAP | ||||||
| 	EOF | 	EOF | ||||||
| 	hostapd -d "$hostapd_config" & | 	start hostapd -d "$hostapd_config" | ||||||
| 	clean "kill %2" |  | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| echo "PRESS CTRL+C TO QUIT" | echo "PRESS CTRL+C TO QUIT" | ||||||
| while true ; do | while : ; do | ||||||
| 	sleep 100000000 | 	sleep infinity | ||||||
| done | done | ||||||
| 
 | 
 | ||||||
| clean | clean | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user