26 |
system "brctl setfd virtual 0"; |
system "brctl setfd virtual 0"; |
27 |
system("/sbin/ifconfig virtual $server::ip netmask $server::netmask") == 0 || warn "W: $!"; |
system("/sbin/ifconfig virtual $server::ip netmask $server::netmask") == 0 || warn "W: $!"; |
28 |
} else { |
} else { |
29 |
server::setup_from_dev( 'virtual' ); |
warn "using existing virtual configuration\n$ifconfig\n"; |
30 |
} |
} |
31 |
if ( my $dev = ip::default_route_dev() ) { |
if ( my $dev = ip::default_route_dev() ) { |
32 |
system "sudo sysctl -w net.ipv4.ip_forward=1"; |
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) ); |
my $network = ip::from_int( ip::to_int($server::ip) & ip::to_int($server::netmask) ); |
34 |
warn "# network $network"; |
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 wlan0 -j MASQUERADE"; |
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"; |
warn "masquarade to $dev"; |
37 |
} |
} |
38 |
} |
} |