AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 61235
Accepted
BinaryMisfit
BinaryMisfit
Asked: 2009-09-02 09:28:54 +0800 CST2009-09-02 09:28:54 +0800 CST 2009-09-02 09:28:54 +0800 CST

DHCP 连接到 NIC A - 为 NIC B 上的计算机提供 IP

  • 772

基于这个问题可以做以下事情:

- 带有 DHCP 的路由器连接到 Box 1 上的 NIC A
 - 机器 B 连接到 Box 1 上的 NIC B

我需要机器 B 从 NIC A 上的路由器获取 DHCP IP 地址。目前设置和配置如下:

- NIC A DHCP 分配的 IP:10.0.xx (255.255.255.224)
 - 网卡 B 静态 IP:10.1.xx (255.255.255.252)

我有 ipv4_forwarding 但是我无法为机器 B 分配静态 IP。我需要做什么才能让来自 NIC A 的所有流量流过 NIC B。或者更具体地说,我怎样才能让机器 B 获得 IP地址来自路由器上的 DHCP。

  • 我需要设置 IPTables 吗?如果是这样,我从哪里开始?
  • 我需要在 linux 机器上设置路由吗?如何?
  • 做不到吗?

澄清

这个盒子不是路由器。已经有路由器了。这是一个用于 Samba 共享和虚拟机的 linux 机器。然而,有些机器无法连接到主交换机,但是它们可以通过另一个集线器连接到这台机器。

简而言之,这台机器坐在中间。

linux
  • 6 6 个回答
  • 513 Views

6 个回答

  • Voted
  1. Best Answer
    geocar
    2009-09-02T15:02:57+08:002009-09-02T15:02:57+08:00

    你有三个主机:

    Machine "B" ======  Machine "A" ====== Machine "R"
    10.1.0.1            10.0.0.2            10.0.0.1
    

    除非Machine "R"(您的路由器)知道10.1.0.0/16通过10.0.0.2它的路由根本不起作用。

    你有三个选择:

    1. 在机器“A”上创建一个桥
    2. 获取机器“R”以安装路由表并使用 ICMP 重定向和 proxy_arp 的组合来配置网络的其余部分
    3. 在机器“A”上使用网络地址转换。这将“隐藏”它左侧的所有主机,因此机器“R”将无法访问机器“B”上的服务。

    搭建一座桥梁,真的很简单。在机器“A”上:

    brctl addbr br0
    brctl addif br0 eth0
    brctl addif br0 eth1
    brctl stp br0 on
    

    然后配置br0为拥有您想要的 IP 地址(例如通过运行dhclient br0)。

    然后,机器“B”应该能够使用dhclient eth0并从机器“R”获取 IP 地址

    网桥带来了一大堆问题,其中最重要的是很多设备都支持错误的 STP。

    如果你让机器“R”来创建你的路由表,你需要机器“A”来启用代理 arp:

    echo 1 > /proc/sys/net/ipv4/conf/all/proxy_arp
    

    您网络上的其他机器将需要接受 ICMP 重定向。我见过至少有两台默认情况下没有的打印机。你的旅费可能会改变。

    最后,启用网络地址转换实际上很简单:

    iptables -t nat -A POSTROUTING -s 10.1.0.0/16 -j SNAT --to-source $IP
    

    $IP供使用的地址在哪里Machine "R"。有许多工具可以自动执行此操作。

    • 4
  2. Massimo
    2009-09-02T09:32:21+08:002009-09-02T09:32:21+08:00

    您应该桥接两个网络接口;这样,中间计算机就像一个网络集线器一样,以完全透明的方式在两个端口之间传递流量。没有路由,没有配置要做,另一台计算机和路由器将“只是”能够相互交谈(当然还有桥接计算机)。

    • 2
  3. drAlberT
    2009-09-02T09:39:22+08:002009-09-02T09:39:22+08:00

    为什么不在两个接口上绑定 dhcp 服务器呢?

    默认情况下,dhcpd 应该已经在每个接口上侦听(如果没有为守护进程提供参数)...所以我想您只需更改 dhcpd.conf 即可管理 eth1 上的网络掩码...守护进程将也在这个界面上服务。

    迪亚戈回复后编辑对不起,我误解了你的问题。如果有用,我不会删除其他人参考的答案。

    • 1
  4. hdanniel
    2009-09-02T09:59:53+08:002009-09-02T09:59:53+08:00

    您需要在您的 linux 机器中配置 DHCP 中继代理。DHCP 中继代理允许您将 DHCP 请求从一个子网中继到不同子网中的其他 DHCP 服务器。做DHCP中继的linux命令是dhcrelay

    您还需要检查您是否可以从机器 B 访问 DHCP 服务器(检查我对您的其他问题的回答以配置路由和默认网关),并且您的服务器中没有防火墙规则阻止从机器 B 到 DHCP 服务器的数据包。

    • 1
  5. Zoredache
    2009-09-02T10:00:11+08:002009-09-02T10:00:11+08:00

    如果您按照链接到的问题的说明进行操作,则该框是路由器。ip_forward = 1 设置启用路由。如果这不是您想要的,那么您需要将其设置为桥梁。

    通过将盒子设置为路由器,您使事情变得更加复杂,听起来像是您想要/需要的。将具有两个接口的系统配置为网桥可能是最简单的选择。如果您需要该盒子实际上是路由器,那么您将不得不考虑其他选项。

    您可以在计算机上设置 dhcp 中继代理,但您还需要向路由器添加路由,以便它可以访问内部地址空间,并且您需要为路由器添加额外的范围以用于内部地址空间。

    您可以简单地在具有两个接口的盒子上设置一个 DHCP 服务器,并将地址提供给您的内部网络。如果简单地用两个接口制作一个桥接器不是一个选项,这可能是最简单的设置。

    • 1
  6. joeqwerty
    2009-09-02T09:39:24+08:002009-09-02T09:39:24+08:00

    Box 1 需要设置为 dhcp 中继代理。

    • 0

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve