return iso path
[pxelator] / lib / PXElator / network.pm
index 3408643..ecaf8e0 100644 (file)
@@ -6,6 +6,7 @@ use strict;
 use File::Slurp;
 
 use server;
+use ip;
 
 sub ifconfig {
        my $dev = shift;
@@ -25,7 +26,14 @@ sub setup {
                system "brctl setfd virtual 0";
                system("/sbin/ifconfig virtual $server::ip netmask $server::netmask") == 0 || warn "W: $!";
        } else {
-               warn "OK $ifconfig\n";
+               warn "using existing virtual configuration\n$ifconfig\n";
+       }
+       if ( my $dev = ip::default_route_dev() ) {
+               system "sudo sysctl -w net.ipv4.ip_forward=1";
+               my $network = ip::from_int( ip::to_int($server::ip) & ip::to_int($server::netmask) );
+               warn "# network $network";
+               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";
+               warn "masquarade to $dev";
        }
 }