add old script back and allow to use extended script
This commit is contained in:
parent
6a09695a5d
commit
74272172ad
12
README.md
12
README.md
|
@ -85,6 +85,8 @@ You'll need to request a MAC address for the IP address. This MAC address will b
|
||||||
|
|
||||||
## 4. Config Network
|
## 4. Config Network
|
||||||
|
|
||||||
|
**Note:** they are a newer version of the network configuration script in the folder `script` called `network_config_updated.sh` which has Multiple IP Address Support, User Confirmation Process, Dynamic Bridge Interface Creation and Improved User Interaction. You can see the whole change under the [pull request](https://github.com/la-cc/hetzner-proxmox-single/pull/3)
|
||||||
|
|
||||||
Clone this git repository and execute the script:
|
Clone this git repository and execute the script:
|
||||||
|
|
||||||
./script/nework_config.sh
|
./script/nework_config.sh
|
||||||
|
@ -127,3 +129,13 @@ You will see the ADD-IP-Address. So SNAT is working and you can extend to config
|
||||||
Default credentials are set to **username:** **_admin_** with **password:** **_pfsense_**.
|
Default credentials are set to **username:** **_admin_** with **password:** **_pfsense_**.
|
||||||
|
|
||||||
## **Finished, enjoy your Proxmox Environment!**
|
## **Finished, enjoy your Proxmox Environment!**
|
||||||
|
|
||||||
|
# Contribution
|
||||||
|
|
||||||
|
If you're eager to contribute to this script, feel free to fork the repository and submit a pull request. Your input is valued and always welcome!
|
||||||
|
|
||||||
|
Current Contributors:
|
||||||
|
|
||||||
|
@L-U-C-K-Y
|
||||||
|
@V-JobDone
|
||||||
|
@la-cc
|
||||||
|
|
|
@ -0,0 +1,158 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Function to prompt for input with a default value
|
||||||
|
prompt_input() {
|
||||||
|
local prompt=$1
|
||||||
|
local default=$2
|
||||||
|
read -p "$prompt [$default]: " input
|
||||||
|
echo "${input:-$default}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to create bridge interface text for additional IP and internal bridges
|
||||||
|
create_bridge_text() {
|
||||||
|
local ip=$1
|
||||||
|
local bridge_id=$2
|
||||||
|
local mac_address=$3
|
||||||
|
local external_bridge_id=$bridge_id
|
||||||
|
local internal_bridge_id=$((bridge_id * 100))
|
||||||
|
|
||||||
|
# WAN bridge configuration with MAC address and public IP
|
||||||
|
local bridge_config="
|
||||||
|
auto vmbr${external_bridge_id}
|
||||||
|
iface vmbr${external_bridge_id} inet static
|
||||||
|
address ${ip}
|
||||||
|
netmask ${NETMASK}
|
||||||
|
bridge_ports none
|
||||||
|
bridge_stp off
|
||||||
|
bridge_fd 0
|
||||||
|
hwaddress ether ${mac_address}
|
||||||
|
#WAN ${external_bridge_id}
|
||||||
|
"
|
||||||
|
|
||||||
|
# LAN bridge configuration without an IP, as it's for internal network only
|
||||||
|
bridge_config+="
|
||||||
|
auto vmbr${internal_bridge_id}
|
||||||
|
iface vmbr${internal_bridge_id} inet manual
|
||||||
|
bridge_ports none
|
||||||
|
bridge_stp off
|
||||||
|
bridge_fd 0
|
||||||
|
#LAN ${internal_bridge_id}
|
||||||
|
"
|
||||||
|
|
||||||
|
echo "$bridge_config"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Collect inputs
|
||||||
|
MAINSERVERIP=$(prompt_input "MAIN_SERVER_IP" "192.168.0.1")
|
||||||
|
GATEWAYADDRESS=$(prompt_input "MAIN_SERVER_GATEWAY_ADDRESS" "192.168.0.254")
|
||||||
|
NETMASK=$(prompt_input "NETMASK" "255.255.255.0")
|
||||||
|
BROADCASTIP=$(prompt_input "BROADCASTIP" "192.168.0.255")
|
||||||
|
ADD_IP_ADDRESSES=$(prompt_input "ADDITIONAL_IP_ADDRESSES (comma-separated)" "")
|
||||||
|
MAC_ADDRESSES=$(prompt_input "MAC_ADDRESSES for additional IPs (comma-separated)" "")
|
||||||
|
NETWORK_INTERFACE=$(prompt_input "NETWORK_INTERFACE" "eth0")
|
||||||
|
|
||||||
|
# Display inputs for confirmation
|
||||||
|
echo "---------------------------------------------------------------------"
|
||||||
|
echo "You have entered the following configuration:"
|
||||||
|
echo "MAIN_SERVER_IP: $MAINSERVERIP"
|
||||||
|
echo "MAIN_SERVER_GATEWAY_ADDRESS: $GATEWAYADDRESS"
|
||||||
|
echo "NETMASK: $NETMASK"
|
||||||
|
echo "BROADCASTIP: $BROADCASTIP"
|
||||||
|
echo "ADDITIONAL_IP_ADDRESSES: $ADD_IP_ADDRESSES"
|
||||||
|
echo "MAC_ADDRESSES: $MAC_ADDRESSES"
|
||||||
|
echo "NETWORK_INTERFACE: $NETWORK_INTERFACE"
|
||||||
|
|
||||||
|
echo "---------------------------------------------------------------------"
|
||||||
|
read -p "Is this correct? [yes/no]: " confirmation
|
||||||
|
|
||||||
|
if [[ $confirmation != [Yy]* ]]; then
|
||||||
|
echo "Exiting without changes."
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Split ADD_IP_ADDRESSES and MAC_ADDRESSES into arrays
|
||||||
|
IFS=',' read -ra ADDR <<<"$ADD_IP_ADDRESSES"
|
||||||
|
IFS=',' read -ra MACS <<<"$MAC_ADDRESSES"
|
||||||
|
|
||||||
|
# Generate dynamic routing rules
|
||||||
|
additional_routes=""
|
||||||
|
for add_ip in "${ADDR[@]}"; do
|
||||||
|
additional_routes+=" up ip route add $add_ip dev ${NETWORK_INTERFACE}
|
||||||
|
"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Initialize the interfaces file content
|
||||||
|
interfaces_content="
|
||||||
|
### Hetzner Online GmbH installimage
|
||||||
|
|
||||||
|
source /etc/network/interfaces.d/*
|
||||||
|
|
||||||
|
auto lo
|
||||||
|
iface lo inet loopback
|
||||||
|
iface lo inet6 loopback
|
||||||
|
|
||||||
|
# Main network interface configuration
|
||||||
|
iface ${NETWORK_INTERFACE} inet manual
|
||||||
|
up ip route add -net ${GATEWAYADDRESS} netmask ${NETMASK} gw ${GATEWAYADDRESS} vmbr0
|
||||||
|
up sysctl -w net.ipv4.ip_forward=1
|
||||||
|
up sysctl -w net.ipv4.conf.${NETWORK_INTERFACE}.send_redirects=0
|
||||||
|
up sysctl -w net.ipv6.conf.all.forwarding=1
|
||||||
|
$additional_routes
|
||||||
|
up ip route add 192.168.0.0/16 via ${MAINSERVERIP} dev vmbr0
|
||||||
|
up ip route add 172.16.0.0/12 via ${MAINSERVERIP} dev vmbr0
|
||||||
|
up ip route add 10.0.0.0/8 via ${MAINSERVERIP} dev vmbr0
|
||||||
|
|
||||||
|
auto vmbr0
|
||||||
|
iface vmbr0 inet static
|
||||||
|
address ${MAINSERVERIP}
|
||||||
|
netmask 32
|
||||||
|
gateway ${GATEWAYADDRESS}
|
||||||
|
broadcast ${BROADCASTIP}
|
||||||
|
bridge-ports ${NETWORK_INTERFACE}
|
||||||
|
bridge-stp off
|
||||||
|
bridge-fd 0
|
||||||
|
pointopoint ${GATEWAYADDRESS}
|
||||||
|
#Main IP configuration
|
||||||
|
"
|
||||||
|
|
||||||
|
# Append bridge interfaces for each additional IP and MAC address and create internal bridges
|
||||||
|
for i in "${!ADDR[@]}"; do
|
||||||
|
# Increment bridge_id for each additional IP
|
||||||
|
bridge_id=$((i + 1))
|
||||||
|
interfaces_content+=$(create_bridge_text "${ADDR[i]}" "$bridge_id" "${MACS[i]}")
|
||||||
|
done
|
||||||
|
|
||||||
|
# Save the new configuration to a temporary file
|
||||||
|
echo "$interfaces_content" > /tmp/new_interfaces
|
||||||
|
|
||||||
|
# Display the current network configuration
|
||||||
|
echo "---------------------------------------------------------------------"
|
||||||
|
echo "Current network configuration (/etc/network/interfaces):"
|
||||||
|
cat /etc/network/interfaces
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Display the new network configuration
|
||||||
|
echo "---------------------------------------------------------------------"
|
||||||
|
echo "New network configuration:"
|
||||||
|
cat /tmp/new_interfaces
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Show the differences
|
||||||
|
echo "---------------------------------------------------------------------"
|
||||||
|
echo "Configuration differences:"
|
||||||
|
diff /etc/network/interfaces /tmp/new_interfaces
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Confirm before applying changes
|
||||||
|
echo "---------------------------------------------------------------------"
|
||||||
|
read -p "Apply this network configuration? [yes/no]: " apply_conf
|
||||||
|
|
||||||
|
if [[ $apply_conf == [Yy]* ]]; then
|
||||||
|
timestamp=$(date +%Y%m%d-%H%M%S)
|
||||||
|
mv /etc/network/interfaces /etc/network/interfaces.bak-$timestamp
|
||||||
|
mv /tmp/new_interfaces /etc/network/interfaces
|
||||||
|
echo "The network can be restarted with the following command: '/etc/init.d/networking' restart or 'systemctl restart networking'"
|
||||||
|
else
|
||||||
|
echo "Exiting without applying changes."
|
||||||
|
rm /tmp/new_interfaces
|
||||||
|
fi
|
Loading…
Reference in New Issue