-In this method i am trying to add google dns server to vpn interface but it doesnt work at all.It
work only local dns which is default dns server of gsm.
@Override
public int onStartCommand(Intent intent, int flags, int startId){
localAddress = CommonMethods.ipStringToInt(ipAddress);
packet = new byte[20000];
ipHeader = new IPHeader(packet, 0);
tcpHeader = new TCPHeader(packet, 20);
udpHeader = new UDPHeader(packet, 20);
dnsBuffer = ((ByteBuffer) ByteBuffer.wrap(packet).position(28)).slice();
proxy = new Proxy(this, 0);
proxy.start();
dnsProxy = new DnsProxy(this);
dnsProxy.start();
vpnThread = new Thread(new Runnable(){
@Override
public void run(){
mInterface = builder.setSession("VPNtoSocket")
.addAddress(ipAddress,32)
.addRoute("0.0.0.0", 0)
.addDnsServer("8.8.8.8");
//.addRoute("194.163.43.216", 32)
.establish();
FileInputStream vpnin = new FileInputStream(mInterface.getFileDescriptor());
vpnout = new FileOutputStream(mInterface.getFileDescriptor());
onStatusChanged(true);
try{
int size = 0;
while(size != -1 && !vpnThread.isInterrupted()){
while((size = vpnin.read(packet)) > 0 && !vpnThread.isInterrupted()){
if(dnsProxy.isInterrupted() || proxy.isInterrupted()){ //KILL SWITCH
vpnin.close();
throw new Exception("Server stopped.");
}
onIPPacketReceived(ipHeader, size);
}
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
vpnin.close();
vpnout.close();
if(mInterface != null){
mInterface.close();
mInterface = null;
}
kill();
}catch(Exception e){
}
}
}
}, "VPNtoSocket");
vpnThread.start();
return super.onStartCommand(intent, flags, startId);//START_STICKY;
}