虚拟路由器
将开发板配置为虚拟路由器就是使用SNAT对网络地址进行变换,将局域网内的IP转换为统一的公网IP,使得多个局域网设备可以使用一个IPV4地址访问互联网。
虚拟路由器实际使用的是netfilter/iptables工具进行配置。其中netfilter模块在内核中,iptables是应用层工具。在实际的应用中通过iptables在应用层对netfilter进行配置。因此需要在内核中配置支持netfilter,同时需要移植iptables工具。
【注】:本文仅介绍如何配置,不介绍iptables的具体使用方法以及网络数据包的流转路径。详细原理参考其它文章
一、iptables移植
参看根目录下工具移植.md的iptables部分
二、netfilter配置
本次的设置仅需要使能两个TARGET:NETFILTER_XT_NAT、IP_NF_TARGET_MASQUERADE
除此之外还有其它目标可以选,对应iptables的不同功能。如果没有对应的模块,使用时会提示未加载模块的异常。
需要记录日志需要使能:LOG目标
需要拦截指定的数据包:开启filter表,使能REJECT目标
需要匹配指定的协议类型:需要开启对应的协议支持
三、路由设置
每次上电执行
1 | 开启转发 |
或者通过下面的方式保存配置
1 | 配置开启转发 |
每次上电时加载配置
1 | 加载内核参数 |