Linux ip_forward 数据包转发

出于安全考虑,Linux系统默认是禁止数据包转发的。所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将数据包发往本机另一块网卡,该网卡根据路由表继续发送数据包。这通常是路由器所要实现的功能。

要让Linux系统具有路由转发功能,需要配置一个Linux的内核参数net.ipv4.ip_forward。这个参数指定了Linux系统当前对路由转发功能的支持情况;其值为0时表示禁止进行IP转发;如果是1,则说明IP转发功能已经打开。

要配置Linux内核中的net.ipv4.ip_forward参数有多种配置方式可供选择,下面分别介绍。

临时生效的配置方式

临时生效的配置方式,在系统重启,或对系统的网络服务进行重启后都会失效。这种方式可用于临时测试、或做实验时使用。

使用 sysctl 指令配置

sysctl 命令的 -w 参数可以实时修改Linux的内核参数,并生效。所以使用如下命令可以开发Linux的路由转发功能。

sysctl -w net.ipv4.ip_forward=1

有关 sysctl 指令的更详细介绍,请参见Linux的系统man手册(man sysctl),或其他有关sysctl指令详细介绍的文章。

修改内核参数的映射文件:/proc/sys/net/ipv4/ip_forward

内核参数在Linux文件系统中的映射出的文件:/proc/sys/net/ipv4/ip_forward中记录了Linux系统当前对路由转发功能的支持情况。文件中的值为0,说明禁止进行IP转发;如果是1,则说明IP转发功能已经打开。可使用vi编辑器修改文件的内容,也可以使用如下指令修改文件内容:

echo 1 > /proc/sys/net/ipv4/ip_forward

永久生效的配置方式

永久生效的配置方式,在系统重启、或对系统的网络服务进行重启后还会一直保持生效状态。这种方式可用于生产环境的部署搭建。

修改/etc/sysctl.conf 配置文件

在sysctl.conf配置文件中有一项名为net.ipv4.ip_forward的配置项,用于配置Linux内核中的net.ipv4.ip_forward参数。其值为0,说明禁止进行IP转发;如果是1,则说明IP转发功能已经打开。

需要注意的是,修改sysctl.conf文件后需要执行指令sysctl -p 后新的配置才会生效。

有关 sysctl 指令和sysctl.conf配置文件的更详细介绍,请参见Linux的系统man手册(man sysctlman sysctl.conf),或其他有关sysctl指令和sysctl.conf配置文件的文章。

修改/etc/sysconfig/network配置文件

在文件最后添加一行:FORWARD_IPV4=YES

需要注意的是,修改/etc/sysconfig/network配置文件后需要重启网络服务(service netwrok restart)才能使新的配置生效。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,203评论 2 33
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,854评论 18 139
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,499评论 9 467
  • 这点主要是针对女孩的,一些自卑,没有信心,不看好自己的,我也是过来人,可能也是属于那种比较内向,自卑的,但是随着...
    ffdhjffg阅读 651评论 0 0
  • today is the first day today is the last day
    红茶jl阅读 87评论 0 2