[每日一氵] 双Ubuntu共享网络

以下是我的记录

两台Ubuntu,名为AB

  • A机有两张网卡,其中一个网卡可上网,另一个空着
  • B机有一张网卡

现在AB直连,假设 eth0 是A连接到互联网的接口,而 eth1 是要连接到服务器B的接口。

将两台服务器通过网线直接连接起来以共享网络连接。
这个过程通常称为“桥接”网络连接。
为了让服务器B可以通过服务器A上网,需要在服务器A上设置网络共享。

以下是A机器的操作:

  • 确定两个网络接口的名称。通常可以通过运行 ip addr 命令来找出。假设 eth0 是连接到互联网的接口,而 eth1 是要连接到服务器B的接口。
  • 设置IP转发。编辑 /etc/sysctl.conf 文件,确保包含以下行没被注释:
    net.ipv4.ip_forward=1
    
    然后执行 sudo sysctl -p 以应用这个更改
  • 设置NAT(网络地址转换)规则以共享互联网连接。可以使用 iptables 设置NAT,务必注意更换网卡
    sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
    sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
    
  • 配置服务器B,将服务器A设置为默认网关。还需要在服务器B上设置静态IP或者在服务器A上运行DHCP服务器来动态分配IP。

以下是B机器的操作:

B机设置为静态IP, 直接给 192.168.1.2 就行,掩码255.255.255.0,网关 192.168.1.1
DNS服务器为 192.168.1.1 8.8.8.8 8.8.4.4

补一个A机器的操作,将A机与B机直连的那个口IP也搞为静态IP
直接给 192.168.1.1 就行,掩码255.255.255.0,网关 192.168.1.1

此时可以尝试从A机ssh连接到B机,如果能通,或者端口拒绝,说明俩机的静态IP配置好了,如果这一步没OK,则从新搞IP,直到这一步OK,当然,直接ping,ping通也行

注意每一步似乎都要重新开关一下网络连接(我用的是图像化操作)

net.ipv4.ip_forward=1 有啥用

在 Linux 系统中,net.ipv4.ip_forward=1 设置是用来启用 IP 转发功能的。默认情况下,大多数 Linux 系统都是将这项功能关闭的,因为大多数系统被配置成单一的工作站,不需要转发和路由功能。


当设置 net.ipv4.ip_forward=1 时,告诉系统内核允许在网络接口之间转发数据包。这样,系统就可以充当路由器的角色,管理和转发进入的数据包到正确的目的地。


当前场景,服务器 A 有两个网络接口,其中一个连接到互联网,另一个将与服务器 B 直接相连。要使服务器 A 能够转发从服务器 B 来的数据包到互联网,以及反过来,需要在服务器 A 上启用 IP 转发功能。


要激活这个设置,需要编辑 /etc/sysctl.conf 文件并设置 net.ipv4.ip_forward 为 1。然后通过执行 sudo sysctl -p 命令(或者重启系统)来应用这个更改。


这是实现局域网内的设备(如服务器 B)通过另一台设备(服务器 A)连接到外部网络(如互联网)的关键步骤。

防火墙规则解释

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

以上这些 iptables 命令配置了服务器 A 的防火墙规则,以便它可以转发来自服务器 B 的流量,并允许这些流量通过服务器 A 的互联网连接出去。下面是每条命令的解释:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE:

这条命令添加了一个 NAT (网络地址转换) 规则到 iptables 的 POSTROUTING 链。这个命令的作用是:

  • -t nat 指定了 nat 表,这是负责地址转换的 iptables 表。
  • -A POSTROUTING 指定了要将规则追加(Append)到 POSTROUTING 链。POSTROUTING 链用于处理即将离开主机的数据包。
  • -o eth0 指定了规则仅适用于从接口 eth0 离开的数据包,eth0 是连接到互联网的接口。
  • -j MASQUERADE 表明使用 MASQUERADE 动作。这个动作会隐藏服务器 B 的私有 IP 地址,将所有从服务器 B 发出的数据包的源 IP 地址变更为服务器 A 接口 eth0 的 IP 地址。这样,外部网络只看到来自服务器 A 的请求,而不是服务器 B。
sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT:

这条命令设置了转发规则,用来允许从互联网(通过 eth0)返回的与已经建立的连接相关的数据包或者已经建立的连接的数据包通过服务器 A 到达服务器 B。

  • -A FORWARD 将规则添加到 FORWARD 链,这个链用于处理经过主机但不是最终目标的数据包。
  • -i eth0 -o eth1 指定了规则匹配从 eth0 进入并且预计从 eth1 离开的数据包。
  • -m state 表示使用 state 匹配模块来检查数据包的连接状态。
  • –state RELATED,ESTABLISHED 表示只匹配那些处于已建立(ESTABLISHED)或者与已建立连接相关(RELATED)的数据包。
  • -j ACCEPT 表示允许这些数据包通过。
sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT:

这条命令允许从服务器 B (eth1) 发出的所有流量通过服务器 A 到互联网 (eth0)。

  • -A FORWARD 同样是将规则添加到 FORWARD 链。
  • -i eth1 -o eth0 指定了规则匹配从 eth1 进入并且预计从 eth0 离开的数据包。
  • -j ACCEPT 表明允许这些数据包通过。

这些规则配置了服务器 A 作为一个路由器,允许服务器 B 的出站和入站流量通过服务器 A 的互联网连接。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/480865.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用Python抓取抖音直播间数据的简易指南【第152篇—抓取数据】

使用Python抓取抖音直播间数据的简易指南 说明:本文已脱敏,隐去地址。 在这个数字化时代,直播已经成为了人们获取信息、娱乐和社交的重要方式之一。抖音作为全球知名的短视频平台,其直播功能也备受用户青睐。本文将介绍如何使用Py…

生成式人工智能

生成式人工智能(Generative AI)是人工智能的一个分支,专注于创建或生成新的内容,包括文本、图像、音频和视频等。与识别或分类等任务不同,生成式AI的目标是创造出在某种程度上新颖且具有实际意义的输出。这种类型的AI系…

Vue3 组件之间的通信

一、父子通信 ① props 父传子&#xff08;这种传值方法是只读的&#xff0c;不可以进行修改。&#xff09; 父组件props.vue中 <template><h2>props:我是父组件</h2><hr><props-child msg"我是静态的数据" :num"num" :obj&…

VTK9.2.0+Qt5.14.0 绘制点云

背景 为了显示结构光重建后的点云&#xff0c;开发QT5.14.0VTK9.2.0的上位机软件&#xff0c;用于对结构光3D相机进行控制&#xff0c;并接收传输回来的3D数据&#xff0c;显示在窗口中。 配置QT和VTK VTK9.2.0下载源码&#xff0c;用Cmake编译&#xff0c;编译好的VTK9.2.0…

GitHub gpg体验

文档 实践 生成新 GPG 密钥 gpg --full-generate-key查看本地GPG列表 gpg --list-keys关联GPG公钥与Github账户 gpg --armor --export {key_id}GPG私钥对Git commit进行签名 git config --local user.signingkey {key_id} # git config --global user.signingkey {key_id} git…

30V转5V 1A 30降压12V 1A DCDC低电压恒压IC 车充芯片-H4110

30V转5V和30V转12V的DCDC低电压恒压IC&#xff08;也称为降压恒压芯片或车充芯片&#xff09;工作原理如下&#xff1a; 输入电压识别&#xff1a;芯片首先识别输入的30V电压&#xff0c;并准备进行转换。 PWM控制&#xff1a;芯片内部的控制逻辑生成PWM信号。这个信号用于控制…

JVM—内存可见性

什么是可见性 可见性&#xff1a;一个线程对共享变量值的修改,能够及时地被其他线程看到共享变量&#xff1a;如果一个变量在多个线程的工作内存中都存在副本,那么这个变量就是这几个线程的共享变量 Java内存模型(JMM) Java内存模型(Java Memory Model)描述了Java程序中各种…

Qt教程 — 3.7 深入了解Qt 控件: Layouts部件

目录 2 如何使用Layouts部件 2.1 QBoxLayout组件-垂直或水平布局 2.2 QGridLayout组件-网格布局 2.3 QFormLayout组件-表单布局 在Qt中&#xff0c;布局管理器&#xff08;Layouts&#xff09;是用来管理窗口中控件位置和大小的重要工具。布局管理器可以确保窗口中的控件在…

BAAI 北京智源研究院

文章目录 关于 BAAI产品悟道大模型FlagOpen 大模型技术天演 生物智能九鼎 智算平台 关于 BAAI BAAI : Beijing Academy of Artificial Intelligence 北京智源研究院 官网&#xff1a;https://www.baai.ac.cnhf : https://huggingface.co/BAAI百度百科 https://baike.baidu.co…

物联网云组态是什么?部署物联网云组态有什么作用?

在信息化与工业化的深度融合进程中&#xff0c;物联网云组态以其独特的优势&#xff0c;正在成为企业数字化转型的重要工具。那么&#xff0c;物联网云组态究竟是什么呢&#xff1f;部署物联网云组态又能给企业带来哪些实质性的好处呢&#xff1f;今天&#xff0c;我们将围绕这…

2核4G服务器多少钱?阿里云价格30元起

阿里云2核4G服务器租用优惠价格&#xff0c;轻量2核4G服务器165元一年、u1服务器2核4G5M带宽199元一年、云服务器e实例30元3个月&#xff0c;活动链接 aliyunfuwuqi.com/go/aliyun 活动链接如下图&#xff1a; 阿里云2核4G服务器优惠价格 轻量应用服务器2核2G4M带宽、60GB高效…

AI智能分析网关V4在养老院视频智能监控场景中的应用

随着科技的快速发展&#xff0c;智能监控技术已经广泛应用于各个领域&#xff0c;尤其在养老院这一特定场景中&#xff0c;智能监控方案更是发挥着不可或缺的作用。尤其是伴随着社会老龄化趋势的加剧&#xff0c;养老院的安全管理问题也日益凸显。为了确保老人的生活安全&#…

Ruby选择结构实战

文章目录 一、Ruby选择结构实战概述二、Ruby选择结构实战案例&#xff08;一&#xff09;闰年判断1、编写程序&#xff0c;实现功能2、程序的解释说明3、运行程序&#xff0c;查看结果 &#xff08;二&#xff09;求解一元二次方程1、编写程序&#xff0c;实现功能2、程序的解释…

界面控件DevExpress ASP.NET Ribbon组件 - 完美复刻Office 365体验!

无论用户是喜欢传统工具栏菜单外观、样式&#xff0c;还是想在下一个项目中复制Office 365 web UI&#xff0c;DevExpress ASP.NET都提供了所需要的工具&#xff0c;帮助用户打造更好的应用程序界面。 P.S&#xff1a;DevExpress ASP.NET Web Forms Controls拥有针对Web表单&a…

ky10.aarch64安装Jenkins

参考地址&#xff1a;《安装部署 Jenkins》 前言 有war包和rpm两种安装方式&#xff0c;如果是长期使用更加推荐rpm的安装方式&#xff0c;可以更好的管理Jenkins&#xff1b; 我此次安装jenkins主要用于测试和简单的个人使用&#xff0c;所以选择更轻便的war安装。 1 下载J…

如何用java使用es

添加依赖 如何连接es客户端 RestHighLevelClient 代表是高级客户端 其中hostname&#xff1a;es的服务器地址&#xff0c;prot端口号 &#xff0c;scheme&#xff1a;http还是https 如果不在使用es可以进行关闭&#xff0c;可以防止浪费一些资源 java如何创建索引&#xff1…

Python RPA简单开发实践(selenium登陆浏览器自动输入密码登陆)

打开csdn博客&#xff0c;简单版 class BS:def __init__(self, url):self.url url# self.password password# self.username usernamedef login_url(self):from selenium import webdriver# 不自动关闭浏览器option webdriver.ChromeOptions()option.add_experimental_opt…

每日OJ题_牛客_QQ2 微信红包

目录 牛客_QQ2 微信红包 解析代码 牛客_QQ2 微信红包 微信红包_牛客题霸_牛客网 解析代码 class Gift { public: int getValue(vector<int> gifts, int n) {int cnt 0, ret 0;// for(int i 0; i < n; i) // 摩尔投票法// {// if(cnt 0)// {// ret gifts[i];/…

STM32不使用中断实现定时器微秒级精确延时

我们在写代码的时候避免不了要使用延时函数&#xff0c;很多延时函数都是使用中断或者tick来实现的&#xff0c;tick的方式最大到毫秒ms级别&#xff0c;通过中断方式的通用定时器来实现&#xff0c;如果实现1us的延时那么每1us就来一次中断&#xff0c;很影响cpu的效率。 本文…

【webpack】----错误解决【Cannot read properties of undefined (reading ‘tap‘)】

1. 报错场景 安装 webpack-obfuscator 后&#xff0c;进行 js 代码混淆编译的时候报错。 2. 报错截图 3. 错误原因 通常是由于版本不兼容或配置错误引起的。 4. 查询本地 webpack 版本 4.1 查询命令 npm 查询 npm view webpack versionyarn 查询 yarn info webpack ver…