(Solved) Fdisk command not found Debian 10

(Solved) Fdisk command not found Debian 10

In Debian Buster si presenta un errore quando si danno alcuni comandi con privilegi root, uno di questi è il comando fdisk-l, che risponde con: command not found. Questo problema si risolve in 2 modi:

1) eseguire il comando con:

# /sbin/fdisk -l

2) con un link simbolico:

# ln -s /sbin/fdisk /bin/fdisk

(Solved) Fdisk command not found Debian 10

enjoy 😉

Script Bash per aggiornamento ip dinamico FreePBX Asterisk

Script Bash per aggiornamento ip dinamico FreePBX Asterisk

Script per aggiornamento ip dinamico FreePBX Asterisk

Dopo l’ultima guida su come Configurare un trunk Asterisk su linea Vodafone, il mio centralino personale funziona benissimo (quasi). Naturalmente c’è sempre qualcosa da sistemare qua e là, e la prima cosa è quella dell’ip statico. Nel mio caso, avendo un ip dinamico, nel momento in cui cambia l’indirizzo (non spesso), le chiamate in ingresso non vengono inoltrate. Pur avendo un external FQDN con dyndns, ed aggiungendolo in FreePBX, purtroppo NON funziona. Quindi la soluzione è riscrivere nella tabella mysql il nuovo ip in maniera automatica. A questo proposito ho rispolverato uno script bash, che può essere modificato in base alle proprie esigenze:

#!/bin/bash
# This program gets the current IP address (as assigned by the ISP) from
# THIS SCRIPT IS STILL CONSIDERED EXPERIMENTAL - USE AT YOUR OWN RISK!!!
user="user"
pass="pw"
check=$(dig +short myip.opendns.com @resolver1.opendns.com) || { echo "Problem getting current IP address"; exit 1; }
if [[ ! $check =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "Invalid IP address"; exit 1;
fi
readip=$(mysql asterisk -u $user -p$pass -se 'SELECT val FROM kvstore_Sipsettings where `key` = "externip"') || { echo "Can't read externip from MySQL asterisk database"; exit 1; }
if [ "$check" != "$readip" ]; then
# IP address has changed
# Send email
echo "This is an automated message - please do not reply. It appears that our external IP address has been changed to $check" | mail -s "External IP address may have been changed" you@someaddress.com
# Save new IP address to Asterisk SIP settings
mysql_response=$(mysql asterisk -u $user -p$pass -se 'update kvstore_Sipsettings set val='\"$check\"' where `key`="externip" ')
# Reload Asterisk
/var/lib/asterisk/bin/module_admin reload
fi

se ci sono problemi di formattazione, si può scaricare con:

$ wget https://www.dropbox.com/s/lrvyd83ezu62fb7/checkip.sh?dl=0 -O checkip.sh

le voci importanti da modificare sono: user, pw, ed aggiungere la propria mail eventualmente, per essere avvisati al cambiamento ip. Quindi:

# chmod u+rx checkip.sh
# mv checkip.sh /var/lib/asterisk/agi-bin/

per testarlo subito eseguire:

# ./checkip.sh

Adesso è utile programmare un cron job che controlli l’indirizzo ip ad intervalli regolari. Io ho optato per un check ogni ora, anche se il mio ip non cambia così spesso:

# crontab -e

ed incollare qualcosa del genere:

*/60 * * * * /var/lib/asterisk/agi-bin/checkip.sh

adesso il nostro centralino asterisk non avrà più problemi a causa dell’ip dinamico. Testato e funzionante con Asterisk 14 FreePBX 14

Script Bash per aggiornamento ip dinamico FreePBX Asterisk

enjoy 😉

 

Server DHCP su Debian 10 Buster

Server DHCP su Debian 10 Buster

Server DHCP su Debian 10 Buster. Installazione e configurazione di un server dhcp su Debian Buster:

# apt install isc-dhcp-server

settare la scheda di rete da utilzzare, nel mio caso eth0:

# nano /etc/default/isc-dhcp-server
# Defaults for isc-dhcp-server initscript
# sourced by /etc/init.d/isc-dhcp-server
# installed at /etc/default/isc-dhcp-server by the maintainer scripts

#
# This is a POSIX shell fragment
#

# Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf).
#DHCPD_CONF=/etc/dhcp/dhcpd.conf

# Path to dhcpd's PID file (default: /var/run/dhcpd.pid).
#DHCPD_PID=/var/run/dhcpd.pid

# Additional options to start dhcpd with.
#       Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead
#OPTIONS=""

# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
#       Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="eth0"

poi modificare il file dhcpd.conf inserendo i parametri della nostra rete, nel mio caso 192.168.100.0/24:

# nano /etc/dhcp/dhcpd.conf
# Sample configuration file for ISC dhcpd for Debian
#
#

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;
default-lease-time 600;
max-lease-time 7200;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.

#subnet 10.152.187.0 netmask 255.255.255.0 {
#}

# This is a very basic subnet declaration.
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.150 192.168.100.160;
option routers 192.168.100.1;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.100.254;
option domain-name-servers 192.168.100.1, 192.168.100.2;
option ntp-servers 192.168.100.1;
option netbios-name-servers 192.168.100.1;
option netbios-node-type 8;
}
#subnet 10.254.239.0 netmask 255.255.255.224 {
#  range 10.254.239.10 10.254.239.20;
#  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
#}

# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.

#subnet 10.254.239.32 netmask 255.255.255.224 {
#  range dynamic-bootp 10.254.239.40 10.254.239.60;
#  option broadcast-address 10.254.239.31;
#  option routers rtr-239-32-1.example.org;
#}

# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
#  range 10.5.5.26 10.5.5.30;
#  option domain-name-servers ns1.internal.example.org;
#  option domain-name "internal.example.org";
#  option routers 10.5.5.1;
#  option broadcast-address 10.5.5.31;
#  default-lease-time 600;
#  max-lease-time 7200;
#}

# Hosts which require special configuration options can be listed in
# host statements.   If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.

#host passacaglia {
#  hardware ethernet 0:0:c0:5d:bd:95;
#  filename "vmunix.passacaglia";
#  server-name "toccata.fugue.com";
#}

# Fixed IP addresses can also be specified for hosts.   These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP.   Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
#host fantasia {
#  hardware ethernet 08:00:07:26:c0:a5;
#  fixed-address fantasia.fugue.com;
#}

# You can declare a class of clients and then do address allocation
# based on that.   The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.

#class "foo" {
#  match if substring (option vendor-class-identifier, 0, 4) = "SUNW";
#}

#shared-network 224-29 {
#  subnet 10.17.224.0 netmask 255.255.255.0 {
#    option routers rtr-224.example.org;
#  }
#  subnet 10.0.29.0 netmask 255.255.255.0 {
#    option routers rtr-29.example.org;
#  }
#  pool {
#    allow members of "foo";
#    range 10.17.224.10 10.17.224.250;
#  }
#  pool {
#    deny members of "foo";
#    range 10.0.29.10 10.0.29.230;
#  }
#}

dopo le modifiche riavviare il servizio:

# systemctl restart isc-dhcp-server.service
Server DHCP su Debian Buster

enjoy 😉

Creare una usb bootable Windows 10 da Gui Debian

Creare una usb bootable Windows 10 da Gui DebianCreare una usb bootable Windows 10 da Gui Debian

Guida su come creare una usb bootable con Windows 10 direttamente da Debian 9/10 utilizzando WoeUSB come Gui. Precedentemente avevo già fatto una guida, per lo stesso scopo, ma utilizzando solamente il terminale. Questo metodo è molto più semplice e veloce:

sudo apt install devscripts equivs git python3-pip
git clone https://github.com/slacka/WoeUSB.git
cd WoeUSB/
./setup-development-environment.bash
mk-build-deps
sudo dpkg -i woeusb-build-deps_*
dpkg-buildpackage -uc -b
sudo dpkg -i ../woeusb*.deb

in caso di problemi con le dipendenze digitare:

sudo apt install -f

enjoy 😉

Connessione WPA2 WIFI da terminale con Wpa_Supplicant

 

Connessione WPA2 WIFI da terminale con Wpa_Supplicant

Connessione WPA2 WIFI da terminale con Wpa_Supplicant

Guida su come connettersi ad una rete wifi da terminale, nell'eventualità che la scheda usb wifi non venga mostrata nel menu di NetworkManager (device not managed) oppure se si tratta di collegarsi da un server. La mia scheda usb viene vista come wlx74da38c7a99b, ma per semplicità nella guida utilizzerò wlan1, e come sempre utilizzo Debian.

Pacchetti da installare:

sudo apt install rfkill wpasupplicant

verifica interfacce:

sudo rfkill list

nel mio caso viene mostrato:

0: hci0: Bluetooth
    Soft blocked: no
    Hard blocked: no
1: phy0: Wireless LAN
    Soft blocked: no
    Hard blocked: no

Disabilitare NetworkManager:

sudo systemctl stop NetworkManager
sudo systemctl disable NetworkManager

abilitare interfaccia:

sudo iwconfig
sudo ifconfig wlan1 up

ricerca ESSID:

sudo iwlist wlan1 scan | grep ESSID

connessione:

sudo wpa_passphrase NOME_RETE PASSWORD | sudo tee /etc/wpa_supplicant.conf

output:

network={
        ssid="NOME_RETE_WIFI"
        #psk="PASSWORD"
        psk=ddb754fd4fe6b22935cbae31e34873wreg586gscdf578hf986354jdg56bb
}

avvio:

sudo wpa_supplicant -B -c /etc/wpa_supplicant.conf -i wlan1
sudo dhclient wlan1
sudo ifconfig wlan1

output:

Connessione WPA2 WIFI da terminale con Wpa_Supplicant

Connessione WPA2 WIFI da terminale con Wpa_Supplicant

Abilitare connessione al boot:

sudo cp /lib/systemd/system/wpa_supplicant.service /etc/systemd/system/wpa_supplicant.service
sudo nano /etc/systemd/system/wpa_supplicant.service

aggiungere nome interfaccia, quindi modificare il file da così:

ExecStart=/sbin/wpa_supplicant -u -s -O /run/wpa_supplicant

a così:

ExecStart=/sbin/wpa_supplicant -u -s -c /etc/wpa_supplicant.conf -i wlan1
sudo systemctl enable wpa_supplicant.service

Abilitare dhclient al boot:

sudo nano /etc/systemd/system/dhclient.service

ed incollare dentro:

[Unit]
Description= DHCP Client
Before=network.target

[Service]
Type=simple
ExecStart=/sbin/dhclient wlan1

[Install]
WantedBy=multi-user.target
sudo systemctl enable dhclient.service

 

enjoy 😉

 

Telegram Messenger su Debian 9 Stretch

 

Telegram Messenger su Debian 9 Stretch

Telegram Messenger su Debian 9 Stretch

Per installare Telegram Messenger su Debian 9 Stretch ci sono diversi modi, ma quello più pulito è quello di scaricare direttamente dal sito il tarball e poi:

$ tar xvf tsetup*
$ cd Telegram/
$ ./Telegram

Telegram Messenger su Debian 9 Stretch

enjoy 😉

 

Creare una usb bootable Win10 da Debian 9

 

Creare una usb bootable Win10 da Debian 9

Creare una usb bootable Win10 da Debian 9

Per creare una usb bootable di Windows 10 non bisogna necessariamente ricorrere a programmi Windows, come Rufus o lo strumento che mette a disposizione Microsoft, ma bensì direttamente da ogni distibuzione Gnu-Linux. Gli strumenti che io utilizzo sono: dd, parted, p7zip-full. Ad ogni modo la chiavetta usb si può preparare in modo grafico utilizzando gparted.

# apt install parted p7zip-full

Identificare la chiavetta usb:

# fdisk -l

nel mio caso /dev/sdc di 16G

Formattazione:

# dd count=1 bs=512 if=/dev/zero of=/dev/sdc

 
Creazione tabella delle partizioni più 1 partizione in fat32:

# parted /dev/sdc
(parted) mklabel msdos                                          
(parted) mkpart primary fat32 1 16G                                 
(parted) set 1 boot on                                                   
(parted) q
# mkfs.fat -n win10 /dev/sdc1
# mount /dev/sdc1 /mnt
# cd /mnt/
# 7z x /percorso_win_iso_scaricata/windows10.iso
# cd ..
# umount /dev/sdc1

Creare una usb bootable Win10 da Debian 9

adesso la nostra usb con windows 10 è pronta per essere testata.

enjoy 😉

 

Dual Boot Debian FreeBSD Grub-Efi

 

Dual Boot Debian FreeBSD Grub-Efi

 

Dual Boot Debian FreeBSD Grub-Efi. Dopo l'installazione di FreeBSD a fianco di altri OS, se si utilizza Grub come bootloader, bisogna configurarlo correttamente per riuscire a fare il boot da FreeBSD. Utlizzando l'installer UEFI di FreeBSD, verrano create tre partizioni:

 

root@debianbox:/home/edmond# fdisk -l

Disk /dev/sda: 232.9 GiB, 250059350016 bytes, 488397168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 1473D773-9A10-427F-814C-A04A354C6E1B

Device         Start       End   Sectors  Size Type
/dev/sda1       2048    391167    389120  190M EFI System
/dev/sda2     391168  98047999  97656832 46.6G Linux filesystem
/dev/sda3   98048000 101953535   3905536  1.9G Linux swap
/dev/sda4  101953536 101986303     32768   16M Microsoft reserved
/dev/sda5  101986304 220737535 118751232 56.6G Microsoft basic data
/dev/sda6  220737536 269565951  48828416 23.3G Linux filesystem
/dev/sda7  269565952 269975551    409600  200M EFI System
/dev/sda8  269975552 301432831  31457280   15G FreeBSD UFS
/dev/sda9  301432832 305627135   4194304    2G FreeBSD swap

Disk /dev/sdb: 232.9 GiB, 250059350016 bytes, 488397168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: C1A781CD-2BE7-4BC5-8FC1-081B44BB5144

Device        Start      End  Sectors  Size Type
/dev/sdb1      2048   391167   389120  190M EFI System
/dev/sdb2    391168 31641599 31250432 14.9G FreeBSD UFS
/dev/sdb3  31641600 35547135  3905536  1.9G Linux swap

non avendo problemi di spazio non ho bisogno di spostare il contenuto della partizione /dev/sda7 EFI in /dev/sda1 EFI, quindi per poter avviare FreBSD bisogna creare un menuentry corretto per Grub:

# nano /etc/grub.d/40_custom

che deve essere come sotto:

menuentry "FreeBSD" {
insmod part_gpt
insmod fat
set root=(hd0,gpt7)
chainloader /efi/boot/BOOTx64.efi
}

nel mio caso la partizione EFI FreeBSD è su /dev/sda7, quindi é la che deve puntare il menuentry.

# update-grub && grub-mkconfig
# reboot

enjoy 😉

 

(Solved) /proc/devices: No entry for device-mapper found

 

(Solved) /proc/devices: No entry for device-mapper found 

(Solved) /proc/devices: No entry for device-mapper found. Dopo aver compilato il kernel 4.8 su Debian Stretch/Sid, l'ho installato anche su Debian Jessie, e mi sono ritrovato lanciando il comando update-grub, con l'errore "No entry for device-mapper found". Per risolvere il problema bisogna ricompilare il kernel ed abilitare il modulo device-mapper. Per verificare se è presente:

# lsmod | grep -i dm-mod
# modinfo dm-mod

riepilogando:

$ wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.8.12.tar.xz
$ tar xvf linux-4.8.12.tar.xz
$ cd linux-4.8.12/
$ cp /boot/config-$(uname -r) .config
$ make menuconfig

poi abilitare il modulo in Device Drivers –> Multiple devices driver support (RAID and LVM) –> Device mapper support

(Solved) /proc/devices: No entrfor device-mapper found (Solved) /proc/devices: No entry for device-mapper found(Solved) /proc/devices: No entry for device-mapper found

salvare, e dopo aver ricompilato, riavviare:

# make -j8;make modules -j8;make modules_install -j8;make install
# reboot

enjoy 😉

 

OpenVPN con DD-WRT Debian ed iPhone con ios 10

 

dd-wrt

OpenVPN con DD-WRT Debian ed iPhone con ios 10. Con l'arrivo di ios 10 non è più possibile utilizzare una VPN PPTP , ed era quella che io usavo velocemente per connettermi al mio router linksys e1220 aggiornato con dd-wrt. Questa guida mostra come ottenere una VPN funzionante utilizzando OpenVpn server direttamente dal nostro router, e come creare i vari certificati e chiavi con relativa configurazione lato client, questo sia su Debian che su iPhone 6S con ios 10. Io utilizzo Debian Jessie, ma questa guida vale per tutte le distro. Iniziamo.

OpenVPN con DD-WRT Debian ed iPhone con ios 10

Installazione server OpenVpn:

# apt install openvpn easy-rsa
# mkdir /etc/openvpn/easy-rsa/
# cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/
# nano /etc/openvpn/easy-rsa/vars

a questo punto modificare in base alle proprie esigenze il file vars, come sotto, così successivamente basterà premere Invio quasi sempre.

export KEY_COUNTRY="IT"
export KEY_PROVINCE="Lombardia"
export KEY_CITY="Milano"
export KEY_ORG="DDWRT-VPN"
export KEY_EMAIL="me@myhost.mydomain"
export KEY_OU="DDWRT-VPN"

Creazione certificati/chiavi lato server:

# cd /etc/openvpn/easy-rsa
# source vars
# ./clean-all
# ./build-ca
# ./build-key-server serverddwrt
# ./build-dh

i certificati verranno creati in /etc/openvpn/easy-rsa

Creazione certificati/chiavi lato client:

io ho creato diverse chiavi per i miei devices:

# source vars
# ./build-key iphone
# ./build-key ipad
# ./build-key debianbox
# ./build-key win10

a questo punto tutti i certificati e le chiavi sono state create nella cartella keys in /etc/openvpn/easy-rsa/keys. Non rimane che accedere al nostro router di solito , ed andare in Services-VPN ed abilitare OpenVPN Server/Daemon, come si vede nell'immagine sotto. Nel mio caso la mia rete è 192.168.1.1 e per OpenVpn ho scelto la classe IP 192.168.75.0.

OpenVPN su DD-WRT Debian ed iPhone con ios 10

adesso bisogna aprire con un editor di testo i vari certificati e fare un copia ed incolla di tutto quello che si trova tra –BEGIN CERTIFICATE– e —END CERTIFICATE–. I certificati da incollare direttamente nella web gui sono i seguenti:

Public Server Cert= serverddwrt.crt
CA CERT= ca.crt
Private Server Key = serverddwrt.key
DH PEM = dh2048.pem

ddwrt-openserver-crt

nella sezione più in basso Additional Config inserire:

push "route 192.168.1.0 255.255.255.0"
push "redirect-gateway def1 bypass-dhcp"
dev tun0
proto tcp
keepalive 10 120

poi andare in Administration-Commands ed inserire:

iptables -I INPUT 1 -p tcp --dport 1194 -j ACCEPT
iptables -I INPUT 1 -p udp --dport 1194 -j ACCEPT
iptables -I FORWARD 1 --source 192.168.1.0/24 -j ACCEPT
iptables -I FORWARD -i br0 -o tun0 -j ACCEPT
iptables -I FORWARD -i tun0 -o br0 -j ACCEPT

e premere Save Firewall.

firewall

per avere conferma che tutto è andato bene, portarsi in Status-OpenVpn e si dovrebbe leggere Server: CONNECTED SUCCESS

ddwrt-openvpn

 

Configurazione di OpenVpn client su Debian Jessie:

# apt install network-manager-openvpn network-manager-openvpn-gnome

e configurarlo come sotto:

network-manager-openvpn

network-manager-openvpn-advanced

 

Configurazione iPhone:

OpenVPN con DD-WRT Debian ed iPhone con ios 10

 

Per prima cosa installare direttamente da Apple Store OpenVpn. Dopodichè creare un file iphone.ovpn come sotto:

client
dev tun
proto tcp
remote inserire_indirizzo_IP/DDNS 1194
nobind
persist-key
persist-tun
verb 4
float
ca ca.crt
cert iphone.crt
key iphone.key
comp-lzo yes
tun-mtu 1500
auth SHA1
cipher AES-256-CBC

a questo punto tramite iTunes, caricare all'interno del programma OpenVpn i 4 files:

  1. ca.crt
  2. iphone.crt
  3. iphone.key
  4. iphone.ovpn

OpenVPN con DD-WRT Debian ed iPhone con ios 10

enjoy 😉