Android VpnService с использованием JSch SSH-соединения: подключается к серверу, но не имеет доступа к Интернету.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Android VpnService с использованием JSch SSH-соединения: подключается к серверу, но не имеет доступа к Интернету.

Сообщение Anonymous »

Я использую источник ниже для подключения к серверу через SSH. В программе нет никаких ошибок.
В верхней части экрана мобильного телефона появится значок ключа:
Изображение с VPN-подключением1.< /p>
Но у меня нет доступа к Интернету:
Изображение «Нет доступа к Интернету».
Я тестировал с помощью другое программное обеспечение, такое как napsternetV и NetMod (SSH), и проблема не в VPS. Почему не подключается Интернет?
MainActivity

Код: Выделить всё

package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.net.VpnService;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button startVpnButton = findViewById(R.id.start_vpn_button);
startVpnButton.setOnClickListener(v -> {
Intent intent = VpnService.prepare(getApplicationContext());
if (intent != null) {
startActivityForResult(intent, 0);
} else {
onActivityResult(0, RESULT_OK, null);
}
});
Button stopVpnButton = findViewById(R.id.stop_vpn_button);
stopVpnButton.setOnClickListener(v -> {
Intent intent = new Intent(getApplicationContext(), MyVpnService.class);
stopService(intent);
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
Intent intent = new Intent(getApplicationContext(), MyVpnService.class);
startService(intent);
}
}
}
MyVpnService

Код: Выделить всё

    package com.example.myapplication;
import android.content.Intent;
import android.net.VpnService;
import android.os.ParcelFileDescriptor;
import android.system.OsConstants;
import android.util.Log;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import java.io.IOException;

public class MyVpnService extends VpnService {
private ParcelFileDescriptor vpnInterface;
private Session sshSession;

// Implement onCreate, onStartCommand, and onDestroy methods
@Override
public void onCreate() {
super.onCreate();
// Initialize JSch and set up the SSH connection
JSch jsch = new JSch();
try {
sshSession = jsch.getSession("SERVER_USERNAME", "SERVER_IP", SERVER_PORT);
} catch (JSchException e) {

throw new RuntimeException(e);
}
sshSession.setPassword("SERVER_PASSWORD");
sshSession.setConfig("StrictHostKeyChecking", "no");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Thread vpnThread = new Thread(() ->  {
try {

sshSession.connect();
int port_forwarded = sshSession.setPortForwardingL(0, "localhost", 1080);

// Configure the VPN connection
VpnService.Builder builder = new VpnService.Builder();
builder.setSession("MyVpnService")
.addAddress("10.0.0.1", 24)
.addRoute("0.0.0.0", 0)
.addDnsServer("8.8.8.8")
.setBlocking(true)
.establish();

vpnInterface = builder.establish();

// Add this line to route all traffic through the VPN
builder.allowFamily(OsConstants.AF_INET);

} catch (Exception e) {

e.printStackTrace();
}
});
vpnThread.start();
return START_STICKY;
}

@Override
public void onDestroy() {
if (vpnInterface != null) {
try {
vpnInterface.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (sshSession != null) {
sshSession.disconnect();
}
super.onDestroy();
}

}
AndroidManifest В логах ошибок нет, программа работает отлично. Я даже ввел неверную информацию о сервере, и программа не подключилась к серверу. Это значит, что код работает правильно, но я не знаю, почему не подключается Интернет.
MainScreen Image

Подробнее здесь: https://stackoverflow.com/questions/762 ... ver-but-it
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»