树莓派论坛

 找回密码
 立即注册

利用UPnP做端口转发,省去了设置静态IP和静态路由的麻烦

meoow 发表于 2015-5-12 11:19:51 | 显示全部楼层 |阅读模式
比如说 派的IP是DHCP分配的,想连接SSH需要知道IP是多少。或者发起连接SSH的电脑不在路由的局域网内,需要在路由上设置静态路由,或者端口映射。
这样比较麻烦,可以在派上建立一个upnp客户端服务,自动向路由注册端口映射,这样ssh访问pi的时候直接访问路由器就可以了。

准备:
http://miniupnp.free.fr/
在这里下载miniupnpc,解压后直接make就可以,把编译出来的upnpc-static重命名为upnpc放到系统的PATH下即可

写一个服务脚本:
  1. #!/bin/bash

  2. while true; do
  3.     cur_ip=$(ifconfig wlan0|awk '$1=="inet"{print $2}')
  4.     if [[ $cur_ip =~ ^[0-9]{0,3}(.[0-9]{0,3}){3}$ ]];then
  5.         upnpc -d 22022 TCP
  6.         upnpc -e raspberry_pi_ssh -a $cur_ip 22 22022 TCP 300
  7.         sleep 301
  8.     else
  9.         sleep 30
  10.     fi
  11.   sleep 5
  12. done
复制代码

设置为开机自动运行即可,如果是systemd的可以写一个service,让其在NetworkManager启动后运行

这里设置的是路由的22022映射到pi的22端口

以后只要连接
  1. ssh user@router_ip -p 22022
复制代码
即可

herxue 发表于 2015-5-20 11:07:24 | 显示全部楼层
坐个沙发先
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版 | Archiver | 树莓派论坛 ( 粤ICP备15075382号-1 )