get_virt() { local vm s v UNAME UNAME=$(uname) case "$UNAME" in Linux) if exists systemd-detect-virt; then vm=$(systemd-detect-virt --vm) elif [ -f /sys/class/dmi/id/product_name ]; then read s </sys/class/dmi/id/product_name for v in KVM QEMU VMware VMW VirtualBox Xen Bochs Parallels BHYVE Hyper-V; do case "$s" in "$v"*) vm=$v break ;; esac done fi ;; esac echo "$vm" | awk '{print tolower($0)}' } check_virt() { echo \* checking virtualization local vm="$(get_virt)" if [ -n "$vm" ]; then if [ "$vm" = "none" ]; then echo running on bare metal else echo "!!! WARNING. $vm virtualization detected !!!" echo '!!! WARNING. vmware and virtualbox are known to break most of the DPI bypass techniques when network is NATed using internal hypervisor NAT !!!' echo '!!! WARNING. if this is your case make sure you are bridged not NATed !!!' fi else echo cannot detect fi }