La configuración de la tarjeta de red dual de Android proporciona acceso a la red externa para las PC conectadas al host de Android (1)

Ayer completé la depuración de la configuración de la tarjeta de red dual de Linux para proporcionar acceso a la red externa para las PC conectadas al host de Linux. Hoy quiero probar si el sistema Android lo admite. Pensé que podía usar el script de ayer y descubrí que hay todavía algunas diferencias. Este artículo es generalmente similar al proceso de depuración de Linux. Este artículo simplemente verifica la viabilidad del sistema Android y verifica algunos pasos en detalle y completa un script de Android. He verificado la secuencia de comandos y varios comandos de estado al menos 10 veces y es bastante bueno.Problemático.

Teniendo en cuenta la complejidad del sistema Android, planeo agregar esta función a la interfaz del sistema cuando tenga tiempo de configurar la configuración de red interna y externa de las tarjetas de red duales después de que se complete la llamada del código.

La configuración de la tarjeta de red dual de Android proporciona acceso a la red externa para las PC conectadas al host de Android

En este artículo, presentaré cómo utilizar la placa base RK3568 Android11 ​​para proporcionar acceso a la red externa a una PC conectada a su puerto de red interno. Utilizaré un caso real de solución de problemas para explicar este proceso en detalle y, finalmente, implementaré varias comprobaciones y configuraciones mediante scripts.

fondo

El cliente dispone de una placa base RK3568 Android11, que dispone de dos interfaces Ethernet: eth0 (red interna) y eth1 (red externa). El cliente desea proporcionar acceso a la red externa a través de RK3568 a una PC con Windows conectada a eth0.

En resumen, la PC con Windows está conectada al puerto de red interno de la placa base RK3568 a través de un cable de red, y luego se puede acceder a www.baidu.com (red externa) desde la PC con Windows.

Configuración de PC con Windows

La PC es Windows 10 y la puerta de enlace predeterminada debe configurarse a través de la interfaz gráfica o la línea de comando:

  1. Abra el Panel de control.
  2. Seleccione Centro de redes y recursos compartidos.
  3. A la izquierda, haz clic en "Cambiar configuración del adaptador".
  4. Haga clic derecho en la conexión de red (probablemente "Ethernet" o algo similar) y seleccione "Propiedades".
  5. Busque y haga doble clic en "Protocolo de Internet versión 4 (TCP/IPv4)" en la lista.
  6. Seleccione "Usar la siguiente dirección IP" e ingrese su dirección IP y máscara de subred. En Puerta de enlace predeterminada, ingrese 192.168.52.2.
  7. Haga clic en "Aceptar" para guardar la configuración.
    Insertar descripción de la imagen aquí
#执行ipconfig简单确认下
ipconfig

![Configuración de red de PC con Windows]

Configuración de RK3568 Android11

Configurar NAT (traducción de direcciones de red)

Asegúrese de tener configuradas las reglas NAT correctas en el RK3568.

iptables -F
iptables -t nat -F
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

Configurar un entorno de puerto de red dual

Si no hay una interfaz en la misma subred que la puerta de enlace que está intentando agregar, es posible que necesite configurar una interfaz para usar esta subred. Por ejemplo, si tiene una eth0interfaz llamada , puede asignarle una dirección IP usando el siguiente comando:

ifconfig eth0 192.168.52.2 netmask 255.255.255.0 up

192.168.52.2es una dirección IP de ejemplo, puede elegir cualquier dirección disponible en esa subred.

Configurar enrutamiento

Para que RK3568 reenvíe el tráfico correctamente, es necesario configurar la tabla de enrutamiento. Las rutas se pueden agregar usando el siguiente comando:

ip route add default via 192.168.1.1 dev eth1 metric 102
ip route add 192.168.1.0/24 dev eth1 metric 102
ip route add 192.168.52.0/24 dev eth0

Aquí 192.168.1.1está la puerta de enlace predeterminada de la interfaz de red externa eth1, 192.168.1.0/24la subred donde se encuentra la interfaz de red externa eth1 192.168.52.0/24y la subred donde se encuentra la interfaz de red interna eth0.

Pasos para solucionar problemas

Si su PC con Windows 10 no puede acceder a la red externa a través de RK3568, debe realizar una serie de pasos de solución de problemas.

Prueba de ping :

  • Haga ping a la dirección IP interna del RK3568 (192.168.52.2) desde su PC. Asegúrate de que esté abierto.
  • Haga ping a la dirección IP de la PC (192.168.52.1) desde el RK3568. Asegúrate de que también sea transitable.
  • Haga ping al sitio web externo desde RK3568, como 8.8.8.8. Asegúrese de que la red externa sea accesible.
  • Haga ping a 8.8.8.8 desde la PC. Si esto no funciona, pero todos los pasos anteriores sí, el problema puede estar en NAT o en el enrutamiento.

Verifique la configuración de NAT : asegúrese de que NAT esté configurado correctamente en el RK3568. Ejecute el siguiente comando nuevamente:

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

Verifique DNS : el problema puede estar relacionado con la resolución de DNS. Intente hacer ping a un nombre de dominio desde su PC, por ejemplo www.baidu.com. Si esto no funciona, pero hacer ping a 8.8.8.8 sí, es posible que necesites configurar un DNS estático en tu PC, como 8.8.8.8 y 8.8.4.4 de Google.

Configuración del firewall : asegúrese de que el firewall del RK3568 permita el paso del tráfico. Ejecute el siguiente comando:

iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

Guion

Para configurar y verificar fácilmente el entorno de red, puede usar el siguiente script para ejecutar automáticamente los pasos anteriores:
ejecútelo una vez y, si falla, ejecútelo nuevamente, inicie el iniciador y luego ejecútelo nuevamente; de ​​lo contrario, la red no estar levantado.

#!/system/bin/sh

# 检查参数数量
if [ "$#" -ne 3 ]; then
    echo "使用方法: $0 <内网接口名> <内网接口IP地址> <外网接口名>"
    exit 1
fi

# 获取参数
INTERNAL_IF="$1"
IPADDR="$2"
EXTERNAL_IF="$3"

# 启用IP转发
echo "启用IP转发..."
echo 1 > /proc/sys/net/ipv4/ip_forward

# 清除现有的iptables规则
echo "清除现有的iptables规则..."
iptables -F
iptables -t nat -F

# 设置NAT规则
echo "设置NAT规则..."
iptables -t nat -A POSTROUTING -o $EXTERNAL_IF -j MASQUERADE

# 配置内网接口
echo "配置内网接口 $INTERNAL_IF..."
ifconfig $INTERNAL_IF $IPADDR netmask 255.255.255.0 up

# 等待一段时间,确保内网接口已经启动并配置
sleep 5

# 删除可能存在的默认路由
ip route del default 2>/dev/null

# 配置路由
echo "配置路由..."
ip route add default via 192.168.1.1 dev $EXTERNAL_IF metric 102
ip route add 192.168.1.0/24 dev $EXTERNAL_IF metric 102
ip route add 192.168.52.0/24 dev $INTERNAL_IF

# 检查配置是否正确
ETH0_IP=$(ifconfig $INTERNAL_IF | grep 'inet addr' | cut -d: -f2 | awk '{print $1}')
ETH1_IP=$(ifconfig $EXTERNAL_IF | grep 'inet addr' | cut -d: -f2 | awk '{print $1}')

if [ "$ETH0_IP" != "$IPADDR" ] || [ "$ETH1_IP" != "192.168.1.10" ]; then
    # 如果配置不正确,可以在此处添加其他命令或者发送通知
    echo "网络配置错误!"
fi

# 测试外网连接
echo "测试外网连接..."
ping -c 4 8.8.8.8

echo "脚本执行完毕!"

Ahora puede ejecutar el script usando el siguiente comando:

./enable_nat_routing.sh eth0 192.168.52.2 eth1

Resultados de la ejecución del script:

rk3568_r:/vendor # ./setup_network.sh
RTNETLINK answers: No such process
rk3568_r:/vendor # busybox route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.1     0.0.0.0         UG    102    0        0 eth1
192.168.1.0     *               255.255.255.0   U     102    0        0 eth1
192.168.52.0    *               255.255.255.0   U     0      0        0 eth0
rk3568_r:/vendor # ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 66:64:66:98:2b:a4  Driver rk_gmac-dwmac
          inet addr:192.168.52.2  Bcast:192.168.52.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1249 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1496 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:178245 TX bytes:270750
          Interrupt:38

rk3568_r:/vendor # ifconfig eth1
eth1      Link encap:Ethernet  HWaddr 0a:0c:11:22:33:c7  Driver rk_gmac-dwmac
          inet addr:192.168.1.10  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::5103:8c9e:a84e:17f8/64 Scope: Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2576 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1588 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:412726 TX bytes:230968
          Interrupt:42

Por resolver y dudas:

  1. ¿RK 3568 Android no puede hacer ping a la PC?
  2. ¿La PC no puede hacer ping a RK3568?
  3. Implemente la interfaz del sistema Android para completar la configuración de las reglas de acceso a Internet de la tarjeta de red dual.

Agregaré más a los errores anteriores cuando tenga tiempo.

Resumir:

Proporcionar acceso a la red a dispositivos conectados a un host de Android puede requerir varios pasos de configuración. Al examinar cuidadosamente cada configuración y realizar una solución de problemas paso a paso, podemos resolver con éxito este tipo de problemas.

Supongo que te gusta

Origin blog.csdn.net/SHH_1064994894/article/details/132556573
Recomendado
Clasificación