远程PC 共享USB链接车机

79 阅读1分钟

开发需求

在进行开发时,本地机器不支持编译Android的代码,使用了服务器进行代码编译,有时候需要进行调试工作. 因为网络原因,无法将设备接入网络。

多个步骤完成

  • 1 启用网络adb adb tcpip 5555
  • 2 配置转发,将本机的5555转发到5555端口 adb forward tcp:5555 tcp:5555
  • 3 配置NAT进行网络转发
    • 配置网络转发
    sysctl -w net.ipv4.ip_forward=1
    sysctl -w net.ipv4.conf.eth0.route_localnet=1
    
    • 配置SNAT和DNAT
    LOCAL_NETWORKS="192.168.xxx.yyy"
    sudo iptables -t nat -A PREROUTING -d ${LOCAL_NETWORKS} -p tcp --dport 5555 -j DNAT --to-destination 127.0.0.1:5555
    # 配置 POSTROUTING 链,进行源地址转换,确保返回的报文能正确路由
    sudo iptables -t nat -A POSTROUTING -d 127.0.0.1 -p tcp --dport 5555 -j SNAT --to-source ${LOCAL_NETWORKS}
    

配置adb逻辑

adb tcpip 5555
adb forward tcp:5555 tcp:5555

sysctl -w net.ipv4.ip_forward=1
sysctl -w net.ipv4.conf.eth0.route_localnet=1

LOCAL_NETWORKS="xxx.yyy.zzz.ddd"
sudo iptables -t nat -A PREROUTING -d ${LOCAL_NETWORKS} -p tcp --dport 5555 -j DNAT --to-destination 127.0.0.1:5555
# 配置 POSTROUTING 链,进行源地址转换,确保返回的报文能正确路由
sudo iptables -t nat -A POSTROUTING -d 127.0.0.1 -p tcp --dport 5555 -j SNAT --to-source ${LOCAL_NETWORKS}