= Slackware = The original Linux distribution, geared towards power and stability. http://www.slackware.com == Vagrant on Slackware 14 32 bit == Ruby version: ruby 1.9.3p429 (2013-05-15 revision 40747) [x86_64-linux] VirtualBox version, Oracle VM VirtualBox Manager 4.2.8 === Install Vagrant from source === Based on [[https://github.com/mitchellh/vagrant/wiki/Installing-Vagrant-from-source]] As root run the following: * cd /tmp * mkdir gitVagrant * cd gitVagrant * git clone https://github.com/mitchellh/vagrant.git * cd vagrant * gem install bundle #it may not be installed * bundle install * rake install * vagrant -v #check vagrant version === Install VirtualBox on Slackware 14 32 bit === Get VirtualBox 4.2.8 for Linux, i386, all distributions [[http://download.virtualbox.org/virtualbox/4.2.8/VirtualBox-4.2.8-83876-Linux_x86.run]]. For 4.2.18 [[http://download.virtualbox.org/virtualbox/4.2.18/VirtualBox-4.2.18-88781-Linux_x86.run]] As root run the following commands: * cd * chmod 755 VirtualBox-4.2.8-83876-Linux_x86.run * ./VirtualBox-4.2.8-83876-Linux_x86.run * usermod -a -G vboxusers * id #check user groups As a normal user run the following: * virtualbox --help # check the version and parameters * virtualbox #start virtualbox === Get and run a base box - Ubuntu Lucid32 === In [[http://www.vagrantbox.es/]] there is a list of available vagrant boxes. As normal user run the following * mkdir -p /tmp/vgbox * cd /tmp/vgbox * wget http://files.vagrantup.com/lucid32.box #Ubuntu 10.04 LTS * vagrant box add UbuntuLucid32 lucid32.box * vagrant init UbuntuLucid32 * vagrant up * vagrant ssh #access the VM through SSH * ping www.sapo.pt #inside VM ... does not reply * exit * vagrant suspend Run the following as stated in [[http://serverfault.com/questions/453185/vagrant-virtualbox-dns-10-0-2-3-not-working]]: * VBoxManage list vms * VBoxManage modifyvm "vgbox_1372194938" --natdnsproxy1 on * VBoxManage modifyvm "vgbox_1372194938" --natdnshostresolver1 on * vagrant resume * vagrant ssh * ping www.sapo.pt # OK ! it gets ping replies * dpkg -l | more # show all installed packages Running '''cat /etc/debian_version''' show its based on '''squeeze/sid'''. Running '''cat /etc/issue.net''' show it's '''Ubuntu 10.04.4 LTS''' [[http://releases.ubuntu.com/lucid/]]. Current user and pass for the lucid32 box is '''vagrant''' '''vagrant'''. To get superuser access run '''sudo bash'''. Inspecting the file '''/etc/shadow''' we can see that only the user vagrant has a password defined. In '''/etc/sudoers''' it is said that all users belonging to group can gain root privileges with supplying a password. In '''/etc/group''' it is stated that vagrant belongs to the admin group. === Ubuntu Precise32 === In [[http://www.vagrantbox.es/]] there is a list of available vagrant boxes. As normal user run the following * mkdir -p ~/Downloads/vagrantBoxes/ * cd ~/Downloads/vagrantBoxes/ * wget http://files.vagrantup.com/precise32.box #Ubuntu 12.04 LTS * mkdir -p /tmp/precise32 * cd /tmp/precise32 * vagrant box add UbuntuPrecise32 ~/Downloads/vagrantBoxes/precise32.box * vagrant init UbuntuPrecise32 * vagrant up * vagrant ssh #access the VM through SSH * ping www.sapo.pt * exit * vagrant suspend == Slackware NAT router with Pen 3G == Configure Slackware PC to share a 3G internet connection (TMN portuguese ISP). === Internet connection === The used '''APN''' is '''internet'''. There is no PIN defined in the used SIM card. Edit '''/etc/ppp/peers/tmnpub''' * /dev/ttyUSB0 * 460800 * connect 'chat -v -f /etc/ppp/chat/tmnpub' * defaultroute * usepeerdns Edit '''/etc/ppp/chat/tmnpub''' * ABORT 'BUSY' * ABORT 'NO CARRIER' * ABORT 'ERROR' * ABORT 'SIM PIN' * ABORT 'SIM PUK' * '' AT * OK AT+CGDCONT=1,"IP","internet" * OK AT+CPIN? * READY ATDT*99# * CONNECT To connect to the internet we must use the command: * pppd call tmnpub Using the command '''ifconfig''' we should see the device '''ppp0''' in the output. Issuing a command '''ping www.google.com''' we should get a reply with the IP address from Google. === Configure NAT (Network Address Translation) router === Translate internal network addresses (source address) to a public/usable IP address given to the 3G modem. View the routing table: * route -n It should appear the devices ppp0 and eth0, and based on the Destination and Netmask the destination interface. Enable IP forwarding: * echo 1 > /proc/sys/net/ipv4/ip_forward Configure iptables to translate the address after they are forwarded to the correct interface, from '''eth0''' to '''ppp0''': * iptables -F * iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE To view the iptables configuration run the commands: * iptables -L -t nat -v * iptables -L -t filter -v {{{#!highligth bash #script #Enable IP forwarding: echo 1 > /proc/sys/net/ipv4/ip_forward #Configure iptables to translate the address after they are forwarded to the correct interface, from eth0 to ppp0: iptables -F iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE }}} === Configure client computer === The routing table must be configure to use the NAT on Slackware, that will act as a router. Check the current default gateway: * route -n The line with destination equal to 0.0.0.0 and gateway 0.0.0.0, is the default router/gateway and must be deleted. We must run a command to do that, adapted to the current situation: * route del -net 0.0.0.0 gw 192.168.1.1 The previous command is to delete a route with destination 0.0.0.0 and gateway 192.168.1.1. If the NAT router have the IP 192.168.1.123 then the following command must be sent: * route add default gw 192.168.1.123 * route -n After that running '''route -n''' should return a line with: * Gateway: 192.168.1.123 * Netmask: 0.0.0.0 * Destination: 0.0.0.0 * Iface: eth0 Running a '''ping www.google.com''' from the client computer should return the IP address from Google. Running a '''traceroute www.google.com''' should show the IP address from the NAT router.