nat.sh文件内容如下 #!/bin/bash local_ip=127.0.0.1 remote_ip=公网服务器ip remote_port=22 remote_user=root remote_password=服务器密码 target_port=("22:22222") for item in ${target_port[@]};do array=(${item//:/ }) the_local_port=${array[0]} the_remote_port=${array[1]} /usr/bin/ssh -o ServerAliveInterval=60 -o StrictHostKeyChecking=no -o ExitOnForwardFailure=yes -N -f -R $the_remote_port:$local_ip:$the_local_port $remote_user@$remote_ip -p $remote_port done 我将公钥放到了公网服务器,所以不需要密码的。 我手动执行这个nat.sh是没问题的,一切正常,但是开机启动就报连接公网服务器无权限。 我的开机启动脚本内容如下 [Unit] Description=nat After=multi-user.target [Service] Type=simple User=tom ExecStart=/home/tom/nat.sh Restart=always [Install] WantedBy=multi-user.target 错误日志 Jul 25 14:17:06 konka systemd[1]: Started nat.service - nat. Jul 25 14:17:07 konka nat.sh[3002]: Permission denied, please try again. Jul 25 14:17:07 konka nat.sh[3002]: Permission denied, please try again. Jul 25 14:17:07 konka nat.sh[3002]: root@ip地址: Permission denied (publickey,password). Jul 25 14:17:07 konka systemd[1]: nat.service: Main process exited, code=exited, status=255/EXCEPTION Jul 25 14:17:07 konka systemd[1]: nat.service: Failed with result 'exit-code'. Jul 25 14:17:07 konka systemd[1]: nat.service: Scheduled restart job, restart counter is at 5. Jul 25 14:17:07 konka systemd[1]: nat.service: Start request repeated too quickly. Jul 25 14:17:07 konka systemd[1]: nat.service: Failed with result 'exit-code'. Jul 25 14:17:07 konka systemd[1]: Failed to start nat.service - nat.
如题,我在一个博客里面看到了下表,里面标定双方都是端口限制锥形NAT的时候依旧可以打通P2P。但是我没有想明白是怎么实现的。 "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241014/eba78e24f272cb07ef518abaac94285e.png) 首先确认一下我的概念没有理解错误,"端口限制锥形NAT"在打通后,对应的"NAT公网IP:PORT"只有客户端请求的"服务器IP:PORT"才能访问,其他IP和该服务器的其他端口都不能访问该"NAT公网IP:PORT"。 假设A和B都是端口限制锥形NAT,为了简单起见我直接用客户端的名字来代指最后映射的NAT公网IP地址 1. A给S:80发送请求,建立映射 A:8000 - S:80 2. B给S:80发送请求,建立映射 B:9000 - S:80 3. 但是这两个NAT公网地址都只有S:80能发送请求,S没有办法让A和B直接和对方通信 所以双方都是端口限制锥形的NAT是以什么方式打通P2P的呢,还是说不能打通?求大佬解惑!