Networking with Xen in VirtualBox

I’m doing an automated install project at work using Xen. The project files are located on a USB hard disk that’s supposed to be plugged in to a “clean slate” server to perform a 1-click installation of the entire box. As it’d be very tedious to always unplug the disk from my workstation, move it to the aforementioned server, try something, then move it back, I rather went with doing the development using VirtualBox. Due to VirtualBox’s virtualization technique, it’s actually possible to run a Xen domU under a Xen hypervisor in VirtualBox.

And it was all working… except the networking: My test domU was able to connect to the dom0, and vice versa, but couldn’t talk to the rest of the network. I.e. the Xen domU’s networking wasn’t working, even though the dom0′s networking itself was working (which means that the “VirtualBox virtual machine”‘s networking was working). After an hour of debugging (and wondering why my router sends ICMP6 router advertisements through the network, even though IPv6 is diabled), I finally found the solution: In the networking tab of VirtualBox’s virtual machine settings, there’s a setting for allowing or denying promiscuous mode… Of course we need this for anything like a bridge to function, and of course it’s disabled by default for security reasons.

Reserved IPs

Today Christian told me that he couldn’t connect to one of my servers. This was somewhat of a weird issue and the first guess was that it’s the firewall’s fault. So we turned it off and it worked. So there we went debugging why the firewall would block him in the first place. Comparing the packet counters of iptables -nvL of before and after his trying to connect, we got the following diff:

-   41  2880 RETURN     all  --  *      *       104.0.0.0/5          0.0.0.0/0
+   43  3000 RETURN     all  --  *      *       104.0.0.0/5          0.0.0.0/0

OK, weird, why is his IP range in there. I’ll explain it now, but first some background information:

I’m running Firehol on my servers, which has the following feature:

UNROUTABLE_IPS

This variable is both RESERVED_IPS and PRIVATE_IPS together. I suggest to use this variable on interfaces and routers accepting Internet traffic. You can overwrite the internal default definion of this variable by creating a file with same name in /etc/firehol. This file accepts an IP definition per line.Example: interface eth0 internet src not “${UNROUTABLE_IPS}”

RESERVED_IPS

This variable includes all the IP addresses defined as IANA – Reserved by IANA. You can overwrite the internal default definion of this variable by creating a file with same name in /etc/firehol. This file accepts an IP definition per line. The supplied get-iana.sh script creates this file by directly fetching this document.

Example: interface eth0 internet src not “${RESERVED_IPS}”


Now, the thing is I didn’t use the get-iana.sh script when I configured my firewall because it didn’t work (I guess it is already fixed today). This means, that Firehol used the built-in default, which looks like this:

RESERVED_IPS=”0.0.0.0/7 2.0.0.0/8 5.0.0.0/8 10.0.0.0/8 14.0.0.0/8 23.0.0.0/8 27.0.0.0/8 31.0.0.0/8 36.0.0.0/7 39.0.0.0/8 42.0.0.0/8 46.0.0.0/8 49.0.0.0/8 50.0.0.0/8 100.0.0.0/6 104.0.0.0/5 127.0.0.0/8 175.0.0.0/8 176.0.0.0/5 184.0.0.0/7 197.0.0.0/8 223.0.0.0/8 240.0.0.0/4″

Now, this was probably fine about one or two years ago, but it no longer is. As you probably know, IANA is in the process of allocating the remaining IPs. I didn’t think that this would affect me in any way, but here’s the problem: Christian’s IP is 109.61.136.17 which is within 104.0.0.0/5, and thus got rejected by the firewall.

Obviously 104.0.0.0/5 should no longer be marked as “reserved IP” by firewalls nowadays. Because I was curious how things have changed, I went ahead and compared the built-in default with the current IANA IPv4 Address Space Registry. Here’s the differences:

0.0.0.0/7       (RESERVED)
2.0.0.0/8       ALLOCATED
5.0.0.0/8
10.0.0.0/8      (RESERVED)
14.0.0.0/8      ALLOCATED
23.0.0.0/8
27.0.0.0/8      ALLOCATED
31.0.0.0/8      ALLOCATED
36.0.0.0/7      36/8 ALLOCATED, 37/8 UNALLOCATED
39.0.0.0/8
42.0.0.0/8      ALLOCATED
46.0.0.0/8      ALLOCATED
49.0.0.0/8      ALLOCATED
50.0.0.0/8      ALLOCATED
100.0.0.0/6     101/8 ALLOCATED; 100/8 and 102/7 UNALLOCATED
104.0.0.0/5     104/8 and 106/8 UNALLOCATED, rest ALLOCATED
127.0.0.0/8     (RESERVED)
175.0.0.0/8     ALLOCATED
176.0.0.0/5     179/8, rest ALLOCATED
184.0.0.0/7     184/8 ALLOCATED, 185/8 UNALLOCATED
197.0.0.0/8     ALLOCATED
223.0.0.0/8     ALLOCATED
240.0.0.0/4     (RESERVED)

The IP addresses (or rather subnets) in the first column are those, that were in the built-in default. As such, they were *all* marked UNALLOCATED or RESERVED at one time (at most two years ago I think). The second column shows their current status, where empty space means it’s still UNALLOCATED.

Looking at this, we can see that a lot of subnets have been allocated lately. The new RESERVED_IPS now looks like this for me:

RESERVED_IPS=”5.0.0.0/8 10.0.0.0/8 23.0.0.0/8 37.0.0.0/8 39.0.0.0/8 100.0.0.0/8 102.0.0.0/7 104.0.0.0/8 106.0.0.0/8 127.0.0.0/8 179.0.0.0/8 185.0.0.0/8 240.0.0.0/4″

UNROUTABLE_IPS

Description

This variable is both RESERVED_IPS and PRIVATE_IPS together. I suggest to use this variable on interfaces and routers accepting Internet traffic. You can overwrite the internal default definion of this variable by creating a file with same name in /etc/firehol. This file accepts an IP definition per line.Example: interface eth0 internet src not “${UNROUTABLE_IPS}”

My new EeePC 1201PN is emitting mysterious clicking sounds

So I bought the brand-new EeePC 1201PN on Amazon yesterday and everything just worked amazingly perfect. Freeing the pre-installed Windows 7 Home Premium of all the useless mini games and trial software took a few hours, but now it’s all shiny. Even installing Fedora 13 with encrypted root on LVM worked like a charm.

But after the dust had settled, and the machine was idling most of the time, I started to notice some mysterious clicking sound every few seconds. It turns out this is a feature of Western Digital’s latest hard disks to save power. This sound, however, was _very_ annoying, and even made me think that the hard drive is faulty. Apparently there’s a Windows tool out there to disable Advanced Power Management for the disk entirely; and on Linux you can just run hdparm -B 255 /dev/sda. Both of these solutions just disable it until the next reboot though. Googling some more, I stumbled upon this article providing a permanent solution by modifiying some value in the firmware using a DOS tool. Yes, indeed, using a DOS tool. Great. Time to get FreeDOS onto a USB flash drive: I basically copy&pasted the steps from the “Using Makebootfat on Debian/Ubuntu” section of this guide, and added the wdidle3.exe to fs-root/. Reboot, run the tool, and get a silent hard drive.

Fine, now I can enjoy my new netbook as it was meant to me.

Zentralabitur FTS

Grade zentrale Mathe-Abiturklausur geschrieben. Davon abgesehen, dass es viel zu viele Aufgaben für zu wenig Zeit waren, gab es einige dicke, lustige Fehler, wie z.B.:

“Zeigen Sie, dass die Menge der 2×2-Matrizen bezüglich der Matrizenmultiplikation eine kommutative Halbgruppe bilden.”

KOMMUTATIV? WELL DONE, NRW!

Punkteverteilung wäre eine andere tolle Sache. Für einmal den euklidischen Algorithmus runterrattern mit pisseinfachen Zahlen gibt es genauso viele Punkte wie für eine Extremwertaufgabe, bei der die Punkte eines Graphen ala f_a(x)=(x-a)^2/(a-x) mit dem geringsten Abstand zum Ursprung zu bestimmen sind.

Ich verstehe ja, dass Fehler auftreten können, aber doch nicht solche gravierenden. Respekt.

Gitorious and PATH on Gentoo

You might know that the software behind gitorious.org is open source, and therefore it’s possible to set up gitorious on your own server for private use. I spent almost the whole Saturday on that and would like to share some information and pitfalls that I ran into.

Basic information can be found in upstream’s gitorious project wiki:

Gitorious Components is a must-read before the actual installation in order to understand how gitorious works.

Git Authentication is worth a glance unless you already know how gitosis authenticates its users.

There is also a guide available on how to install gitorious on Gentoo using some ebuilds from an overlay, but the gitorious ebuild in there has a few shortcomings (e.g. some hardcoded paths, passwordless login to mysql). Since I want to install gitorious by hand in order to understand how all the components work together, I decided to follow the guide at cjohansen.no, which performs the installation step-by-step.

The latter is an excellent read, so I won’t repeat the steps mentioned  there. You can skip the prerequisites as the actual installation starts at “Get the Gitorious source code”. You can then skip another two paragraphs and continue with “Creating a home for Git repositories”. Since you then skipped the installation of ActiveMQ, you can just emerge stompserver and start that. Following (and adjusting e.g. paths) the rest of the guide is left as an exercise to the reader.

Just some pitfalls:

When you attempt to run the application (for testing purposes, in development mode) using the mongrel server, you usually get the following output:

$ script/server
=> Booting Mongrel
=> Rails 2.3.5 application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server

This cries for a click on the URL to easily open gitorious in your browser. This, however, leads to some very weird behaviour when you want to log in: You enter your credentials, click “Log in”, and then you’re redirected to the index page, still being logged out. What happened here? It took me some time to find the answer: Gitorious uses the gitorious_host variable from $RAILS_ROOT/config/gitorious.yml (following the tutorial that’s “git.localhost”) to set the cookie domain when you log in. However, the browser will then just discard this cookie because it receives a cookie for “git.localhost” from 0.0.0.0. In other words: To perform a successful login, the host name you type into your browser’s address bar needs to match the value of gitorious_host.

Another pitfall: If you run the mongrel server in the production environment, the login action will redirect you to the SSL equivalent, running on port 443, meaning your browser won’t be able to find the server and spitting out “Server not found”. You can disable this by putting

SslRequirement.disable_ssl_check = true

in your config/environment/production.rb file.

And the last issue, that took me some hours to investigate: As soon as everything is running and you try to “git push”, you get “bash: gitorious: No such file or directory”. Why the hack is this? We symlinked the gitorious executable earlier:

$ sudo ln -s /var/www/git.myserver.com/gitorious/script/gitorious /usr/local/bin/gitorious

This obviously means that /usr/local/bin is not in $PATH by default on Gentoo. Let’s check this:

keytoaster@veda ~ $ sudo su - gitorious
gitorious@veda ~ $ echo $PATH
/usr/local/bin:/usr/bin:/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.4.3:/opt/blackdown-jdk-1.4.2.03/bin:/opt/blackdown-jdk-1.4.2.03/jre/bin:/usr/qt/3/bin:/usr/games/bin:/opt/vmware/server/console/bin
gitorious@veda ~ $

It’s there?! Oh wait, that’s a login shell, so /etc/profile and the likes are being processed. Let’s take a look at that:

if [ "$EUID" = "0" ] || [ "$USER" = "root" ] ; then
        PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:${ROOTPATH}"
else
        PATH="/usr/local/bin:/usr/bin:/bin:${PATH}"
fi

Yup, that’s clearly where it comes from. This suggests that when we try git push, it won’t be run as a login shell (obviously). So let’s see how $PATH looks like when we pass an empty environment and run a new bash:

gitorious@veda ~ $ env -i bash
gitorious@veda /var/gitorious/home $ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
gitorious@veda /var/gitorious/home $

Ahem, yeah. sbin stuff? That’s certainly surprising at first, but after some research, we find that that is the default value for $PATH unless it gets overwritten (by e.g. /etc/profile).

But hang on, /usr/local/bin is in there, too. So why isn’t it there when we git push? Probably the environment is modified when we log in via ssh. Let’s see:

keytoaster@veda ~ $ ssh test@localhost bash -i
Password:
bash: cannot set terminal process group (-1): Invalid argument
bash: no job control in this shell
test@veda ~ $ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin
echo $PATH

(I’ve used another unix account here, as gitorious is configured to use SSH keys.)

Yay, there we go, no /usr/local/bin in there. A look into the ssh man page reveals the following:

ENVIRONMENT
ssh will normally set the following environment variables:
PATH                  Set to the default PATH, as specified when compiling ssh.

So apparently the value of the default PATH when you log in via SSH without a login shell depends on what is was set to at compile time. Let’s confirm this by looking at configure of the openssh source code:

veda openssh-5.3p1 # ./configure --help | grep default-path
--with-default-path=    Specify default \$PATH environment for server
veda openssh-5.3p1 #

Yup, that’s it. The default $PATH is set by the SSH server. This explains why the gitorious installation guide symlinks it to /usr/local/bin: /usr/local/bin is in the default path for SSH on whatever distro the author used. It’s just that Gentoo behaves different: The default –prefix for configure is /usr/local. As such, configure makes sure that /usr/local/bin is in the default $PATH in order to make scp work (see below). However, econf in Gentoo ebuilds pass –prefix=/usr. As /usr/bin is already in STDPATH (see /usr/include/paths.h), nothing else happens, no /usr/local stuff is involved. The code from configure.ac that handles this is as follows:

# Whether to mess with the default path
[...]
                [ user_path=`cat conftest.stdpath` ],
                [ user_path="/usr/bin:/bin:/usr/sbin:/sbin" ],
                [ user_path="/usr/bin:/bin:/usr/sbin:/sbin" ]
        )
# make sure $bindir is in USER_PATH so scp will work
                t_bindir=`eval echo ${bindir}`
                case $t_bindir in
                        NONE/*) t_bindir=`echo $t_bindir | sed "s~NONE~$prefix~"` ;;
                esac
                case $t_bindir in
                        NONE/*) t_bindir=`echo $t_bindir | sed "s~NONE~$ac_default_prefix~"` ;;
                esac
                echo $user_path | grep ":$t_bindir"  > /dev/null 2>&1
                if test $? -ne 0  ; then
                        echo $user_path | grep "^$t_bindir"  > /dev/null 2>&1
                        if test $? -ne 0  ; then
                                user_path=$user_path:$t_bindir
                                AC_MSG_RESULT(Adding $t_bindir to USER_PATH so scp will work)
                        fi
                fi
        fi ]
)

The question is: Do we consider this a bug? I for one would expect that the default $PATH in an SSH environment is similar to the default $PATH set by /etc/profile. As such I would at least expect it to contain /usr/local/bin:/usr/bin:/bin.

Thanks go to Christian Ruppert for helping me.

Discovering tmux

Okay, a few days ago I discovered tmux, an alternative to GNU screen. Its website advertises, amongst others, the following:

  • A powerful, consistent, well-documented and easily scriptable command interface.
  • A window may be split horizontally and vertically into panes.
  • Panes can be freely moved and resized, or arranged into one of four preset layouts.

The screenshots there confirm that this is exactly what I’ve always been missing in screen. Just the fact that you can split your window into multiple panes, resize them, detach, and later attach the session again, without losing the split/layout, was sufficient to me to take a deeper look at tmux.

The website doesn’t feature a lot of documentation as far as I can see, but there is no need to: The tmux manpage is very easy to read and helped me understand how tmux works and how to migrate my configuration from screen. To make the latter easier, I used one of the example configuration files from the SCM and modified it to suit my needs. I’ll paste it here, but I’ll probably provide some of my other dotfiles as well in a later post. But first a screenshot:

tmux window split into three panes: irssi at the bottom, emerge output at the top left, htop top right

# Derived from Thayer Williams's config.

# Set some screen-like behaviour options {
unbind Space
bind-key Space copy-mode
# set prefix key to ctrl+a until I have time to adapt
unbind C-b
set -g prefix C-a

# activate vi key bindings
setw -g mode-keys vi

# send the prefix to client inside window (ala nested sessions)
bind-key a send-prefix

# toggle last window
bind-key C-a last-window

# confirm before killing a window or the server
bind-key k confirm kill-window
bind-key K confirm kill-server

# }

# toggle statusbar
bind-key b set-option status

# ctrl+left/right cycles thru windows
bind-key -n C-right next
bind-key -n C-left prev

# open a man page in new window
bind / command-prompt "split-window 'exec man %%'"

# quick view of processes
bind '~' split-window "exec htop"

# scrollback buffer n lines
set -g history-limit 20000

# listen for activity on all windows
set -g bell-action any

# on-screen time for display-panes in ms
set -g display-panes-time 2000

# start window indexing at one instead of zero
set -g base-index 1

# enable wm window titles
set -g set-titles on

# wm window title string (uses statusbar variables)
set -g set-titles-string "#T"

# statusbar --------------------------------------------------------------

set -g display-time 2000

# Update status bar (load average) every x seconds
set -g status-interval 8

# default statusbar colors
set -g status-fg white
set -g status-bg black
set -g status-attr default

# default window title colors
set-window-option -g window-status-fg white
set-window-option -g window-status-bg default
set-window-option -g window-status-attr default

# active window title colors
set-window-option -g window-status-current-fg white
set-window-option -g window-status-current-bg red
set-window-option -g window-status-current-attr bright

# command/message line colors
set -g message-fg white
set -g message-bg black
set -g message-attr bright

# left align the window list
set -g status-justify left

set -g status-left ""
set -g status-right "#[bright]|#[default]#H #[fg=cyan]#(cat /proc/loadavg | cut -d \" \" -f 1,2,3)"

The last line is interesting, too.  Writing that format string is pretty forward when you have the man page opened. In contrast to that, it was a PITA for GNU screen, for which it looks like this:

hardstatus string "%{= kW}%-Lw%{= gW}%50>%n%f* %t%{-}%+Lw %= |%{w}%H%{.c} %l"

Seems the tmux variant is easier to read. :)

UMTS becoming more widespread

You might remember my previous entry about my UMTS setup, that was written only about 6 months ago. At that time it was hardly possible to find any hints on the subject on the Internet. Apparently UMTS has now become more widespread, probably not least due to the availability of new smartphones and business people wanting to realize “mobile Internet everywhere”. Finding information today seems far too easy. I actually just recalled this while I was reading Christian’s entry who seems to have tried a similar approach to mine and who ran into the same questions and problems as I did. Even Gentoo Wiki features an article on how to get the Huawei E220 working, also with wvdial.

So it is now technically possible to provide people with Internet access anywhere. Yet my provider still doesn’t manage to provide me a DSL line with more than 3 MBit/s at home. :(

Bash: Renaming files

Today I was looking for a short command on renaming files whose filenames contain whitespaces that shall be replaced with underscores, e.g. “New Document.txt” shall become “New_Document.txt”. I wasn’t able to find any, so I came up with my own solution:

IFS=$'\n'; for i in $(ls *\ *); do mv $i $(echo $i | sed -e 's/ /_/g') ; done

The goal was to accomplish this using bash and basic tools only. This should also work in other shells, but I haven’t tested it. Zsh has the almighty zmv extension that makes the whole job easier, but that misses the goal a bit.

Does anyone know a simpler solution? Suggestions appreciated.

UMTS with Tchibo Internet Stick

Yesterday my physics teacher talked about UMTS. He also showed me his UMTS drive and told me the monthly fee is only 19,99 Euros and it doesn’t have any contract duration. After all it’s prepaid. This sounded way too good and I purchased a “Tchibo Internet Stick” directly after school.
Turns out this is a Huawei E160 HSDPA Stick. I tried for hours to get it working, but I failed. Running it on Windows was no problem at all and I was able to establish a connection immediately using the “Mobile Connect” software.
On Linux, however, this software is not available of course. So one has to use wvdial and/or pppd or something similar. Establishing the connection worked, but I couldn’t ping any machine or send packages of any kind. I thought the routing was broken, but I later found out that this was not the case: I just had to send another modem command which includes the APN. Several HowTos I found on the Internet didn’t do that, so I assumed I didn’t have to do it either. I then found a thread on handy-faq.de which covers everything I need.

So here’s a small guide on how to get the Huawei E160 working on Gentoo Linux.

First you need to have the following options activated in the kernel:

  • CONFIG_PPP
  • CONFIG_PPP_ASYNC
  • CONFIG_PPP_SYNC_TTY
  • CONFIG_PPP_DEFLATE
  • CONFIG_PPP_BSDCOMP
  • CONFIG_PPP_MPPE
  • CONFIG_PPPOE
  • CONFIG_USB_SERIAL
  • CONFIG_USB_SERIAL_GENERIC or CONFIG_USB_SERIAL_OPTION (both work for me)

When plugging the device in, dmesg shows the following:

usb 1-5: new high speed USB device using ehci_hcd and address 10
usb 1-5: configuration #1 chosen from 1 choice
usb-storage: probe of 1-5:1.0 failed with error -5
option 1-5:1.0: GSM modem (1-port) converter detected
usb 1-5: GSM modem (1-port) converter now attached to ttyUSB0
usb-storage: probe of 1-5:1.1 failed with error -5
option 1-5:1.1: GSM modem (1-port) converter detected
usb 1-5: GSM modem (1-port) converter now attached to ttyUSB1

Using usb_modeswitch is not necessary. The device will immediately be recognized as a modem.

Now everything you need to do is to make your /etc/wvdial.conf look like the following:

[Dialer pin]
Modem = /dev/ttyUSB0
Init1 = AT+CPIN=1234

[Dialer huawei]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = AT+CGDCONT=1,"IP","webmobil1"
ISDN = 0
Modem = /dev/ttyUSB0
Modem Type = Analog Modem
Baud = 460800
Stupid Mode = yes
New PPPD = yes
Username = ;
Password = ;
Phone = *99#
Check Def Route = yes

Now run wvdial pin and wvdial huawei:


veda ~ # wvdial pin
--> WvDial: Internet dialer version 1.60
--> Cannot get information for serial port.
--> Initializing modem.
--> Sending: AT+CPIN=6369
AT+CPIN=6369
OK
--> Modem initialized.
--> Configuration does not specify a valid phone number.
--> Configuration does not specify a valid login name.
--> Configuration does not specify a valid password.
veda ~ # wvdial huawei
--> WvDial: Internet dialer version 1.60
--> Cannot get information for serial port.
--> Initializing modem.
--> Sending: ATZ
ATZ
OK
--> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
OK
--> Sending: AT+CGDCONT=1,"IP","webmobil1"
AT+CGDCONT=1,"IP","webmobil1"
OK
--> Modem initialized.
--> Sending: ATDT*99#
--> Waiting for carrier.
ATDT*99#
CONNECT
--> Carrier detected. Starting PPP immediately.
--> Starting pppd at Thu Jun 11 23:25:48 2009
--> Pid of pppd: 17514
--> pppd: [08][7f]
--> Using interface ppp0
--> pppd: [08][7f]
--> pppd: [08][7f]
--> pppd: [08][7f]
--> pppd: [08][7f]
--> pppd: [08][7f]
--> pppd: [08][7f]
--> pppd: [08][7f]
--> Authentication (CHAP) started
--> pppd: [08][7f]
--> pppd: [08][7f]
--> Authentication (CHAP) successful
--> pppd: [08][7f]
--> pppd: [08][7f]
--> pppd: [08][7f]
--> pppd: [08][7f]
--> pppd: [08][7f]
--> pppd: [08][7f]
--> pppd: [08][7f]
--> pppd: [08][7f]
--> pppd: [08][7f]
--> pppd: [08][7f]
--> pppd: [08][7f]
--> pppd: [08][7f]
--> pppd: [08][7f]
--> pppd: [08][7f]
--> pppd: [08][7f]
--> pppd: [08][7f]
--> pppd: [08][7f]
--> pppd: [08][7f]
--> pppd: [08][7f]
--> pppd: [08][7f]
--> pppd: [08][7f]
--> local IP address 10.73.7.96
--> pppd: [08][7f]
--> remote IP address 10.64.64.64
--> pppd: [08][7f]
--> primary DNS address 193.189.244.205
--> pppd: [08][7f]
--> secondary DNS address 193.189.244.197
--> pppd: [08][7f]
--> pppd: [08][7f]
--> Script /etc/ppp/ip-up run successful
--> Default route Ok.
--> Nameserver (DNS) Ok.
--> Connected... Press Ctrl-C to disconnect
--> pppd: [08][7f]

Now you should be up and running.
Just for the record, I had the same output before, even when I couldn't ping anything. I was missing the Init3 line in wvdial.conf.