Δημιουργία ενός virtual network interface δυναμικά

George Notaras gnot at g-loaded.eu
Mon Jun 2 16:15:21 EEST 2008


George Notaras wrote:
> Christos Ricudis wrote:
>> George Notaras wrote:
>>> Έστω ότι έχουμε το παρακάτω cronjob που τρέχει το 'vif-start' κάθε 
>>> ένα λεπτό.
>>>
>>> */1 * * * * johndoe /etc/vif-start
>>
>>
>> OK...
>>
>> To yfos mou htan apotomo kai sou zhtw sygnwmmh.
> 
> Εντάξει, δεν παρεξηγούμαι έτσι απλά. :)
> 
>> To pragmatiko erwthma edw einai to ekshs :
>>
>> Giati mporei na 8eleis na dhmiourgeis ena *PER USER* tunnel interface 
>> xrhsimopoiwntas ena cron job?
>>
> 
> Όχι, αυτό έγινε μόνο και μόνο για να δείξω ότι το "sudo tunctl -b ..." 
> δεν επιστρεφει τίποτα, ενώ θα έπρεπε να επιστρέφει το όνομα του 
> νεο-δημιουργηθέντος virtual network interface, tapN.
> 

Το παρακάτω script καλείται από το Virtualbox για να δημιουργήσει ένα 
virtual network interface, να το προσαρτήσει στο br0 και να τυπώσει το 
όνομά του στο stdout.

Απέχει έτη φωτός από τα standards που έχουν τεθεί από τον Κεραμίδα, αλλά 
το γράφω όπως υπάρχει και στο manual (ενότητα 6.7.2), μόνο με τη βασική 
διαφορά ότι, αντί για ένα hard-coded όνομα χρήστη, παίρνει το username 
από την 'whoami' και ότι χρησιμοποιείται το standard tool 'tunctl' αντί 
του 'VBoxTunctl' του virtualbox.

/etc/vbox-tap-setup:

VMUSER=$(/usr/bin/whoami)
interface=$(sudo /usr/sbin/tunctl -b -u $VMUSER)
if [ -z "$interface" ]; then
   exit 1
fi
sudo /sbin/ifconfig $interface promisc up
sudo /usr/sbin/brctl addif br0 $interface
echo $interface

To Virtualbox μάλλον καλούσε το παραπάνω σκριπτ από ένα περιβάλλον 
περιορισμενο όπως εκείνο του cron, το οποίο σε συνδυασμό με την default 
option 'requiretty' στο /etc/sudoers, είχε ως αποτέλεσμα να μην 
δημιουργείται ποτέ το tapN και φυσικά το Virtualbox να βγάζει πάντα error.

PS: Το VMware δεν χρειάζεται τίποτα από όλα αυτά. Δημιουργεί τα virtual 
network interfaces και τα προσαρτά στην br0 από μόνο του. Το QEMU, το 
μόνο που χρειάζεται είναι τα παρακάτω σε ένα setup script: sudo ifconfig 
$1 promisc up; sudo brctl addif br0 $1. Τα υπόλοιπα τα κάνει μόνο του. 
Το vbox είναι το λιγότερο έξυπνο ή καλύτερα "αδικαιολόγητα πολύπλοκο" 
στο θέμα της δυναμικής δημιουργίας virtual network interfaces κάθε φορά 
που ξεκινάει ένα virtual machine.





More information about the Linux-greek-users mailing list