linux跨网段实现内网互通_docker跨主机通信

linux跨网段实现内网互通_docker跨主机通信1.简介TCP协议规定只有处于同一个网段的IP才能实现互通,如果处于不同网段,可以配置一台双网卡机器为网关然后指定路由线路实现跨网段访问。实现思路:将双网卡服务器作为一个代理服务器,实现双向网关的一个功能如上图所示,Proxy作为双向网关Client如果要实现Server的互通,如果Client和Server在同一个子网段可以直接ping同,但是如果不在同一个网段,Client就会先去找其网关,再由其网关寻找Server,对于Server也是这样。2.实现方案2.1代理1.开启数据包的转发功


Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

1.简介
在这里插入图片描述

TCP协议规定只有处于同一个网段的IP才能实现互通,如果处于不同网段,则需要借助于所属的网关,即我们可以配置一台双网卡机器作为网关,然后指定路由线路实现跨网段访问。

实现思路:将双网卡服务器作为一个代理服务器,实现双向网关的一个功能
如上图所示,Proxy作为双向网关
Client如果要实现Server的互通,如果Client和Server在同一个子网段可以直接ping同,但是如果不在同一个网段,Client就会先去找其网关,再由其网关寻找Server,对于Server也是这样。
2.实现方案
2.1 代理
1.开启数据包的转发功能

代理服务器打开终端执行如下命令

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

默认值0是禁止数据包转发,修改为1即开启数据包转发功能。如果提示无权限,可以使用vi或者gedit工具打开ip_forward文件直接修改。

2.2 设置路由表
用到的几个命令如下所示

新增静态路由sudo route add -net ip dev 网卡
删除静态路由sudo route del-net ip dev 网卡

具体配置方法:

  1. 代理服务器中新增发往Server端的路由表

    sudo route add -net 10.168.9.0 netmask 255.255.255.0 dev eth1 
    

    这条路由表的含义就是发往10.168.9.0/24网段的数据包都由eth1网卡发出

  2. 代理服务器中新增发往Client端的路由表

    sudo route add -net 192.168.1.0/24 netmask 255.255.255.0 dev eth0
    

    这条路由表的含义就是发往192.168.1.0/24网段的数据包都由eth0网卡发出

  3. Client服务器中设置网关为192.168.1.1

    sudo route add default gw 192.168.1.1
    

    设置之后就表示当Client端连接其他网段(非Client子网)时,就会找到192.168.1.1,进而使用192.168.1.1进行连接

    注意:

    网关只能设置为同一网段的其他IP;
    如果只是设置了网关但是没有在代理服务器中指定路由表(即步骤1,2),则Client端可以ping通代理上面的两张网卡,但是不能ping通10.168.1.xx的其他子网,即不能ping通Server端

  4. Server端设置网关为10.168.9.1

    sudo route add defaultgw 10.168.9.1
    

    以上步骤执行之后则可以互相ping通

3 永久配置方案
上面的步骤只能在终端中有效,平时测试没有问题,但是如果是工程实际应用中则需要进行永久配置

  1. 代理服务器需首先配置允许转发

    sudo vim /etc/sysctl.conf 
    net.ipv4.ip_forward=1
    

    在这里插入图片描述

  2. 代理服务器配置静态路由

    # vi /etc/rc.local
    

    然后将上一步的路由命令写入到该文件。

    sudo route add -net 10.168.9.0 netmask 255.255.255.0 dev eth1 
    sudo route add -net 192.168.1.0/24 netmask 255.255.255.0 dev eth0
    
  3. client、server端分别配置静态路由规则
    client:

    # vi /etc/rc.local
    

    然后将上一步的路由命令写入到该文件。

    sudo route add default gw 192.168.1.1
    

    server:

    # vi /etc/rc.local
    

    然后将上一步的路由命令写入到该文件。

    sudo route add default gw 10.168.9.1
    

    重启后即生效。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/194944.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • IAR for ARM介绍、下载、安装与注册

    IAR for ARM介绍、下载、安装与注册推荐分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!http://www.captainbed.net/strongerhuang推荐在我公众号「strongerHuang」和博客阅读该专栏1.EWSTM8系列教程01_IAR介绍、下载、安装和注册2.EWSTM8系列教程02_新建基础软件工程3.EWSTM8系列教程03_…

    2022年5月16日
  • strstr函数php,strstr 函数用法[通俗易懂]

    strstr函数php,strstr 函数用法[通俗易懂]strstrstrstr(str1,str2)函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。C语言函数函数名:strstr函数原型:1externchar*strstr(char*str1,constchar*str2);语法:1*strstr(str1,str2)str1:被查找目标 stringex…

    2022年6月25日
  • Python基础语法01:缩进规则

    Python基础语法01:缩进规则Python程序设计第6章:函数和函数式编程6.1函数定义6.1.1函数概述6.1.2函数定义6.1.3形参和实参6.1.4函数的返回值6.2函数分类6.2.1内建函数6.2.2自定义函数6.3函数参数6.3.1参数种类6.3.2位置参数6.3.3默认参数6.3.4不定长参数6.3.5关键字参数6.3.6命名关键字参数6.3.7参数组合6.4函数式编程6.4.1高阶函数6.4.2匿名函数6.5总结6.1函数定义6.1.1函数概述6.1.2函数定义6.1

    2022年10月13日
  • mac navicat 15激活码_最新在线免费激活

    (mac navicat 15激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html2KLKA7BQFO-eyJsa…

    2022年4月1日
  • conv2d卷积核_子集卷积

    conv2d卷积核_子集卷积学习torch框架中的卷积神经网络,对此进行记录一、nn.Conv2dnn.Conv2d(self,in_channels,out_channels,kernel_size,stride=1,padding=0,dilation=1,groups=1,bias=True))参数:in_channel:输入数据的通道数,例RGB图片通道数为3;out_channel:输…

    2022年10月21日
  • android全屏显示隐藏状态栏_怎么调整手机状态栏的大小

    android全屏显示隐藏状态栏_怎么调整手机状态栏的大小状态栏全透明步骤:1,反编译SystemUI.apk2,SystemUI\res\layout\navigation_bar.xml找到将后面的android:background=”#FF000000″改为android:background=”#00000000″3,SystemUI\res\layout\status_bar.xml找到将后面的android:background=”@dra…

    2022年9月1日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号