• Linux主机添加路由和端口转发



    环境(关闭防火墙和seLinux):

      6A: CentOS6
      7A 和 7B:CentOS 7 
       6A: 192.168.20.131/24
      7B: 192.168.20.129/24 和 192.168.10.130/24
      7A: 192.168.10.129/24     


    各主机上配置如下:
    6A:
      ip route add default via 192.168.20.129  //添加默认路由
    7B:
      echo 1 > /proc/sys/net/ipv4/ip_forward  //开启转发功能
    7A:
      ip route add default via 192.168.10.130  //添加默认路由
      ip add add 1.1.1.1/32 dev lo:0  //添加 loopback IP

    测试过程:
      7A 上 ping 192.168.20.131,结果正常,没有问题,因为 ICMP request 报文的源地址是 7A 的 interface ip,但若执行 ping -I 1.1.1.1 192.168.20.131 指明使用 1.1.1.1 为源IP发送 ICMP request,则无法 ping 通。在 vmnet1 上抓包,发现 ICMP request ,但在 vmnet2 上抓包,没有发现转发过来的 ICMP request。
      在 7B 上通过 ip route add 1.1.1.1 via 192.168.10.129 添加到 7A 上 loopback 的路由后,再在 7A 上执行 ping -I 1.1.1.1 192.168.20.131 则可以 ping 通。由此推测 Linux 主机开启 ip_forward 后,若要转发某个报文,不仅仅要求该报文目的IP可达,源IP也要可达才行。可能是协议栈的设计者考虑到对于7B来说若发送方(本例中的1.1.1.1)不可达的情况下将报文转发给6A,该报文的响应报文到达7B后也是要丢弃的(因为1.1.1.1作为目的IP不可达),不如提前就丢弃。



    原文作者:xiaohaiyinyu
    来源:CSDN
    原文:https://blog.csdn.net/xiaohaiyinyu/article/details/73656780
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    11个Linux基础面试问题
    OSI模型
    戴文的Linux内核专题:10配置内核(6)
    面向对象实验四(输入输出流)
    计算机程序的思维逻辑 (2)
    计算机程序的思维逻辑 (1)
    java基础3.0:Java常用API
    java基础2.0:Object、Class、克隆、异常编程
    java基础1.0::Java面向对象、面向对象封装、抽象类、接口、static、final
    Ajax工作原理(转)
  • 原文地址:https://www.cnblogs.com/kaishirenshi/p/10394754.html
Copyright © 2020-2023  润新知