ip地址分公有地址和私有地址,

public address是由INIC(internet network information center)负责,这些ip地址分配给注册并向INIC提出申请的组织机构。通过它访问internet.private address是属于非注册地址,专门为组织内部使用,

private ip address是不可能直接用来跟WAN通信的,要么利用帧来通信(FRE帧中继,HDLC,PPP),要么需要路由的NAT功能把私有地址转换为一个公有ip!

选择一台电脑(有两个网卡或者用单网卡然后用软件虚拟多一个网卡)充当网关,一个网卡(eth0)连接外网ISP,另一网卡(eth1)连接内网(即局域网)。局域网内的ip地址都是私用地址,只能在内部使用,在公网上是不可见的,所以局域网电脑要上网必须修改ip,这就是网关的工作。

工作原理

内网主机向公网发送数据包时,由于目的主机跟源主机不在同一网段,所以数据包暂时发往内网默认网关处理,而本网段的主机对此数据包不做任何回应。由于源主机ip是私有的,禁止在公网使用,所以必须将数据包的源发送地址修改成公网上的可用ip,这就是网关收到数据包之后首先要做的工作--ip转换

然后网关再把数据包发往目的主机。目的主机收到数据包之后,只认为这是网关发送的请求,并不知道内网主机的存在,也没必要知道,目的主机处理完请求,把回应信息发还给网关。

网关收到后,将目的主机发还的数据包的目的ip地址修改为发出请求的内网主机的ip地址,并将其发给内网主机。这就是网关的第二个工作--数据包的路由转发。内网的主机只要查看数据包的目的ip与发送请求的源主机ip地址相同,就会回应,这就完成了一次请求。

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

配置Linux系统的ip转发功能,首先保证硬件连通,然后打开系统的转发功能

less /proc/sys/net/ipv4/ip_forward,该文件内容为0,表示禁止数据包转发,1表示允许,将其修改为1。可使用命令

echo "1" > /proc/sys/net/ipv4/ip_forward 修改文件内容,重启网络服务或主机后效果不再。若要其自动执行,可将命令

echo "1" > /proc/sys/net/ipv4/ip_forward 写入脚本/etc/rc.d/rc.local 或者

/etc/sysconfig/network脚本中添加 FORWARD_IPV4="YES"  


要想永久修改IP转发,需要修改/etc/sysctl.conf文件,修 改下面一行的值:

net.ipv4.ip_forward = 1 修改后可以重启系统来使修改生效,也可以执行下面的命令来使修改生效:

sysctl -p /etc/sysctl.conf 进行了上面的配置后,IP转发功能就永久使能了。

转载于:https://blog.51cto.com/6226001001/1557355

IP_FORWARD转发相关推荐

  1. linux设置mysql防火墙端口映射_Linux防火墙默认是关闭3306端口,iptables实现端口转发、端口映射及双向通路...

    iptables实现端口转发.端口映射及双向通路其实不难配置,看下文: 允许数据包转发: #echo 1 > /proc/sys/net/ipv4/ip_forward 转发TCP 8081到x ...

  2. linux 防火墙 443端口映射,linux防火墙实现端口转发、端口映射及双向通路

    iptables实现端口转发.端口映射及双向通路其实不难配置,看下文: 允许数据包转发: #echo 1 > /proc/sys/net/ipv4/ip_forward 转发TCP 8081到x ...

  3. Docker(十四):Docker:网络模式详解

    Docker作为目前最火的轻量级容器技术,牛逼的功能,如Docker的镜像管理,不足的地方网络方面. Docker自身的4种网络工作方式,和一些自定义网络模式 安装Docker时,它会自动创建三个网络 ...

  4. Docker网络详解——原理篇

    前言 当你开始大规模使用Docker时,你会发现需要了解很多关于网络的知识.Docker作为目前最火的轻量级容器技术,有很多令人称道的功能,如Docker的镜像管理.然而,Docker同样有着很多不完 ...

  5. openstack学习笔记五 多节点部署之 rabbitmq信息中枢与元数据

    元数据 rabbitmq信息中枢 rabbitmq信息中枢 所有组件通信的时候 实用 AMQP 高级消息队列 qpid rabbitmq    端口5672       sll加密 5671 1 2 ...

  6. Docker的4种网络模式

    我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式: host模式,使用--net=host指定. container模式,使 ...

  7. linux内核网络协议栈--接收流程及函数(九)

    本章来看下,数据是如何从网络中接收并最后到达应用程序的. 网络层将数据链路层提供的帧组成数据包,包中封装有网络层包头,其中含有逻辑地址信息. 1.链路层 包到达机器的物理网卡时候触发一个中断,并将通过 ...

  8. linux 内核网络协议栈--IP层开始直到包被处理(三)

    先看看ip头结构: struct iphdr struct iphdr {#if defined(__LITTLE_ENDIAN_BITFIELD) // 小端__u8 ihl:4, // 首部长度( ...

  9. Tomcat原理详解和各种集群的实现

    注意:本篇博文涉及的知识内容如下,实验中所用的系统环境为RHEL6.4. 1.Java基础知识讲解 2.Tomcat的安装和实现 3.通过apache的mod_proxy模块代理并实现Tomcat负载 ...

最新文章

  1. Openstack的主要组件
  2. 如何将adb shell里面查到的文件复制到本地电脑
  3. 基于Continuous Conditional Neural Fields for Structured Regression的人脸特征点检测和头部姿态估计
  4. 老赖凭本事骗钱,你有本事不被骗吗?
  5. 建立新冠病毒群体免疫屏障——数学建模
  6. Python正则表达式之元字符详解(1)
  7. 遇到的Ajax相关问题
  8. Django的APP,视图,url和模板
  9. count 数字计数(bzoj 1833)
  10. ruoyi 多模块部署_大数据时代,独立部署的商城系统具有哪些优势?
  11. 【Alpha 冲刺】 1/12
  12. 639 页《深度学习:Deep Learning》硬核课程 PPT 下载
  13. python 对一个函数执行速度控制的演示
  14. 什么是领域模型(domain model)?贫血模型(anaemic domain model) 和充血模型(rich domain model)有什么区别...
  15. UCOS操作系统——任务管理(二)
  16. 一层神经网络实现鸢尾花数据集分类
  17. java手机振动软件_Android实现手机震动效果
  18. Introduction to SPM statistics
  19. 教程:建立自己的私有云存储
  20. Vue导入TradingView(无charting_library.min.js文件的包导入方法)

热门文章

  1. 线程基类的构建与代码实践
  2. Docker 运行gitlab官方文档
  3. js插件---10个免费开源的JS音乐播放器插件
  4. 浅析主键自增长的优缺点
  5. Socket网络编程(2)--服务端实现
  6. Cisco ××× 完全配置指南-连载-IOS ×××阶段2连接详解
  7. 接上篇-找虚拟主机过程
  8. Vim之代码异步检测插件 ALE -- 实时检查verilog等代码的正确性
  9. 解决app频繁更新方案
  10. 颈椎病,大部分IT人的痛