技术解析

Raspberry Pi技术上求救,有铜币啊银币之类的奖哦
0
2021-07-21 11:24:46
idczone
嗯,大家好。我呢,刚买了一块Pi。

我家里用的是长城小区联通宽带,好像所有小区公网IP都是同一个(最起码我家的所有电脑公网ip都是同一个)。我呢在路由器管理那里设置了端口映射,但是没效果,我就是想在外网访问树莓派。问了一个群。群里回答是没权限改,不能生效。

还有人给出的解决是用vps做ssh隧道来连接树莓派,求救的说。至于奖励嘛,就看谁的方案最简单适合啦。奖励你们自己订,当然我只有27银76铜的说,不要太高。^_^
需要独立IP 联通不分配的话 自己买VPS

花生壳

他们说没有公网IP花生壳也没用
嗯?买vps之后呢?怎么建立外网和vps再和pi之间的连接?

Google Chrome's Remote Desktop plugin

http://www.ip138.com/ 这里显示的ip和你的路由器上面的ip是一样的吗?

问题是我外网根本不能访问家里的pi,都ping不通

可能pi防火墙拦截了


没有公网IP就只能想办法利用反向链接
因为现在电信ADSL好多都是内网地址了,所以我跟你情况差不多

你家里是一个局域网,从外网当然不能访问到啦,如果你们小区的公网IP是同一个的话,说明你们小区是通过交换机分出来的。正如1楼所说,你需要一个独立IP,或者自己买一个VPS,至于你提到的外网和VPS和PI之间的连接问题,我是这样理解的(不知道是否正确),很明显外网可以访问到VPS吧,而你处于内网的PI也能访问到VPS吧,那么此时VPS就相当于一个中介了(和PI一直建立一条连接),可以把外网用户的请求转到你的PI上,从而实现了间接的外网访问PI。

服务器只是做udp打洞,最终协议还是通过机器对机器的udp,需要借助公网服务器反向隧道或者第三方服务建立连接

openvpn + vps
一般vps可购买多个IP,可将vps多余的ip地址通过nat映射到家里的机器,或通过tap设备桥接直接给家里的机器分配VPS上的公网IP。

没有公网IP没办法控制网关做端口映射,唯一可行的办法就是利用外网有独立IP的机器做vpn。用PI连接有公网IP的机器,获取一个虚拟网段的地址。用你想访问PI的机器也拨到这个虚拟网络内。需要的话改下路由表。嗯,就是这么简单

1、换有独立ip的电信或联通adsl
2、vps/vpn可行,但速度也是奇慢无比。别折腾
3、换个玩法,不做远控,只做监控

干啥用啊,提供网页等广泛服务的话没内网映射权限是不用想了,没戏。
自己用的话,比如存个资料,开个小ssh啥的,可以用比如hamachi,softenther vpn。这样可以组虚拟网。

或者,再找找类似http://code.google.com/p/udponnat/wiki/What_is_UDPonNAT_CN 的东西,只是有些没arm版本,例如teamviewer,所以暂时装不上。

恩,我现在的首选是用vps组建和外网的中介。但是你们说的用vps组建的话速度会奇慢无比,这个我就有点郁闷了。本来我是准备建个小型lnmp,放个php的。但是速度问题有点伤脑筋,郁闷啊。

谢谢大家了,那就给我用vps组建中介的教程吧。谢谢

甭折腾了,果断换电信宽带独立分配IP

没办法,住别人家里。用的是联通,以后自己租房子的时候再换网线吧

用VPS加SSH是最简单的做法了,几乎没什么需要配置的,有了SSH通道其它的都好说了。
可以参考:
http://blog.csdn.net/xuyaqun/article/details/6036783
http://mirko.windhoff.net/how_to/make_a_reverse_ssh_tunnel

恩,不过用vps挺麻烦的。还是慢慢折腾pi,以后换网线吧。

没有一个独立IP 那就只能用穿透的方法。用花生壳的内网穿透吧。不过收费的哦

1. 外币信用卡申请一个AWS Free Tier。
2. 客户端Macbook Pro,AWS,Pi间创建SSH公私钥实现免密码登录。
3. Pi上.ssh目录里的config文件
Host *
AddressFamily inet
Compression yes
CompressionLevel 9
ServerAliveInterval 30
Host box
User nil
Hostname xx.xx.xx.xx
IdentityFile ~/.ssh/id_rsa
4. Pi上创建reverse_ssh_tunnel,并chmod +x reverse_ssh_tunnel
This is the username on your Pi who has public key authentication setup at the middleman
USER_TO_SSH_IN_AS=pi
This is the username and hostname/IP address for the middleman (username on AWS)
MIDDLEMAN_SERVER_AND_USERNAME=nil
Port that the middleman will listen on (use this value as the -p argument when sshing)
PORT_MIDDLEMAN_WILL_LISTEN_ON=10888
Connection monitoring port
AUTOSSH_PORT=20888
su -c "autossh -M${AUTOSSH_PORT} -f -q -N -R '*:${PORT_MIDDLEMAN_WILL_LISTEN_ON}:localhost:22' ${MIDDLEMAN_SERVER_AND_USERNAME} -oLogLevel=error -oUserKnownHostsFile=/dev/null -oStrictHostKeyChecking=no" ${USER_TO_SSH_IN_AS}
我把reverse_ssh_tunnel放在了/etc/network/if-up.d/目录下,这样网络接通时会自动执行该脚本里的autossh。
5. AWS上.ssh目录里的config文件
Host *
AddressFamily inet
Compression yes
CompressionLevel 9
ServerAliveInterval 30
Host pi
User pi
Hostname 127.0.0.1
Port 10888
IdentityFile ~/.ssh/id_dsa
6. 客户端Macbook Pro上先 ssh aws 连接到AWS服务器上,再 ssh pi 就可以反向连接到Raspberry Pi上了。嫌麻烦可以再配一下自动连接aws中间跳板。

好高级

呃,第4步Pi上要先安装 autossh (sudo apt-get install autossh)。

建议你直接换宽带

http://sunlogin.oray.com/zh_CN/download/controll-linux-client.html

建议你先拿台电脑开个类似的服务试试能不能访问,记得做好端口映射。很多 ISP 会过滤常用端口(比如 80)。楼上 N 多人说的 VPN+SSH tunnel 是很好的方案。

谢谢大家了

1. 路由器自带花生壳程序,这个一般在路由器设置里面有,输入你申请的花生壳账号和密码就可以了。
2. 路由器端口转发
3. 访问花生壳那域名即可。
我这边是四川电信,pi放家里,可以在公司ssh回去,挂BT之类的。

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服