Add unraid-config.sh

This commit is contained in:
HHF Technology 2024-12-07 15:32:13 +05:30
commit 236e3654a3

116
unraid-config.sh Normal file
View file

@ -0,0 +1,116 @@
#!/bin/bash
# Unraid Network Configuration Script
# This script configures the game server routing through Tailscale
# Color codes for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
# Configuration variables
TAILSCALE_INTERFACE="tailscale0"
WAN_INTERFACE="br0" # Typical Unraid bridge interface
VPS_IP="YOUR_VPS_IP" # Replace with your Dallas VPS IP
GAME_SUBNET="172.16.0.0/24" # Replace with your game servers' subnet
# Function to check if script is run as root
check_root() {
if [ "$EUID" -ne 0 ]; then
echo -e "${RED}Error: This script must be run as root${NC}"
exit 1
fi
}
# Function to check if Tailscale is installed
check_tailscale() {
if ! command -v tailscale &> /dev/null; then
echo -e "${RED}Error: Tailscale is not installed${NC}"
exit 1
fi
}
# Function to configure iptables
configure_iptables() {
echo -e "${YELLOW}Configuring iptables rules...${NC}"
# Clear existing rules
iptables -F
iptables -t nat -F
# Set default policies
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
# Allow established connections
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# UDP Ports
for port in 8766 8767 16261 19132; do
iptables -A INPUT -p udp --dport $port -j ACCEPT
iptables -A FORWARD -p udp --dport $port -j ACCEPT
done
# TCP Port Ranges
iptables -A INPUT -p tcp --match multiport --dports 16262,27015:27050,25500:25600 -j ACCEPT
iptables -A FORWARD -p tcp --match multiport --dports 16262,27015:27050,25500:25600 -j ACCEPT
# Route game traffic through Tailscale
iptables -t nat -A POSTROUTING -o $TAILSCALE_INTERFACE -j MASQUERADE
echo -e "${GREEN}iptables rules configured successfully${NC}"
}
# Function to configure routing
configure_routing() {
echo -e "${YELLOW}Configuring routing...${NC}"
# Enable IP forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
# Add route for game servers through Tailscale
ip route add $VPS_IP via $(ip route | grep $TAILSCALE_INTERFACE | awk '{print $1}')
echo -e "${GREEN}Routing configured successfully${NC}"
}
# Function to make settings persistent
make_persistent() {
echo -e "${YELLOW}Making settings persistent...${NC}"
# Save iptables rules
if [ -d "/boot/config/iptables" ]; then
iptables-save > /boot/config/iptables/rules.v4
echo -e "${GREEN}iptables rules saved to /boot/config/iptables/rules.v4${NC}"
else
mkdir -p /boot/config/iptables
iptables-save > /boot/config/iptables/rules.v4
echo -e "${GREEN}Created iptables directory and saved rules${NC}"
fi
# Ensure IP forwarding is enabled on boot
if ! grep -q "net.ipv4.ip_forward=1" /etc/sysctl.conf; then
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
fi
}
# Main execution
main() {
echo -e "${YELLOW}Starting Unraid network configuration...${NC}"
check_root
check_tailscale
configure_iptables
configure_routing
make_persistent
echo -e "${GREEN}Unraid network configuration completed successfully${NC}"
echo -e "${YELLOW}Please test your game server connectivity${NC}"
}
# Run main function
main
exit 0