嵌入式linux实现NAT端口映射
场景:
1、嵌入式linux系统内已经在2个网卡,分别为eth0(内网物理网卡,ip地址:192.168.1.4)以及ppp1(VPN客户端通过PPTP协议拨号生成的虚拟网卡,ip地址:192.168.6.176)。
2、监控摄像头(ip地址:192.168.1.108,端口:37777)与eth0网卡处于同一个网段;监控摄像头客户端软件(ip地址:192.168.6.8)与ppp1网卡处于同一网段。
需求:
摄像头客户端软件无法跨网段直接访问摄像头,需要嵌入式linux系统做路由实现NAT端口映射,192.168.1.108:37777 <---> 192.168.6.176:10000。
解决方案:
1、确认嵌入式linux系统内已经安装iptables软件。
2、打开系统转发功能,命令:echo 1 > /proc/sys/net/ipv4/ip_forward
3、添加路由表,命令:route add -net 192.168.6.0 netmask 255.255.255.0 gw 192.168.6.1
4、添加NAT指令:iptables -t nat -A PREROUTING -d 192.168.6.176 -p tcp --dport 10000 -j DNAT --to-destination 192.168.1.108:37777
iptables -t nat -A POSTROUTING -d 192.168.1.108 -p tcp --dport 37777 -j SNAT --to 192.168.1.4
经过上述步骤,摄像头监控软件访问192.168.6.176:10000即访问192.168.1.108:37777,实际测试图像正常。