在我的本地 DHCP 网络上,我需要远程访问不同的 PC。问题是他们的IP的变化。有时我将我的笔记本电脑和上网本插入其他人的 DHCP 网络。
我目前的解决方案是/etc/hosts
每次目标 IP 更改时更新文件。
我的/etc/hosts
文件看起来像这样:
# <ip-address> <hostname.domain.org> <hostname>
127.0.0.1 localhost.localdomain localhost laptop
192.168.1.14 desktop.localdomain desktop
192.168.1.12 netbook.localdomain netbook
Run Code Online (Sandbox Code Playgroud)
有没有办法绕过所有手动管理?
例如,我的计算机可以在 LAN 上广播它们的 IP,或者类似的东西吗?Windows 会做类似的事情,它允许您使用“\\COMPUTER_NAME”引用网络上的计算机
我想从 gnome 切换到 awesome,我想在命令行中连接我的 wifi 网络(而不是使用 gnome 工具)。
所以,我在互联网上搜索并找到了大致相同的方法:
ifconfig wlan0 up
iwconfig wlan0 essid "MyNetwork" key THEHEXAKEY
dhclient wlan0
Run Code Online (Sandbox Code Playgroud)
当我独自运行 awesome 并执行这些命令时,我会被困在第三个。看起来 DHCP 无法解析(命令继续无休止地运行)。
但是当我在 Xephyr 中运行 awesome 并执行相同的命令时,dhclient wlan0
效果很好。
所以我想 Gnome 做了一些我不做但我找不到的事情。
有人可以帮助我吗?
dhclient
.我在这篇文章中找到了一个用于在 Linux 上调试 DHCP 的便利工具, 但那是在 Linux 上(dhcping、dhcpdump),而且我的 FreeBSD 上没有这些工具,我将无法安装它们。
更新 #2$ tcpdump -lenx -i eth0 -s 1500 port bootps
Run Code Online (Sandbox Code Playgroud) 我的笔记本电脑上 DHCP 提供的 IP 会定期更改。它运行 CentOS 6.5 并使用 NetworkManager。
我的桌面,在同一网络上运行 Sabayon,没有这个问题。
如何让 NetworkManager 续订现有的 DHCP 租约而不是获得新租约?
是否有可能,以及如何配置 CentOS 6.6 以便 /etc/resolv.conf 将通过 DHCP 获取其配置,但还会在搜索行中添加其他域名?
如果我还可以向该文件添加域行,则加分。
哦,我不使用 NetworkManager。
到目前为止,所有搜索都显示了禁用 DHCP 修改 /etc/resolv.conf 的说明,并手动设置它,但我认为这违背了 DHCP 的目的。
我遇到了 DHCP(我在其他类似主题中读到的)我不知道如何解决这个问题,因为我已经找到了职位(1,2和其他一些人)是基于Debian的发行版或其他而不是Fedora的。/etc/resolv.conf
在每次启动时清除文件的问题。
这ifcfg-enp0s31f6
肯定是 DHCP的输出:
cat /etc/sysconfig/network-scripts/ifcfg-enp0s31f6
HWADDR=C8:5B:76:1A:8E:55
TYPE=Ethernet
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=no
IPV6_DEFROUTE=no
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s31f6
UUID=0af812a3-ac8e-32a0-887d-10884872d6c7
ONBOOT=yes
IPV6_PEERDNS=no
IPV6_PEERROUTES=no
BOOTPROTO=dhcp
PEERDNS=yes
PEERROUTES=yes
Run Code Online (Sandbox Code Playgroud)
另一方面,我不知道网络管理器是否在做其他事情。
更新:NetworkManager.conf 的内容(因为没用,我已经删除了评论)
$ cat /etc/NetworkManager/NetworkManager.conf
[main]
#plugins=ifcfg-rh,ibft
dns=none
[logging]
#domains=ALL
Run Code Online (Sandbox Code Playgroud)
我能得到一些帮助吗?在每次重新启动时一次又一次地设置文件很烦人。
更新 2
一个月后,我仍然遇到同样的问题,文件被“某物”删除。
以下是我为进行新测试而遵循的步骤:
PC重新启动后打开终端并尝试ping
谷歌服务器当然没有成功:
$ ping google.com
ping: google.com: Name or service not known
Run Code Online (Sandbox Code Playgroud)检查网络配置似乎一切正常:
$ cat /etc/sysconfig/network-scripts/ifcfg-enp0s31f6
NAME=enp0s31f6
ONBOOT=yes
HWADDR=C8:5B:76:1A:8E:55
MACADDR=C8:5B:76:1A:8E:55
UUID=0af812a3-ac8e-32a0-887d-10884872d6c7
BOOTPROTO=static
PEERDNS=no
DNS1=8.8.8.8
DNS2=8.8.4.4
DNS3=192.168.1.10
NM_CONTROLLED=yes
IPADDR=192.168.1.66
NETMASK=255.255.255.0 …
Run Code Online (Sandbox Code Playgroud)我有一个 firstboot.service,它根据主以太网适配器的 MAC 从库存操作系统映像创建一个唯一的主机名。它在引导期间按预期运行,但使用 DHCP 注册的主机名仍然是内核设置的默认主机名。因此,在设备启动后,我可以 ping 它,defaultname.mynet.lan
但是当我登录并调用hostname
它时,它会foo-XXXX
按预期显示。
如下所示,该服务已注册为在network.target
. 正如您可能猜到的那样,我正在使用systemd-networkd
和systemd-resolved
用于网络。
首次启动服务
[Unit]
ConditionPathExists=|!/etc/hostname
Before=network.target
After=local-fs.target
After=sys-subsystem-net-devices-eth0.device
[Service]
Type=oneshot
ExecStart=/bin/bash -c "/usr/local/sbin/firstboot.sh"
RemainAfterExit=yes
[Install]
WantedBy=network.target
Run Code Online (Sandbox Code Playgroud)
首次启动文件
HOST_PREFIX=${HOST_PREFIX:-"foo"}
NET_DEVICE=${NET_DEVICE:="eth0"}
LAST_MAC4=$(sed -rn "s/^.*([0-9A-F:]{5})$/\1/gi;s/://p" /sys/class/net/${NET_DEVICE}/address)
NEW_HOSTNAME=${HOST_PREFIX}-${LAST_MAC4:-0000}
echo $NEW_HOSTNAME > /etc/hostname
/bin/hostname -F /etc/hostname
Run Code Online (Sandbox Code Playgroud) 在 Linux Mint 上,当我查看/etc/resolv.conf
文件时,第一条评论指出该/etc/resolv.conf
文件是由resolvconf(8)
.
~ $ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
Run Code Online (Sandbox Code Playgroud)
解释一下resolvconf(8)
手册页:
resolvconf 程序由 dhclient 等 DHCP 客户端运行
我跑dhclient wlan0
。
~ $ dhclient wlan0
Run Code Online (Sandbox Code Playgroud)
Dhclient 应该使resolvconf
程序更新/etc/resolv.conf
。该/var/lib/dhcp/dhclient.leases
文件验证我是否能够租用名称服务器的 IP 地址 (192.168.0.6)。
~ $ cat /var/lib/dhcp/dhclient.leases
lease {
interface "wlan0";
. . .
option domain-name-servers 192.168.0.6;
. . .
}
Run Code Online (Sandbox Code Playgroud)
但是,该/etc/resolv.conf
文件不会更新。该/etc/resolv.conf
文件的名称服务器为 127.0.1.1。
~ $ cat /etc/resolv.conf …
Run Code Online (Sandbox Code Playgroud) 无论我通过 DHCP 获得什么,我都想使用某些 DNS 服务器。我正在尝试配置 dhclient 以忽略这些,但我似乎无法让它工作。
根据本文的建议,我supersede domain-name-servers 8.8.8.8, 8.8.4.4;
在我的/etc/dhcp/dhclient.conf
文件中添加了节。我还尝试了来自 superuser.com 的这些答案,domain-name-servers
并domain-search
从request
指令中删除了值。这两者,单独应用以及一起应用,似乎都没有效果。运行sudo dhclient -r
然后sudo dhclient
,我仍然在以下条目中找到以下条目/etc/resolvconf/run/interfaces/enp2s0.dhclient
:
domain lan
nameserver 192.168.1.1
Run Code Online (Sandbox Code Playgroud)
哪个提示resolvconf
放入nameserver 192.168.1.1
我的/etc/resolv.conf
文件。
我仔细检查了我是否没有遗漏任何分号或类似的语法元素。我怎样才能让我的配置工作?我不想删除 resolvconf,因为它在我使用企业 VPN 时管理我的名称服务器中的更改并且它做得很好。看起来 dhclient 是这里的违规方。
/etc/dhcp/dhclient.conf
为了清楚起见,这是我目前删除的默认评论:
option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
send host-name = gethostname();
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, host-name,
dhcp6.name-servers, dhcp6.domain-search, …
Run Code Online (Sandbox Code Playgroud) 我的系统日志如下所示:
Apr 1 19:05:25 raspberrypi dhcpcd[699]: eth0: Router Advertisement from fe80::c23e:fff:fe63:5170
Apr 1 19:07:35 raspberrypi dhcpcd[699]: eth0: Router Advertisement from fe80::c23e:fff:fe63:5170
Apr 1 19:10:26 raspberrypi dhcpcd[699]: eth0: Router Advertisement from fe80::c23e:fff:fe63:5170
Apr 1 19:13:10 raspberrypi dhcpcd[699]: eth0: Router Advertisement from fe80::c23e:fff:fe63:5170
Apr 1 19:15:13 raspberrypi dhcpcd[699]: eth0: Router Advertisement from fe80::c23e:fff:fe63:5170
Apr 1 19:17:01 raspberrypi CRON[8809]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Apr 1 19:18:05 raspberrypi dhcpcd[699]: eth0: Router Advertisement from fe80::c23e:fff:fe63:5170
Apr 1 19:20:41 raspberrypi dhcpcd[699]: …
Run Code Online (Sandbox Code Playgroud) dhcp ×10
debian ×2
dhclient ×2
networking ×2
resolv.conf ×2
centos ×1
command-line ×1
dns ×1
fedora ×1
freebsd ×1
hostname ×1
hosts ×1
raspbian ×1
resolvconf ×1
syslog ×1
systemd ×1
wifi ×1