我们经常会在路由器上面配置端口转发的规则,用来访问内网机器的某个端口,openwrt上面有很多中实现端口转发的方式。

1、端口转发

比如我想用wan口的IP,192.168.2.180,远程连接lan口内网192.168.18.235的ubuntu,如何实现:

  • 建立一个端口转发规则,将
    2222端口,访问路由器内网192.168.18.235ubuntu的22端口,

在防火墙下面添加如下规则cat /etc/config/firewall

config redirectoption enabled '1'option proto 'tcp'option comment 'ubuntu'option src_dport '2222'option dest_ip '192.168.18.235'option dest_port '22'option src 'wan'option target 'DNAT'option dest 'lan'

实际实现在iptable的nat表下面添加了如下规则

root@openwrt:/# iptables -t nat -nvL | grep 235307 23589 zone_lan_prerouting  all  --  br-lan *       0.0.0.0/0            0.0.0.0/0           0     0 SNAT       tcp  --  *      *       192.168.18.0/24      192.168.18.235       tcp dpt:22 /* @redirect[0] (reflection) */ to:192.168.18.1307 23589 prerouting_lan_rule  all  --  *      *       0.0.0.0/0            0.0.0.0/0            /* user chain for prerouting */0     0 DNAT       tcp  --  *      *       192.168.18.0/24      192.168.2.180        tcp dpt:2222 /* @redirect[0] (reflection) */ to:192.168.18.235:220     0 DNAT       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:2222 /* @redirect[0] */ to:192.168.18.235:22

这样通过wan ip加src_dport就可以访问到内网机器的ssh端口了。

2、DMZ

dmz就是加强版的端口转发,比如你内网IP里面有22端口给ssh用,也有80端口给web用,也有23端口给telnet用。如果用端口转发的话,你需要建立三条端口转发的规则。用dmz的话一下子就都可以了。

在防火墙下面添加如下规则cat /etc/config/firewall

config redirect 'dmz'option name 'dmz'option src 'wan'option proto 'tcp'option target 'DNAT'option dest_ip '192.168.18.235'option enabled '1'config redirect 'dmzudp'option name 'dmzudp'option src_port '!67'option src 'wan'option proto 'udp'option target 'DNAT'option dest_ip '192.168.18.235'option enabled '1'

实际实现在iptable的nat表下面添加了如下规则

root@openwrt:/# iptables -t nat -nvL | grep 2350     0 SNAT       tcp  --  *      *       192.168.18.0/24      192.168.18.235       /* dmz (reflection) */ to:192.168.18.10     0 SNAT       udp  --  *      *       192.168.18.0/24      192.168.18.235       /* dmzudp (reflection) */ to:192.168.18.10     0 DNAT       tcp  --  *      *       192.168.18.0/24      192.168.2.180        /* dmz (reflection) */ to:192.168.18.2350     0 DNAT       udp  --  *      *       192.168.18.0/24      192.168.2.180        /* dmzudp (reflection) */ to:192.168.18.2355   405 DNAT       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            /* dmz */ to:192.168.18.23526  2270 DNAT       udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp spt:!67 /* dmzudp */ to:192.168.18.23

3、Upnp

openwrt上面使用miniupnpd服务来实现upnp服务

root@zihome:# ps | grep mini
25503 root      1076 S    /usr/sbin/miniupnpd -f /var/etc/miniupnpd.conf
28450 root      1520 S    grep mini

/etc/config/upnpd里面的log_output设置成1,可以在logread下查看交互日志。

config upnpd 'config'option enable_natpmp '1'option enable_upnp '1'option secure_mode '1'option log_output '1'
开启upnp的时候:

打开控制面板->网络和 Internet->查看网络计算机和设备,可以看到路由器

右键查看属性可以看到路由器的信息

  • 制造商
  • 型号
  • 设备网页
  • mac地址
  • 唯一标识符
  • IP地址

抓包可以看到路由器发送SSDP广播包给239.255.255.250,NOTIFY消息内容包含上面信息。

关闭upnp的时候:

打开控制面板->网络和 Internet->查看网络计算机和设备,路由器丢失

抓包可以看到路由器发送SSDP广播包给239.255.255.250,NOTIFY消息内容被byebye。

upnp实现端口映射

upnp可以通过另一种方式实现端口映射,就是客户端告诉路由器说,我想要通过哪个端口应该到哪个端口,然后路由器帮忙建立端口转发规则。

ubuntu安装upnpc

sudo apt-get install -y miniupnpc

ubuntu的ssh添加2222端口,upnp默认只允许1024-65535端口的映射

config perm_ruleoption action 'allow'option ext_ports '1024-65535'option int_addr '0.0.0.0/0'option int_ports '1024-65535'option comment 'Allow high ports

sudo vim /etc/ssh/sshd_config

Port 22
Port 2222

sudo /etc/init.d/ssh restart

ubuntu 通过upnpc请求添加端口映射,2222内部端口,9000外部端口

upnpc -a 192.168.17.233 2222 9000 TCP

这时候在upnp.leases下面就会添加一条信息,iptable -t nat下面添加一条规则。完成端口映射

root@openwrt:/# cat /var/upnp.leases
TCP:9000:192.168.17.233:2222:1655716845:libminiupnpc

ubuntu 通过upnpc请求删除端口映射

upnpc -d 192.168.17.233 2222 9000 TCP
当开启迅雷下载的时候

会有如下信息被upnpd捕获到

root@openwrt:/# cat /var/upnp.leases
TCP:54366:192.168.17.151:53533:1655706396:PTL-000C29A6B88AGXGA
UDP:54366:192.168.17.151:54366:1655706396:PTL-000C29A6B88AGXGA
TCP:53532:192.168.17.151:53532:1655706396:PTL-000C29A6B88AGXGAroot@openwrt:/# iptables -t nat -nvLChain MINIUPNPD (1 references)pkts bytes target     prot opt in     out     source               destination         0     0 DNAT       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:63016 to:192.168.17.151:538660     0 DNAT       udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:63016 to:192.168.17.151:630160     0 DNAT       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:53864 to:192.168.17.151:53864

26-Openwrt 端口转发 dmz upnp相关推荐

  1. 端口、TCP/UDP、端口转发、UPnP

    1.什么是端口? 单个服务器可以同时运行多个服务或程序,并且这些服务是共享一个IP地址的,如同一个家庭共享一个街道地址.因此服务器必须知道哪个数据包相对应于哪个服务,这样才能准确将数据进行传输.而在网 ...

  2. openwrt端口转发功能

    在宿舍(局域网IP)远程控登录实验室PC(局域网IP)时,由于PC置于Openwrt下,无法直接远程连接,需要用到Openwrt的端口转发功能 第一步,允许防火墙端口转发功能(Network-> ...

  3. 保姆级-光猫改桥接-路由拨号-openwrt端口转发-阿里云DNS域名解析访问家中设备

    准备: 1.公网ip(江苏省电信,电话1分钟解决) 2.域名(最好备案了) 3.路由器(我的是红米AC2100刷openwrt,重点路由器要有动态dns服务的功能,端口转发功能什么路由器都有) 往期教 ...

  4. OpenWrt路由开启DDNS+端口转发进行外网访问

    OpenWrt路由开启DDNS+端口转发进行外网访问(LuCI界面实现) --开篇 一.准备工作 二.开机! 三.连接 --结尾 –开篇 本篇适用于一切装有OpenWrt系统的路由器/软路由,只要你保 ...

  5. OpenWrt设置.端口转发和远程访问路由器

    到Luci界面 网络->防火墙: 首先,先来说下如何设置端口转发.点击上方的 端口转发: 新建端口转发 处填写名称(随便)外网端口 内部IP地址 内网端口.图中的设置表示将外网82端口上的TCP ...

  6. Linux/Openwrt路由安装配置UPNP服务提高迅雷下载速度

    Linux/Openwrt路由安装配置UPNP服务提高迅雷下载速度 发布时间:September 7, 2012 // 分类:OpenWrt // 1 Comment 路由器下电脑为实现互联网端到端的 ...

  7. 内网端口 转发 穿透 工具简介

    目录 一.LCX 1.lcx 内网端口转发(类似于SSH远程转发-R) 2.本地端口转发(类似于SSH本地转发-L) 二.nc反弹 正向连接 反向连接 三.socks代理工具 (1)Earthworm ...

  8. 端口转发与代理工具 内网代理 内网反弹代理

    目录 一.LCX 二.nc 反弹 三.socks代理工具 四.frp 内网穿透利器 五.ngrok 内网穿透 理论上,任何接入互联网的计算机都是可访问的,但是如果目标主机处于内网,而我们又想和该目标主 ...

  9. pfSense2.32端口转发设置

    pfSense上的端口转发是一个相当简单的过程.以前版本添加端口转发时,还必须添加防火墙规则,以便流量转发到端口指定的内部IP地址. 现在创建端口转发定义时可以自动添加此规则,并且默认情况下已启用该选 ...

最新文章

  1. java事务写法_【Spring4】采用注释写法,事务回滚报错问题
  2. 可恶,新网互联又出问题了
  3. PHP整数取余返回负数解决办法
  4. poj 1077 eight
  5. MFC对话框播放8位512*512的像素数据
  6. Npgsql使用入门(三)【批量导入数据】
  7. 网易内部倡导用昵称代替哥姐总等称呼;TCL大股东误操作卖出500万股;Ant Design 4.6.2 发布| 极客头条
  8. PE接受失败:一场被迫发生的行业革命
  9. electron编写我们第一个hello world程序和文件引入
  10. 【Lintcode】507. Wiggle Sort II
  11. ios 表情符号 键盘_iOS自定义的emoji表情键盘
  12. 【计算情与思】大学生学习和发展的思考和建议
  13. Windows系统中VMWare虚拟机屏幕分辨率调整
  14. IT笔记-电脑内存满之系统报告过多问题
  15. 为什么同门硕士进了BAT拿高工资,而博士却要挤破头进985高校?
  16. Dalvik虚拟机垃圾收集(GC)过程分析
  17. 火车头采集器采集图片文章详细 教程
  18. 基于遗传算法的大规模工程优化设计方法初探
  19. vanish_3.0_ban
  20. 中乾文化,如何树立正确的财富观?

热门文章

  1. Java发红包案例(继承关系的应用)
  2. 关于微信PC版内置浏览器和IOS11以下系统打开页面白屏的问题
  3. 树莓派盒子性能监控管理
  4. TextView默认padding
  5. 龙芯2k按键中断驱动_字符设备驱动-高级篇按键中断程序驱动
  6. python笔记--使用solve算出黄金分割比近似值
  7. 【Cocos2d-X-2.1.4游戏引擎】发布第一个游戏
  8. 用友NC二次开发小技巧:服务端执行SQL语句的方法
  9. HTML+CSS+JavaScript❤制作浪漫气球520告白相册❤
  10. 达梦数据库DM8(二):新建表空间