mirror of
				https://github.com/flynx/proxmox-utils.git
				synced 2025-10-31 12:10:07 +00:00 
			
		
		
		
	
		
			
	
	
		
			100 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
		
		
			
		
	
	
			100 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
|  | #!/usr/bin/env bash
 | ||
|  | # IP Forwarding | ||
|  | # add to wan interface in: /etc/network/interfaces: | ||
|  | #       post-up echo 1 > /proc/sys/net/ipv4/ip_forward | ||
|  | # or: | ||
|  | #       # sysctl -w net.ipv4.ip_forward=1 | ||
|  | # | ||
|  | 
 | ||
|  | 
 | ||
|  | # Enable traefik config parsing... | ||
|  | TRAEFIC=1 | ||
|  | 
 | ||
|  | 
 | ||
|  | # Enable iptables | ||
|  | #       # apk add iptables iptables-doc | ||
|  | #       # rc-update add iptables  | ||
|  | #       # rc-service iptables save | ||
|  | 
 | ||
|  | LAN=lan | ||
|  | WAN=wan | ||
|  | 
 | ||
|  | 
 | ||
|  | # keep connections while configuring... | ||
|  | iptables -P INPUT ACCEPT | ||
|  | iptables -P OUTPUT ACCEPT | ||
|  | iptables -P FORWARD ACCEPT | ||
|  | 
 | ||
|  | 
 | ||
|  | # Flush iptables rules | ||
|  | iptables -F | ||
|  | iptables -X | ||
|  | iptables -t nat -F | ||
|  | 
 | ||
|  | 
 | ||
|  | # Statefull connections | ||
|  | iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT | ||
|  | 
 | ||
|  | # Loop-back rules | ||
|  | iptables -A INPUT -i lo -j ACCEPT | ||
|  | iptables -A OUTPUT -o lo -j ACCEPT | ||
|  | 
 | ||
|  | # DNS | ||
|  | iptables -A INPUT -p udp --sport 53 -j ACCEPT | ||
|  | iptables -A INPUT -p udp --dport 53 -j ACCEPT | ||
|  | 
 | ||
|  | # ICMP | ||
|  | #iptables -A INPUT -i $WAN -p icmp -j ACCEPT | ||
|  | iptables -A INPUT -p icmp -j ACCEPT | ||
|  | 
 | ||
|  | 
 | ||
|  | # Traefik | ||
|  | if ! [ -z $TRAEFIC ] ; then | ||
|  | 	# NOTE: we only open ports here not caring about addresses... | ||
|  | 	IFS=$'\n' | ||
|  | 	RULES=($( | ||
|  | 		cat /etc/traefik/traefik.yaml \
 | ||
|  | 			| grep '^[^#]*address:' \
 | ||
|  | 			| grep -o "\'.*\'")) | ||
|  | 	for addr in "${RULES[@]}" ; do | ||
|  | 		addr=${addr:1:-1} | ||
|  | 		host=${addr/:*} | ||
|  | 		port=${addr/*:} | ||
|  | 
 | ||
|  | 		udp= | ||
|  | 		tcp= | ||
|  | 		if [[ $port == *udp* ]] ; then | ||
|  | 			udp=1 | ||
|  | 		fi | ||
|  | 		if [[ $port == *tcp* ]] ; then | ||
|  | 			tcp=1 | ||
|  | 		fi | ||
|  | 		if [ -z $tcp ] && [ -z $udp ] ; then | ||
|  | 			tcp=1 | ||
|  | 			udp=1 | ||
|  | 		fi | ||
|  | 		port=${port/\/*/} | ||
|  | 
 | ||
|  | 		if ! [ -z $udp ] ; then | ||
|  | 			iptables -A INPUT -p udp --dport $port -j ACCEPT  | ||
|  | 		fi | ||
|  | 		if ! [ -z $tcp ] ; then | ||
|  | 			iptables -A INPUT -p tcp --dport $port -j ACCEPT  | ||
|  | 		fi | ||
|  | 	done | ||
|  | fi | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | # NAT | ||
|  | iptables -t nat -A POSTROUTING -o $WAN -j MASQUERADE | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | # Default policies | ||
|  | iptables -P INPUT DROP | ||
|  | iptables -P OUTPUT ACCEPT | ||
|  | # XXX do we actually need this??? | ||
|  | #       ...uncommenting this breaks forwarding... | ||
|  | #iptables -P FORWARD DROP |