Tag Archives: Ubuntu

Εγκατάσταση νεότερης έκδοσης minitube σε Ubuntu 18.04.

Λόγο ότι υπάρχουν αρκετά προβλήματα στο πακέτο που ο προγραμματιστής του minitube διανέμει από το site του. Αποφάσισα ότι πρέπει να το μεταγλωττίσω χειροκίνητα προκειμένου να παίζει όπως πρέπει. Τα προβλήματα που έχει είναι ότι:

  1. Δεν έχει ορίσει σωστά τις εξαρτήσεις κατά το κτίσιμο του πακέτου έτσι δεν πάει φρένο εάν δεν τις έχεις εγκατεστημένες.
  2. Ενώ παίζει με qt > 5.6 η μεταγλωττισμένη έκδοση θέλει 5.11 που δεν είναι στη 18.04LTS
  3. Χρειάζετε νεότερη έκδοση της βιβλιοθήκης libmpv από αυτήν των αποθετηρίων

Έτσι η διαδικασία έχει τα εξής χοντρικά βήματα:

  1. Εγκατάσταση της libmpv και εξαρτήσεων αυτής όπως και λογισμικού για κτίσιμο εφαρμογών.
  2. Δημιουργία API Key.
  3. Κτίσιμο και εγκατάσταση Minitube.

Εγκατάσταση της libmpv και εξαρτήσεων αυτής όπως και λογισμικού για κτίσιμο εφαρμογών.

Πρώτα εγκαθιστάμε κάποιες απαραίτητες εξαρτήσεις από τα αποθετήρια:

sudo apt-get install git dh-autoreconf build-essential libfreetype6-dev libfribidi-dev libfontconfig1-dev yasm libmp3lame-dev libx264-dev libfdk-aac-dev python libssl1.0-dev libpulse-dev python-pip

Μετά μέσω pip εγκαθιστούμε το youtube-dl:

sudo -H pip install -g youtube-dl

Μετά κατεβάζουμε το εργαλείο για την εγκατάσταση του libmpv από το αποθετήριο του git:

git clone https://github.com/mpv-player/mpv-build.git

Και το κτίζουμε με αυτό το κοκτέιλ των εντολών:

cd mpv-build
echo --enable-libx264 >> ffmpeg_options
echo --enable-libmp3lame >> ffmpeg_options
echo --enable-libfdk-aac >> ffmpeg_options
echo --enable-nonfree >> ffmpeg_options
echo --enable-libmpv-shared > mpv_options
./use-mpv-custom v0.29.1
./update
./rebuild -j4
sudo ./install
cd ..

Μετά επεκτείνουμε την μεταβλητή LD_LIBRARY_PATH με τις κατάλληλες τιμές ώστε να μπορεί το σύστημα να «βλέπει» την βιβλιοθήκη:

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

Και για ποιο μόνιμα αποτελέσματα μπορούμε είτε να το ορίσουμε σαν εντολή στο script στο ~/.profile εάν θέλουμε να έχει ισχύ μόνο για τον χρήστη μας:

echo "export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH" >> ~/.profile 

Ή για ποιο μόνιμα, για όλους τους χρήστες αποτελέσματα στο αρχείο /etc/environment

echo "LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH" | sudo tee -a /etc/environment

Δημιουργία API Key. (Μπορεί να γίνει παράλληλα με τα προηγούμενα βήματα όπως κτίζετε η εφαρμογή)

Το minitube τραβά από το youtube data api τα δεδομένα που χρειάζεστε και μέσω libmpv και youtube-dl τα αναπαράγει. Ως εκ τούτου χρειαζόμαστε ένα youtube data api key. Για να γίνει αυτό τα ακόλουθα βήματα χρειάζονται:

  1. Σύνδεση στο https://console.developers.google.com
  2. Μετά δημιουργούμε ένα νέο project όπως δείχνουν οι εικόνες:
    Explaining on how to create an youtube API key
    Form that created the project
  3. Μετέπειτα κάντε κλικ στο κουμπί «Enable Apis and Services».
    Enable APIS
  4. Στη φόρμα που μας εμφανίζετε αναζητούμε «Youtube Data API» και επιλέγουμε το «Youtube Data Api v3» όπως μας δείχνει η παρακάτω εικόνα:
    Selecting Youtube Data API
  5. Μετέπειτα κάνουμε κλικ στο κουμπί Enable με το μπλε χρώμα:
  6. Μετά πρέπει να δημιουργήσουμε τα Credentials κάνοντας κλικ στην πλαϊνή μπάρα που αναγράφει «Credentials» και έχει το κλειδάκι σαν εικονίδιο. (Δείτε παρακάτω εικόνα)
  7. Μετέπειτα στην οθόνη που εμφανίζετε κάνουμε κλικ στο «Create Credentials» και μετά κάνουμε κλικ στο «API Key»:
    Creating a youtube api Key
  8. Όταν έρθει η ώρα κάντε Copy Paste τη παρακάτω τιμή:
    API Key

Κτίσιμο και εγκατάσταση Minitube

Πλέον είμαστε έτοιμοι να βάλουμε την νεότερη έκδοση του minitube. Πρώτα εγκαθιστούμε τις περί QT εξαρτήσεις:

sudo apt install build-essential qt5-default qttools5-dev-tools qt5-qmake qtdeclarative5-dev libqt5sql5-sqlite libqt5x11extras5-dev

Μετά κάνουμε clone το αποθετήριο κώδικα του minitube και ορίζουμε την κατάλληλη έκδοση:

git clone --recursive https://github.com/flaviotordini/minitube.git
git checkout -b v3.0 tags/3.0

Και κτίζουμε όπου ^API_KEY^ το κλειδί που κάναμε στο προηγούμενο βήμα:

qmake "DEFINES += APP_GOOGLE_API_KEY=^API_KEY^"
make

Δοκιμάζουμε ότι όλα παίζουν σωστά με το να τρέξουμε:

./build/target/minitube

Και εγκαθιστούμε με την εντολή:

sudo make install
Advertisements

Το Σκονάκι του Developer: Βασικό περιβάλλον ανάπτυξης Python 2.7 σε Ubuntu GNU/Linux

Γενικά μας βολεύει, εμάς τους προγραμματιστές να έχουμε ένα εικονικό, απομονωμένο, όσο είναι δυνατόν, περιβάλλον ανάπτυξης ανεξαρτήτως γλωσσάς, συστήματος κλπ κλπ προκειμένου να είμαστε όσο το δυνατόν ποιο παραγωγικοί. Η python είναι μια γλώσσα η οποία στο οικοσύστημά της φέρει εργαλεία τα οποία μας βολεύουν στην ανάπτυξη. Αυτά είναι το pip (για εγκατάσταση εξωτερικών βιβλιοθηκών) και το virtualenv (για εικονικά, απομονωμένα περιβάλλοντα ανάπτυξης)

Κατ’ αρχάς πρέπει να εγκαταστήσουμε την python και τα βασικά πακέτα-εργαλεία:

sudo apt install python python-pip git
sudo -Η pip install --upgrade pip //Ενημέρωση εντολής pip λόγο ότι αυτή που διέρχεται από τα πακέτα μπορεί να είναι παπαλειωμένη
sudo -Η pip install virtualenv

Πλέον εάν δεν διαθέτετε ένα project python δημιουργούμε ένα μέσω των εντολών:

mkdir myProject
cd myProject
git init
Σημείωση 01: Τα καλά παιδάκια, όταν αναπτύσσουν κώδικα, χρησιμοποιούν ΠΑΝΤΑ version controll, ειδάλλως θα φάνε φάπα. :Q
Σημείωση 10: Το git είναι το ποιο δημοφιλές και θα το συναντήσεις συχνά στην επαγγελματική σου ζωή, εκτός εάν είσαι κωλόφαρδος και χρησιμοποιούν κάποιο άλλο. Γι αυτό μάθε το

Εάν έχετε ήδη ένα project δίνετε την εντολή (όπου ^φάκελος_του_project^ είναι ο φάκελος ο οποίος εμπεριέχει όλα τα αρχεία του κώδικα):

cd ^φάκελος_του_project^

Πλέον δημιουργούμε ένα εικονικό περιβάλλον με την εντολή:

virtualenv ^ονομα_virtualenv^

Συνήθως χρησιμοποιείτε έτσι:

virtualenv env

Όπου ^ονομα_virtualenv^=env. Γενικά το όνομα του virtual περιβάλλοντος ορίζετε στην παράμετρο ^ονομα_virtualenv^.

Πλέον μπορείτε ενεργοποιήσετε το εικονικό περιβάλλον με την εντολή:

source ^φάκελος_του_project^/^ονομα_virtualenv^/bin/activate

Και να το απενεργοποιήσετε μέσω της εντολής:

deactivate

Πλέον μπορείτε να εγκαταστήσετε τα πακέτα μέσω της εντολής:

pip install ^όνομα_πακέτου^ && pip freeze >> dependencies.txt

Και έαν έχετε ένα project με τις εξαρτήσεις σε ένα αρχείο .txt που δημιουργήθηκε με την παραπάνω εντολή η εγκατάσταση γίνετε μέσω:

pip install -r dependencies.txt

Εφόσον έχει δημιουργηθεί το εικονικό περιβάλλον πρώτα.

Μινιμαλιστικό Περιβάλλον Desktop για χρήση desktop με Openbox σε ubuntu 18.04 server/mini iso

Προσωπικά θα επιθυμούσα με μερικές περιπτώσεις να είχα ένα περιβάλλον desktop που να καταναλώνει τους ελάχιστους δυνατούς πόρους από άποψη μνήμης, αλλά να προσφέρει 2-3 βασικά features. Προϋποθέτουμε ότι έχουμε εγκαταστήσει το ubuntu server iso ή το mini iso και σε αυτό θα κάνουμε μικρές αλλαγές προκειμένου να μπορεί ο χρήστης να τρέξει ένα βασικό desktop με fluxbox. Εφόσον το εγκαταστήσουμε στον δίσκο (τα βήματα δεν καλύπτονται από τον παρόν οδηγό) και μετά επιτυχή εγκατάσταση εφόσον πάρουμε περιβάλλον κονσόλα δίνουμε (σε περιβάλλον server ίσως να χρειαστεί και το multiverse πακέτο):

gnome-settings-daemongnome-settings-daemonsudo apt-get install xinit openbox network-manager ubuntu-restricted-extras terminator ifupdown net-tools apt-dbus gnome-settings-daemon

Ακόμη, εάν τρέχετε σε virtualbox, για καλύτερη ανάλυση πατήστε την επιλογή στο menu Συκευές -> Εισαγωγή δίσκου με τις προσθήκες επισκέπτη και μετά δώστε τις παρακάτω εντολές.

sudo mount /dev/cdrom /mnt
cd /mnt
sudo ./VBoxLinuxAddictions.run
cd
sudo umount /mnt

Μετά προκειμένου με το login ο χρήστης να τρέχει το fluxbox δίνετε την εντολή:

nano ~/.xsession

Και μετά τοποθετούμε το παρακάτω script:

#!/bin/bash
exec openbox-session

Με το συνδιασμό των πλήκτρων CTRL+O για να αποθηκεύσουμε τις αλλαγές και μετά με τον συνδυασμό των πλήκτρων CTRL+X για έξοδο.
Μπορούμε να δούμε το εάν παίζει σωστά με την εντολή:

startx

Όπως θα δείτε θα έχει μια απλή οθόνη με ένα δεξί-κλικ μενού με όλο το λογισμικό και τίποτε άλλο. Αυτό όμως δεν είναι βολικό για καμία χρήση έτσι για να έχουμε ένα βασικό μενού μπορούμε να έχουμε τις εξής προσεγγίσεις:

  1. Εγκατάσταση βασικού panel (lxpanel)
  2. Χρήση Cairo dock

Λύση 1: Εγκατάσταση βασικού panel (lxpanel)
Εγκαθιστούμε τα κάτωθι πακέτα:

 apt-get install xbacklight lxappearance lxpanel lubuntu-default-settings

Και μετά προκειμένου να είναι εφικτός ο τερματισμός από gui κάνουμε edit το αρχείο ~/.config/lxpanel/default/config και βάζουμε στο τέλος την κάτωθι εγγραφή:

Logout=lxsession-logout

Εάν ΔΕΝ εγκαταστήσετε το cairo dock εγκαταστήστε τον διαχειριστή αρχείου pcmanfm.

 apt-get install pcmanfm 

Μετά δίνουμε την εντολή:

nano ~/.config/openbox/autostart

Και τοποθετούμε στο τέλος:

lxpanel &

Λύση 2: Εγκατάσταση cairo dock

sudo apt-get install cairo-dock

Μετά δίνουμε την εντολή:

nano ~/.config/openbox/autostart

Και τοποθετούμε στο τέλος:

cairo-dock -c &

Εάν επιθυμείτε να το προσαρμόσετε τότε κάντε δεξί κλικ σε αυτό και ρυθμίστε το όπως επιθυμείτε. Μια καλή προσαρμογή θα ήταν να ενεργοποιούσατε την επιλογή «Περιοχή Ειδοποιήσεων Παλιά» προκειμένου να έχετε εμφανήσημο το μενού του network manager.

Η επόμενη βασική ρύθμιση είναι η δυνατότητα ρύθμισης δικτύου. Για να γίνει αυτό, θα πρέπει να μπορούμε να ρυθμίζουμε μέσω ui τις συνδέσεις δικτύου για να γίνει πρέπει πρώτα να αφαιρέσουμε το nplan (εάν είναι εγκατεστημένο):

sudo systemctl stop networkd-dispatcher
sudo systemctl disable networkd-dispatcher
sudo systemctl mask networkd-dispatcher
sudo apt-get purge nplan netplan.io

Και να εγκαταστήσουμε το ifupdown:

sudo apt-get install ifupdown

Μετά δίνουμε την εντολή:

sudo cp /usr/lib/NetworkManager/conf.d/10-globally-managed-devices.conf /usr/lib/NetworkManager/conf.d/10-globally-managed-devices.conf_bak

Και στο αρχείο /usr/lib/NetworkManager/conf.d/10-globally-managed-devices.conf βάζουμε το περιεχόμενο:

[keyfile]
unmanaged-devices=none

Μετά στο αρχείο /etc/NetworkManager/NetworkManager.conf αλλάζουμε την ρύθμιση από (μεσω nano text editor):

managed=false

Σε

managed=true

Μαι μετά εγκαθιστούμε τον network manager με την εντολή:

sudo apt-get install gnome-network-manager

Και στο τέλος του αρχείου ~/.config/openbox/autostart τοποθετούμε:

nm-applet&
sudo apt-get install wincd

Και στο τέλος του αρχείου ~/.config/openbox/autostart τοποθετούμε:

wincd&

Ακόμη δε λοιπές ρυθμίσεις όπως εναlλακτής γλώσσας, ρύθμιση έντασης κλπ κλπ ρυθμίζονται ΠΛΗΝ αυτή του δικτύου είτε μέσω lxpanel είτε μέσω cairo-dock

Τέλος μένει να ρυθμίσουμε την έναρξη του xorg κατά την σύνδεση, για να γίνει αυτό τέλος του αρχείου ~/.bashrc την εντολή:

startx

που μπορεί να γίνει δια του text editor nano, παρόλα αυτά λόγω κάποιον επιπλοκών που μπορεί να έχει βάζοντας κατ ευθείας την εντολή

startx

πρέπει αν ελέγξουμε ότι δεν τρέχει ήδη ένα xsession και ότι δεν ήμαστε σε περιβάλλον ασφαλούς κελύφους ssh. Αυτό γίνετε βάζοντας στο τέλος το

/bashrc

τον ακόλουθο κώδικα:

if [ -z $(ps -o sid,comm -A | grep X | awk '{print $1}') ] && [ ! -n "$SSH_CLIENT" ] && [ ! -n "$SSH_TTY" ]; then
  exec startx
fi

Πλέον το βασικό σας μινιμαλίστικο desktop είναι έτοιμο.

Εγκατάσταση Wireshark σε Ubuntu GNU/Linux 16.04

Το wireshark είναι ένα δημοφιλές εργαλείο για σνιφάρισμά πακέτων δικτύου (εξίσου εθιστικά με κοκαϊνη, ειδικά για άτομα που θέλουν να αλώσουν την ασφάλεια του δικτύου σας ή να κλέψουν το password σας από το http://anime.gr ;p ). Αλλά ουκ ολίγες φορές ένα apt-get δεν αρκεί για να έχετε μια μη εκνευριστική εγκατάσταση ενός λογισμικού. Γι αυτό  πάρτε χαρτί και μολύβι ή αφήστε το καλύτερα έχουμε copy-paste :p .

Κατ’ αρχάς εγκαθιστούμε το wireshark με την εντολή apt-get , ξέρετε τα κλασικά:

sudo apt-get install wireshark

Η εντολή αυτή σε κάποια φάση θα σας βγάλει το εξής παράθυρο:Παράθυρο επιλογής κατά την εγκατάσταση του wireshark

Που επιλέγουμε ναι σε περίπτωση που επιλέξατε όχι ή είχατε εγκαταστήσει παλαιότερα το wireshark και έπρεπε να το εκτελέσετε σαν root μπορείτε να το επαναρυθμίσετε δίνοντας την εντολή και να ακολουθήσετε τα παρακάτω βήματα του άρθρου:

sudo dpkg-reconfigure wireshark-common

Μετά πρέπει να προσθέσετε το όνομα χρήστη σας στο group (ομάδα) wireshark, αυτό είναι εφικτό με την εντολή:


sudo groupadd wireshark
sudo usermod -aG wireshark ^όνομα_χρήστη^

Όπου το ^όνομα_χρήστη^ είναι το όνομα χρήστη που αντιστοιχεί.

Πλέον μένει να δώσετε τις παρακάτω εντολές 1 προς 1:


sudo chgrp wireshark /usr/bin/dumpcap
sudo chmod 750 /usr/bin/dumpcap
sudo setcap cap_net_raw,cap_net_admin=eip /usr/bin/dumpcap
sudo getcap /usr/bin/dumpcap

Πλέον μένει να αποσυνδεθείτε και να συνδεθείτε ξανά προκειμένου οι αλλαγές να έχουν ισχύ.

layout of a network having ubuntu as gateway

Ρύθμιση Ubuntu 16.04 σαν πύλη (gateway) δίκτυου.

Ας υποθέσουμε ότι έχουμε το εξής σενάριο έχουμε ένα μηχάνημα που τρέχει ubuntu 16.04 LTS server edition και θέλουμε αυτό να αποτελεί πύλη δικτύου για ένα τοπικό δίκτυο. Ουσιαστικά θέλουμε να πετύχουμε το εξής:

layout of a network having ubuntu as gateway

Όπως βλέπετε στην εικόνα θέλουμε όλη η κίνηση του δικτύου να περνά από ένα μηχάνημα το οποίο θα λειτουργεί σαν πύλη δρομολόγησης δικτύου. Για να επιτευχθεί αυτό θα πρέπει να κάνουμε τα εξής βήματα:

    1. Θα πρέπει να ορίζουμε ip δικτύου για την κάρτα μας η οποία αντιστοιχεί στο τοπικό δίκτυο, για να γίνει αυτό θα πρέπει να δώσουμε την εντολή:
      sudo nano /etc/network/interfaces
      

      Και να ορίσουμε μια στατική διεύθυνση για την κάρτα μας προσθέτοντας γραμμές σαν:

      auto enp0s8
      iface enp0s8 inet static
      address 10.0.6.1
      netmask 255.255.255.0
      broadcast 10.0.6.255
      dns-nameservers 8.8.8.8
      

      Η παραπάνω ρύθμιση αποτελεί ενδεικτική και θυμηθείτε να ορίσετε το κατάλληλο εύρος ip. Στην δικιά μας περίπτωση θα στήσουμε ένα ΝΑΤ δίκτυο έτσι θα έχουμε 255 διευθύνσεις με χρήσιμο εύρος 10.0.6.1 – 10.0.6.254. Ορίστε τις κατάλληλες ρυθμίσεις ανάλογα με τις ανάγκες σας.
      Μπορείτε να δείτε τα διαθέσιμα interface δικτύου με την εντολή:

      ifconfig -a 
    2. Μετά θα πρέπει να ενεργοποιήσουμε την προώθηση ipv4 που θα γίνει με την εντολή:
      sudo nano /etc/sysctl.conf

      Και να κάνουμε uncomment την γραμμή (αφαιρώντας το #):

      net.ipv4.ip_forward=1

      Μετά πρέπει να δώσουμε την εντολές:

      sudo sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
    3. Μετά μένει να ενεργοποιήσουμε την κάρτα δικτύου δίνοντας τις εντολές (1 προς 1):
      sudo ifdown enp0s8
      sudo ifup enp0s8
      sudo service networking restart
    4. Μετά θα πρέπει να ορίσουμε στο firewall να ανακατευθύνει σωστά την κίνηση (δίνοντας μια προς μια τις εντολές):
      EXT=enp0s3
      INT=enp0s8
      sudo iptables -t nat -A POSTROUTING -o $EXT -j MASQUERADE
      sudo iptables -A FORWARD -i $EXT -o $INT -m state --state RELATED,ESTABLISHED -j ACCEPT
      sudo iptables -A FORWARD -i $INT -o $EXT -j ACCEPT
      

      Ουσιαστικά ορίσαμε 2 enviromental variables:

      • EXT που εμπεριέχει την διεπαφή που κοιτά το διαδίκτυο
      • INT που εμπεριέχει την διεπαφή του εσωτερικού μας δικτύου

      Και βάση με αυτών ορίσαμε την προώθηση των πακέτων στο ενσωματωμένο firewall του GNU/Linux iptables.

    5. Τώρα μένει να αποθηκεύσουμε τις ρυθμίσεις του firewall με τις εντολές:
      sudo apt-get install iptables-persistent
      /etc/init.d/iptables-persistent save
      

Ακόμη εφόσον ορίσαμε το gateway μας θέλουμε να μπορούμε να διευθυνσιοδοτούμε αυτόματα μέσω dhcp έτσι θα εγκαταστήσουμε και θα ρυθμίσουμε το πρόγραμμα dnsmasq ο οποίος θα αποτελεί ο dhcp server μας. Για την εφκατάστασή του δίνουμε:

sudo apt-get install dnsmasq

Μετά μένει να τον ρυθμίσουμε, για να το κάνουμε θα πρέπει να δώσουμε την εντολή:

sudo nano /etc/dnsmasq.conf

Και να ορίσουμε τις παρακάτω ρυθμίσεις (σημείωση ότι έχουν προσαρμοστεί στην περίπτωσή μου):

interface=enp0s8
dhcp-range=10.0.6.2,10.0.6.254,12h

Σε περίπτωση άλλων ip ορίστε διαφορετικά ranges εξαιρώντας την/τις ip του gateway και του μηχανήματος. Για επανεκκίνηση του δαίμονα δώστε:

sudo service dnsmasq restart

Σημείωση

Σε περίπτωση που παίζετε με εικονικές μηχανές Virtualbox παρακαλώ ΑΠΕΝΕΡΓΟΠΟΙΕΙΣΤΕ τον dchp server του VIRTUALBOX.

Στήσιμο και ρύθμιση τοπικού DNS server για ορισμό τοπικών domain.

Στην εργασία που δουλεύω έχουμε κάποια ενδοεταιρικά domain names τα οποία δεν είναι προσβάσιμα εκτός του τοπικού δικτύου της εταιρείας έτσι ήθελα να δω πως μπορώ να εφαρμόσω αυτό σε ένα εικονικό δίκτυο από εικονικά μηχανήματα προσομοιάζοντας παρόμοια κατάσταση με αυτήν που έχω στην εργασία μου.

Έτσι λοιπόν στην προσομοίωση λέω ότι και καλά η εταιρεία μου έχει ένα website http://example.com το οποίο είναι public facing και hosted κάπου αλλού και στο «ενδοεταιρικό» μου δίκτυο έχω 2 «ενδοεταιρικές» web εφαρμογές την http://app1.intranet.example.com και την http://app2.intranet.example.com. Προκειμένου να λύσω αυτό το πρόβλημα ύστερα από αναζήτηση λέει ότι θα πρέπει να στήσω τον δικόν μου «ενδοεταιρικό» dns server.

Έτσι λοιπόν σε έναν server που χρησιμοποιώ στο εικονικό «ενδοεταιρικό» δίκτυο που τρέχει ubuntu εγκατέστησα τον bind9 με την δύσκολα-να-μαντέψεις εντολή:


sudo apt-get install bind9 

Εφόσον εγκατασταθεί θα πρέπει να:

  • Ρυθμίσουμε τον σέρβερ να προωθεί ότι domain δεν έχει σχέση με το intranet σε δημόσιους DNS servers
  • Να ορίσουμε DNS ζώνες για τα εσωτερικά domains.

Έτσι ύστερα από ώρες αναζήτησης βρήκα ότι έπρεπε να κάνω τα εξής: Στο /etc/bind/named.conf (για ubuntu 14.04) όρισα τα εξής:


options {
	directory "/var/cache/bind";
	querylog yes;

	// If there is a firewall between you and nameservers you want
	// to talk to, you may need to fix the firewall to allow multiple
	// ports to talk.  See http://www.kb.cert.org/vuls/id/800113

	// If your ISP provided one or more IP addresses for stable 
	// nameservers, you probably want to use them as forwarders.  
	// Uncomment the following block, and insert the addresses replacing 
	// the all-0's placeholder.

	 forwarders {
		8.8.8.8;
		8.8.4.4;
	 };

	//========================================================================
	// If BIND logs error messages about the root key being expired,
	// you will need to update your keys.  See https://www.isc.org/bind-keys
	//========================================================================
	dnssec-validation auto;

	auth-nxdomain no;    # conform to RFC1035
	listen-on-v6 { any; };
};

logging{
 channel default_file {
        file "/var/log/named/default.log" versions 3 size 5m;
        severity dynamic;
        print-time yes;
    };

    category default { default_file; };
    category general { default_file; };
    category database { default_file; };
    category security { default_file; };
    category config { default_file; };
    category resolver { default_file; };
    category xfer-in { default_file; };
    category xfer-out { default_file; };
    category notify { default_file; };
    category client { default_file; };
    category unmatched { default_file; };
    category queries { default_file; };
    category network { default_file; };
    category update { default_file; };
    category dispatch { default_file; };
    category dnssec { default_file; };
    category lame-servers { default_file; };
};

acl "intranet" { 10.42.0.0/24; };
view "intranetView" {
	match-clients { "intranet"; };
	recursion yes;
	zone "intranet.example.com" {
		type master;
		file "/etc/bind/db.intranet";
	};
	include "/etc/bind/named.conf.default-zones";
};

view "outside" {
	match-clients { any; };
	recursion no;	
	include "/etc/bind/named.conf.default-zones";
};

Όπως παρατηρείτε χάριν ευκολίας χώρισα την ρύθμιση σε χρώματα για ευκολότερη μελέτη:

  1. Όσα είναι με αυτό το χρώμα υποδηλώνουν ποιους dns θα προωθεί τα requests για domains τα οποία δεν μπορεί να εξυπηρετήσει ο ίδιος ο bind. Προσωπικά προτείνω την χρήση αυτών των DNS.
  2. Όσα είναι με αυτό το χρώμα υποδηλώνει ρυθμίσεις για logging αυτές οι ρυθμίσεις μπορεί να παρθούν copy paste αλλά για να λειτουργήσουν θα πρέπει να εκτελέσετε τις εξής εντολές:
    sudo mkdir /var/log/named/
    sudo touch /var/log/named/default.log
    sudo chmod uag+w /var/log/named/default.log
    

     

  3. Τέλος όσα είναι με αυτό το χρώμα αποτελεί ρυθμίσεις οι οποίες:
    1. Ρυθμίζουν ποιο δίκτυο θα εξυπηρετεί τι. Εμείς ορίσαμε ότι το «εταιρικό» μας τοπικό δίκτυο (10.42.0.0/24) θα εξυπηρετείτε από το intranetView το οποίο εκεί έχουμε ορίσει τα «ενδοεταιρικά» μας domain που ορίζονται με εγγραφές zone οι οποίες έχουν την εξής μορφή:
      
      zone "^domain που εξυπηρετούν^" {
      		type master;
      		file "^αρχείο ρύθμισης ζώνης^";
      	};
      
    2. Ποιο network θα μπορεί εφόσον συνδεθεί στον σέρβερ να αναζητά για άλλα domain που δεν έχει ζώνη με την ρύθμιση recursion. Εμείς στην παραπάνω ρύθμιση επιτρέπουμε μόνο όσοι προέρχονται από το δίκτυο 10.42.0.0/24; να αναζητούν για άλλα domain.
    3. Και τέλος για να μην σπα σε κάθε view εγγραφή ορίσαμε εγγραφές για της προεγκατεστημένες ζώνες (include «/etc/bind/named.conf.default-zones»;)

Τώρα μας μένει πλέον να ορίσουμε την ζώνη μας για τον δικό μου σκοπό ύστερα από πειραματισμό βρήκα ότι είναι αυτή (αναμένετε εμπλουτισμός στο κομμάτι αυτό):

$TTL 604800
@ IN SOA intranet.example.com. root.example.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS root.example.com.
@ IN A 10.42.0.1
app1 IN A 10.42.0.1
app2 IN A 10.42.0.1

Όσο αφορά το κομμάτι της ζώνης ακόμα το ψάχνω αλλά προς το παρόν έχετε το παραπάνω σαν template.

Πλέον στον εκάστοτε υπολογιστή στον δίκτυο πρέπει να ορίσετε την Ιp που είναι εγκατεστημένος ο DNS server σαν DNS. Στις περισσότερες διανομές GNU/Linux αυτό γίνεται ως εξής:

  1. Κάνουμε δεξί κλικ στο εικονίδιο του δικτύου.
  2. Επιλέγουμε «Επεξεργασία συνδέσεων»/
  3. Επιλέγουμε την σύνδεσή μας και κάνουμε κλικ στο «Επεξεργασία».
  4. Μετά επιλέγουμε την καρτέλα DNS και ορίζουμε την Ip του μηχανήματος που εγκαταστήσαμε τον Bind server.

Διόρθωση έλλειψης ήχου στα ακουστικά σε Ubuntu 16.04.

Ουκ oλίγοι υπολογιστές (όλοι) διαθέτουν πέρα απο τα ηχεία που συνδέονται σε μια υποδοχή πίσω στον υπολογιστή και ακουστικά που συνήθως συνδέονται μπροστά. Παρατήρησα ότι η έκδοση Ubuntu 16.04 δεν δίνει από προεπιλογή ήχο στο μπροστινό πάνελ ήχου (ακουστικά) για να διορθωθεί ακολουθείτε τα εξής βήματα:

Ανοίγετε μια κονσόλα τερματικού (είτε μέσω του dash είτε παντώντας Ctrl+T) και δίνετε την εξής εντολή:

alsamixer

Και χρησιμοποιώντας τα βελάκια μεταβαίνετε εκεί που αναγράφει «Headphones». Εάν δείχνει την ένδειξη «ΜΜ» από πάνω τότε πατάτε το κουμπί `M` προκειμένου να γίνει `00` και το πάνω βελάκι προκειμένου να ανεβάσετε την ένταση.

Όμως σε κάθε εκκίνηση του υπολογιστή σας θα πρέπει να κάνετε τα εξής παραπάνω βήματα. Έτσι προκειμένου να τα αποθηκεύσουμε θα πρέπει να ακολουθήσετε τα εξής παραπάνω βήματα:

Πρώτον με την παρακάτω εντολή θα πρέπει να αποθηκεύσουμε το τι ρυθμίσαμε στον alsamixer:

alsactl --file ~/.config/asound.state store

Και κάθε φορά που ο χρήστης μας θα κάνει login θα πρέπειν να φορτώνουμε την σωστή ρύθμιση έτσι βάζουμε την εξής εγγραφή στο τέλος του αρχείου .bashrc:

alsactl --file ~/.config/asound.state store

Μπορεί εύκολα να γίνει με την εντολή:

echo "alsactl --file ~/.config/asound.state restore" >> ~/.bashrc

Ρύθμιση σε άλλους χρήστες που χρησιμοποιούν τον ίδιο υπολογιστή

Θα πρέπει κάθε χρήστης ο οποίος χρησιμοποιεί ακουστικά στον ίδιο υπολογιστή με εσάς να έχει της παραπάνω ρυθμίσεις. Αυτό μπορεί να γίνει αντιγράφοντας τις αρχεία των ρυθμίσεων σας στον προσωπικό φάκελο του χρήστη (προϋποθέτει ότι έχετε δικαίωμα για να εκτελείτε το sudo):

sudo cp ~/.config/asound.state /home/^όνομα_χρήστη^/.config/asound.state
chown ^όνομα_χρήστη^:^όνομα_χρήστη^ /home/^όνομα_χρήστη^/.config/asound.state

 

Μετά συνδέεστε από το τερματικό σαν ^όνομα_χρήστη^ προκειμένου να βάλετε την εντολή επαναφοράς:

sudo su ^όνομα_χρήστη^
echo "alsactl --file ~/.config/asound.state restore" >> ~/.bashrc

 

Και βγαίνετε με την εντολή:

exit