18 if ( my $dev = $ENV{DEV} ) {
19 warn "W: running under device $dev, not configuring network\n";
23 my $ifconfig = ifconfig('virtual');
24 if ( $ifconfig !~ m{UP} ) {
25 system "brctl addbr virtual";
26 system "brctl setfd virtual 0";
27 system("/sbin/ifconfig virtual $server::ip netmask $server::netmask") == 0 || warn "W: $!";
29 warn "using existing virtual configuration\n$ifconfig\n";
31 if ( my $dev = ip::default_route_dev() ) {
32 system "sudo sysctl -w net.ipv4.ip_forward=1";
33 my $network = ip::from_int( ip::to_int($server::ip) & ip::to_int($server::netmask) );
34 warn "# network $network";
35 system "sudo iptables -t nat -L POSTROUTING -n | grep $network || sudo iptables -t nat -A POSTROUTING -s $server::ip/$server::netmask -o $dev -j MASQUERADE";
36 warn "masquarade to $dev";
42 if ( my $dev = $ENV{DEV} ) {
43 warn "W: running under device $dev, not configuring tap0\n";
47 if ( $server::ip !~ m{^172} ) {
48 warn "W: server ip mismetch, not configuring tap0\n";
52 my $interfaces = read_file '/etc/network/interfaces';
54 if ( $interfaces !~ m{tap0}s ) {
56 system "sudo apt-get install -y vde2";
58 write_file '/tmp/interfaces', qq{
61 iface tap0 inet static
63 netmask $server::netmask
65 # setup NAT for vde network
66 post-up sysctl -w net.ipv4.ip_forward=1
67 post-up iptables -t nat -A POSTROUTING -s $server::ip/$server::netmask -o wlan0 -j MASQUERADE
71 system q|sudo sh -c 'cat /tmp/interfaces >> /etc/network/interfaces'|;
72 system q|sudo sh -c 'usermod -G vde2-net -a $SUDO_USER'|;
76 my $ifconfig = ifconfig('tap0');
77 if ( $ifconfig =~ m{UP} ) {
78 $ifconfig =~ m{$server::ip}s && return 'up';
79 system("sudo /sbin/ifconfig tap0 $server::ip netmask $server::netmask") == 0 && return "ip changed $server::ip";
80 die "can't change IP address of tap0 to $server::ip";
82 die "bring interface up with: sudo ifup tap0\n";