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 / 问题 / 1120975
Accepted
Lars Hanke
Lars Hanke
Asked: 2023-01-25 01:09:14 +0800 CST2023-01-25 01:09:14 +0800 CST 2023-01-25 01:09:14 +0800 CST

不同 IP 的相同 FQDN 取决于连接

  • 772

我在 Debian 上运行 Kerberos / LDAP 用户身份验证,几十年来一直运行良好。我现在想使用笔记本电脑,可以通过有线或WiFi连接。我一直在思考如何建立这个基础设施,我不相信没有解决方案。我脑子里的羊毛球沿着这些线:

LAN 和 WiFi 的 NIC 具有不同的 MAC,因此 DHCP 将分配不同的 IP 地址。此外,LAN 和 WiFi 不应桥接,即理想情况下它们甚至在不同的网段中。因此,不同的 IP 意味着不同的 DNS 名称,即不同的密钥表条目。此外,对于远程管理ssh访问,我需要提前知道笔记本电脑当前是有线连接还是使用 WiFi。

好吧,绝对可以在每台笔记本电脑上运行它,每台笔记本电脑都有两个名称,Kerberos 主体,ssh 身份,...但是没有更方便的解决方案更面向机器而不是 NIC 吗?

我已经考虑过像 DDNS 这样的概念,但是简单地四处移动的自由似乎有些复杂。或者这是 RADIUS 应该解决的问题?

我很欣赏有关此问题的最佳实践的提示或我不会绕过人格分裂系统的经验。

domain-name-system
  • 1 1 个回答
  • 35 Views

1 个回答

  • Voted
  1. Best Answer
    user1686
    2023-02-03T02:28:44+08:002023-02-03T02:28:44+08:00

    因此,不同的 IP 意味着不同的 DNS 名称

    或者动态更新的 DNS 名称。Windows 机器一直这样做——所有 AD 域成员向权威 DNS 服务器发送 RFC2136“UPDATE”消息(这就是该选项的作用ipconfig /registerdns),因此无论机器在哪里,它都会有一个有效的 DNS 条目。Windows 甚至使用 Kerberos 来验证更新。

    通过 ISC BIND 托管的动态可更新区域,您可以在 Linux 上拥有相同的区域;您可以拥有一个网络脚本,nsupdate一旦网络连接建立,该脚本就会运行以添加/删除 IP 地址。

    nsupdate -g <<!
    zone dyn.example.com
    del $(hostname).dyn.example.com 0 ANY
    add $(hostname).dyn.example.com 300 A ${ipv4}
    add $(hostname).dyn.example.com 300 AAAA ${ipv6}
    add $(hostname).dyn.example.com 300 SSHFP ${fingerprint}
    send
    !
    

    (其他 DNS 服务器也实现了 RFC2136 动态更新,尽管它们中的大多数只支持基于 PSK 的 TSIG-HMAC 身份验证——BIND 是唯一通过 GSS-TSIG 支持 Kerberos 的服务器。)

    如评论中所述,DHCP 服务器还可以在收到带有“主机名”选项的 DHCP 租用请求时更新 DNS(大多数主机发送它,大多数消费者无线路由器都会这样做)。ISC BIND+dhcpd 设置使用相同的 TSIG RFC2136 更新;其他人可能有自己的机制。

    您还可以使用多播 DNS (mDNS)——添加host/foo.local为 Kerberos 主体并让 avahi-daemon(或 systemd-resolved)向其他 LAN 主机宣布其自己的地址。对 mDNS 的支持在非 Linux 系统上也很常见。

    即,不同的密钥表条目。

    可以让两个主体共享相同的密钥;例如,对于使用 LDAP 后端的 MIT Kerberos,您可以创建 LDAPalias对象并添加多个krbPrincipalName属性。

    ldapmodify <<EOF
    dn: krbPrincipalName=host/[email protected],cn=EXAMPLE.COM,cn=Kerberos,o=FooInc
    add: krbCanonicalName
    krbCanonicalName: host/[email protected]
    -
    add: krbPrincipalName
    krbPrincipalName: host/[email protected]
    krbPrincipalName: host/[email protected]
    -
    EOF
    
    ldapadd <<EOF
    dn: krbPrincipalName=host/[email protected],cn=EXAMPLE.COM,cn=Kerberos,o=FooInc
    objectClass: alias
    objectClass: extensibleObject
    aliasedObjectName: krbPrincipalName=host/[email protected],cn=EXAMPLE.COM,cn=Kerberos,o=FooInc
    EOF
    

    (我认为Heimdal 也支持其默认 HDB 后端的别名,但 MIT Krb5 不支持。)

    创建别名后,服务器只需要一个主体的密钥表条目——只要其他主体成功解密(如果共享密钥,它们就会这样做),它就会接受为其他主体发出的票证。虽然您可能需要启用此 krb5.conf 选项才能工作:

    [libdefaults]
        ignore_acceptor_hostname = yes
    

    如果某些 Kerberos 客户端不进行主机名规范化(例如,当从 Windows 进行 SSH 时,它根本不会规范化主机名),这将非常有用,因为它允许您同时拥有这两种客户端并用于同一台host/foo.example.com机器host/foo。

    LAN 和 WiFi 的 NIC 具有不同的 MAC,因此 DHCP 将分配不同的 IP 地址

    只要以太网和 Wi-Fi 不同时在同一个子网上使用,就可以为两个接口配置相同的DHCP 客户端 ID,因此在两个接口上接收相同的租约(客户端 ID 优先于物理 MAC地址)。

    但是,难道没有更方便的解决方案更面向机器而不是 NIC 吗?

    您可以从企业路由中借用“环回地址”的想法——也就是说,将“管理”地址与分配给物理接口的地址分离。(在 IPX 中也称为“内部网络”,或在 LISP 中称为“EID/RLOC”等)

    一种典型的方法是创建一个dummy0接口并为其分配一个 IP 地址作为/32; 然后让笔记本电脑运行一个小型路由守护程序,例如 babeld 或 Bird2,以通过 OSPF 或 Babel 或 RIP 向其他计算机宣布它(作为存根接口)。

    运行路由守护进程的设备(其他主机和/或您的 LAN 路由器)将自动知道它们可以通过任何“物理”以太网/Wi-Fi IP 地址到达“环回”IP 地址;主机将能够从 Wi-Fi 切换到以太网,甚至在子网之间移动,同时保留其地址和活动的 TCP 连接。

    撇开复杂性不谈,这有一个缺点,即大多数路由协议在 Wi-Fi 上都有些“冗长”,这可能会影响电池寿命。(数据中心使用 BGP 让服务器以这种方式公布它们的 IP 地址,它不那么繁琐,但它需要一个路由器来支持它,不像 OSPF/Babel 可以直接在所有主机之间运行。)

    • 1

相关问题

  • Solaris DNS

  • resolv.conf 在经过一段时间后被更改

  • 为什么有些网站的网址中没有“www”就无法显示?[关闭]

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

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

    • 9 个回答
  • Marko Smith

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

    • 3 个回答
  • Marko Smith

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

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +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