meoow 发表于 2015-5-12 11:19:51

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

比如说 派的IP是DHCP分配的,想连接SSH需要知道IP是多少。或者发起连接SSH的电脑不在路由的局域网内,需要在路由上设置静态路由,或者端口映射。
这样比较麻烦,可以在派上建立一个upnp客户端服务,自动向路由注册端口映射,这样ssh访问pi的时候直接访问路由器就可以了。

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

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

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

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

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

以后只要连接
ssh user@router_ip -p 22022即可

herxue 发表于 2015-5-20 11:07:24

坐个沙发先
页: [1]
查看完整版本: 利用UPnP做端口转发,省去了设置静态IP和静态路由的麻烦