|
|
|
|
@@ -25,6 +25,7 @@ METHOD=""
|
|
|
|
|
NSAPP="opnsense-vm"
|
|
|
|
|
var_os="opnsense"
|
|
|
|
|
var_version="26.7"
|
|
|
|
|
FREEBSD_MAJOR="15"
|
|
|
|
|
#
|
|
|
|
|
GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
|
|
|
|
|
GEN_MAC_LAN=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
|
|
|
|
|
@@ -490,7 +491,7 @@ function advanced_settings() {
|
|
|
|
|
fi
|
|
|
|
|
echo -e "${DGN}Using LAN GATEWAY ADDRESS: ${BGN}$LAN_GW${CL}"
|
|
|
|
|
fi
|
|
|
|
|
if NETMASK=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a LAN netmmask (24 for example)" 8 58 $NETMASK --title "LAN NETMASK" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
|
|
|
|
|
if NETMASK=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a LAN netmask (24 for example)" 8 58 $NETMASK --title "LAN NETMASK" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
|
|
|
|
|
if [ -z $NETMASK ]; then
|
|
|
|
|
echo -e "${DGN}Netmask needs to be set if ip is not dhcp${CL}"
|
|
|
|
|
fi
|
|
|
|
|
@@ -558,7 +559,7 @@ function advanced_settings() {
|
|
|
|
|
else
|
|
|
|
|
exit-script
|
|
|
|
|
fi
|
|
|
|
|
if WAN_NETMASK=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a WAN netmmask (24 for example)" 8 58 $WAN_NETMASK --title "WAN NETMASK" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
|
|
|
|
|
if WAN_NETMASK=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a WAN netmask (24 for example)" 8 58 $WAN_NETMASK --title "WAN NETMASK" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
|
|
|
|
|
if [ -z $WAN_NETMASK ]; then
|
|
|
|
|
echo -e "${DGN}WAN Netmask needs to be set if ip is not dhcp${CL}"
|
|
|
|
|
fi
|
|
|
|
|
@@ -574,7 +575,7 @@ function advanced_settings() {
|
|
|
|
|
else
|
|
|
|
|
exit-script
|
|
|
|
|
fi
|
|
|
|
|
if MAC1=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a WAN MAC Address" 8 58 $GEN_MAC --title "WAN MAC ADDRESS" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
|
|
|
|
|
if MAC1=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a LAN MAC Address" 8 58 $GEN_MAC --title "LAN MAC ADDRESS" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
|
|
|
|
|
if [ -z $MAC1 ]; then
|
|
|
|
|
MAC="$GEN_MAC"
|
|
|
|
|
else
|
|
|
|
|
@@ -585,7 +586,7 @@ function advanced_settings() {
|
|
|
|
|
exit-script
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if MAC2=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a LAN MAC Address" 8 58 $GEN_MAC_LAN --title "LAN MAC ADDRESS" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
|
|
|
|
|
if MAC2=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a WAN MAC Address" 8 58 $GEN_MAC_LAN --title "WAN MAC ADDRESS" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
|
|
|
|
|
if [ -z $MAC2 ]; then
|
|
|
|
|
WAN_MAC="$GEN_MAC_LAN"
|
|
|
|
|
else
|
|
|
|
|
@@ -652,23 +653,26 @@ fi
|
|
|
|
|
msg_ok "Using ${CL}${BL}$STORAGE${CL} ${GN}for Storage Location."
|
|
|
|
|
msg_ok "Virtual Machine ID is ${CL}${BL}$VMID${CL}."
|
|
|
|
|
msg_info "Retrieving the URL for the OPNsense Qcow2 Disk Image"
|
|
|
|
|
# Use latest stable FreeBSD amd64 qcow2 VM image (generic, not UFS/ZFS)
|
|
|
|
|
# Use latest stable FreeBSD amd64 qcow2 VM image matching FREEBSD_MAJOR
|
|
|
|
|
RELEASE_LIST="$(curl -s https://download.freebsd.org/releases/VM-IMAGES/ |
|
|
|
|
|
grep -Eo '[0-9]+\.[0-9]+-RELEASE' |
|
|
|
|
|
grep -Eo "${FREEBSD_MAJOR}\.[0-9]+-RELEASE" |
|
|
|
|
|
sort -Vr |
|
|
|
|
|
uniq)"
|
|
|
|
|
URL=""
|
|
|
|
|
FREEBSD_VER=""
|
|
|
|
|
for ver in $RELEASE_LIST; do
|
|
|
|
|
candidate="https://download.freebsd.org/releases/VM-IMAGES/${ver}/amd64/Latest/FreeBSD-${ver}-amd64.qcow2.xz"
|
|
|
|
|
if curl -fsI "$candidate" >/dev/null 2>&1; then
|
|
|
|
|
FREEBSD_VER="$ver"
|
|
|
|
|
URL="$candidate"
|
|
|
|
|
break
|
|
|
|
|
fi
|
|
|
|
|
# FreeBSD 15+ publishes separate -ufs/-zfs images instead of a generic one
|
|
|
|
|
for variant in "" "-ufs" "-zfs"; do
|
|
|
|
|
candidate="https://download.freebsd.org/releases/VM-IMAGES/${ver}/amd64/Latest/FreeBSD-${ver}-amd64${variant}.qcow2.xz"
|
|
|
|
|
if curl -fsI "$candidate" >/dev/null 2>&1; then
|
|
|
|
|
FREEBSD_VER="$ver"
|
|
|
|
|
URL="$candidate"
|
|
|
|
|
break 2
|
|
|
|
|
fi
|
|
|
|
|
done
|
|
|
|
|
done
|
|
|
|
|
if [ -z "$URL" ]; then
|
|
|
|
|
msg_error "Could not find generic FreeBSD amd64 qcow2 image (non-UFS/ZFS)."
|
|
|
|
|
msg_error "Could not find a FreeBSD ${FREEBSD_MAJOR}.x amd64 qcow2 image."
|
|
|
|
|
exit 115
|
|
|
|
|
fi
|
|
|
|
|
msg_ok "Download URL: ${CL}${BL}${URL}${CL}"
|
|
|
|
|
@@ -814,7 +818,13 @@ if [ -n "$WAN_BRG" ]; then
|
|
|
|
|
msg_ok "WAN interface added"
|
|
|
|
|
sleep 5 # Brief pause after adding network interface
|
|
|
|
|
fi
|
|
|
|
|
send_line_to_vm "sh ./opnsense-bootstrap.sh.in -y -f -r 26.7"
|
|
|
|
|
# FreeBSD 15+ VM images ship the base system as pkgbase packages; the bootstrap's
|
|
|
|
|
# "delete all packages" step would remove the running base system (/bin/rm etc.)
|
|
|
|
|
# and brick the VM. Deregister them from the pkg db first - the files stay in
|
|
|
|
|
# place and OPNsense replaces base and kernel with its own sets afterwards.
|
|
|
|
|
send_line_to_vm "echo \"PRAGMA foreign_keys=ON; DELETE FROM packages WHERE name LIKE 'FreeBSD-%';\" | pkg shell"
|
|
|
|
|
sleep 5
|
|
|
|
|
send_line_to_vm "sh ./opnsense-bootstrap.sh.in -y -f -r ${var_version}"
|
|
|
|
|
msg_ok "OPNsense VM is being installed, do not close the terminal, or the installation will fail."
|
|
|
|
|
#We need to wait for the OPNsense build proccess to finish, this takes a few minutes
|
|
|
|
|
sleep 1000
|
|
|
|
|
@@ -855,8 +865,8 @@ if [ -n "$WAN_BRG" ] && [ "$WAN_IP_ADDR" != "" ]; then
|
|
|
|
|
send_line_to_vm "2"
|
|
|
|
|
send_line_to_vm "n"
|
|
|
|
|
send_line_to_vm "${WAN_IP_ADDR}"
|
|
|
|
|
send_line_to_vm "${NETMASK}"
|
|
|
|
|
send_line_to_vm "${LAN_GW}"
|
|
|
|
|
send_line_to_vm "${WAN_NETMASK}"
|
|
|
|
|
send_line_to_vm "${WAN_GW}"
|
|
|
|
|
send_line_to_vm "n"
|
|
|
|
|
send_line_to_vm " "
|
|
|
|
|
send_line_to_vm "n"
|
|
|
|
|
|