“未執行 dhcpcd,因為 /etc/network/interfaces 定義了一些將使用 DHCP 客戶端或靜態地址的介面”
部署:
VM -- (eth0)RPI(wlan0) -- Router -- ISP ^ ^ ^ ^ DHCP Static DHCP GW
注意:RPI 主機名:
gateway
• 目標是使虛擬機可以從網路外部訪問。根據教程https://www.youtube.com/watch?v=IAa4tI4JrgI,通過路由器和 RPI 上的埠轉發,通過在 RPI 上安裝 dhcpcd 和配置 iptables 來完成。
• 這是我
interfaces
的,我已經註釋掉了 auto wlan0,試圖解決這個問題(之前,它沒有被註釋,仍然是一樣的東西……)# interfaces(5) file used by ifup(8) and ifdown(8) # Please note that this file is written to be used with dhcpcd # For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf' # Include files from /etc/network/interfaces.d: source-directory /etc/network/interfaces.d #auto wlan0 iface wlan0 inet dhcp wpa-ssid FunBox-84A8 wpa-psk 7A73FA25C43563523D7ED99A4D #auto eth0 allow-hotplug eth0 iface eth0 inet static address 192.168.2.1 netmask 255.255.255.0 network 192.168.2.0 broadcast 192.168.2.255
• 以下
firewall.conf
是iptables
:# Generated by iptables-save v1.6.0 on Sun Feb 17 20:01:56 2019 *nat :PREROUTING ACCEPT [86:11520] :INPUT ACCEPT [64:8940] :OUTPUT ACCEPT [71:5638] :POSTROUTING ACCEPT [37:4255] -A PREROUTING -d 192.168.1.21/32 -p tcp -m tcp --dport 170 -j DNAT --to-destination 192.168.2.83:22 -A PREROUTING -d 192.168.1.21/32 -p tcp -m tcp --dport 171 -j DNAT --to-destination 192.168.2.83:443 -A PREROUTING -d 192.168.1.21/32 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.2.66:3389 -A POSTROUTING -o wlan0 -j MASQUERADE COMMIT # Completed on Sun Feb 17 20:01:56 2019 # Generated by iptables-save v1.6.0 on Sun Feb 17 20:01:56 2019 *filter :INPUT ACCEPT [3188:209284] :FORWARD ACCEPT [25:2740] :OUTPUT ACCEPT [2306:270630] -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i eth0 -o wlan0 -j ACCEPT COMMIT # Completed on Sun Feb 17 20:01:56 2019 # Generated by iptables-save v1.6.0 on Sun Feb 17 20:01:56 2019 *mangle :PREROUTING ACCEPT [55445:38248798] :INPUT ACCEPT [3188:209284] :FORWARD ACCEPT [52257:38039514] :OUTPUT ACCEPT [2306:270630] :POSTROUTING ACCEPT [54565:38310208] COMMIT # Completed on Sun Feb 17 20:01:56 2019 # Generated by iptables-save v1.6.0 on Sun Feb 17 20:01:56 2019 *raw :PREROUTING ACCEPT [55445:38248798] :OUTPUT ACCEPT [2306:270630] COMMIT # Completed on Sun Feb 17 20:01:56 2019
•
iptables -L
:pi@gateway:/etc$ sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT all -- anywhere anywhere Chain OUTPUT (policy ACCEPT) target prot opt source destination
• 這裡是
dhcpcd.conf
:# A sample configuration for dhcpcd. # See dhcpcd.conf(5) for details. # Allow users of this group to interact with dhcpcd via the control socket. #controlgroup wheel # Inform the DHCP server of our hostname for DDNS. hostname # Use the hardware address of the interface for the Client ID. clientid # or # Use the same DUID + IAID as set in DHCPv6 for DHCPv4 ClientID as per RFC4361. # Some non-RFC compliant DHCP servers do not reply with this set. # In this case, comment out duid and enable clientid above. #duid # Persist interface configuration when dhcpcd exits. persistent # Rapid commit support. # Safe to enable by default because it requires the equivalent option set # on the server to actually work. option rapid_commit # A list of options to request from the DHCP server. option domain_name_servers, domain_name, domain_search, host_name option classless_static_routes # Most distributions have NTP support. option ntp_servers # Respect the network MTU. This is applied to DHCP routes. option interface_mtu # A ServerID is required by RFC2131. require dhcp_server_identifier # Generate Stable Private IPv6 Addresses instead of hardware based ones slaac private # Example static IP configuration: #interface eth0 #static ip_address=192.168.0.10/24 #static ip6_address=fd51:42f8:caae:d92e::ff/64 #static routers=192.168.0.1 #static domain_name_servers=192.168.0.1 8.8.8.8 fd51:42f8:caae:d92e::1 # It is possible to fall back to a static IP if DHCP fails: # define static profile #profile static_eth0 #static ip_address=192.168.1.23/24 #static routers=192.168.1.1 #static domain_name_servers=192.168.1.1 # fallback to static profile on eth0 #interface eth0 #fallback static_eth0 denyinterfaces eth0 host Accountant { hardware ethernet 10:60:4b:68:03:21; fixed-address 192.168.2.83; } host Accountant1 { hardware ethernet 00:0c:29:35:95:ed; fixed-address 192.168.2.66; } host Accountant3 { hardware ethernet 30:85:A9:1B:C4:8B; fixed-address 192.168.2.70; }
• 我無法弄清楚的錯誤消息:
root@gateway:/home/pi# systemctl restart dhcpcd Warning: dhcpcd.service changed on disk. Run 'systemctl daemon-reload' to reload units. Job for dhcpcd.service failed because the control process exited with error code. See "systemctl status dhcpcd.service" and "journalctl -xe" for details. root@gateway:/home/pi# systemctl status dhcpcd ● dhcpcd.service - dhcpcd on all interfaces Loaded: loaded (/lib/systemd/system/dhcpcd.service; enabled; vendor preset: enabled) Drop-In: /etc/systemd/system/dhcpcd.service.d └─wait.conf Active: failed (Result: exit-code) since Sun 2019-02-17 20:36:42 GMT; 6s ago Process: 775 ExecStart=/usr/lib/dhcpcd5/dhcpcd -q -w (code=exited, status=6) Feb 17 20:36:42 gateway systemd[1]: Starting dhcpcd on all interfaces... Feb 17 20:36:42 gateway dhcpcd[775]: Not running dhcpcd because /etc/network/interfaces Feb 17 20:36:42 gateway dhcpcd[775]: defines some interfaces that will use a Feb 17 20:36:42 gateway dhcpcd[775]: DHCP client or static address Feb 17 20:36:42 gateway systemd[1]: dhcpcd.service: Control process exited, code=exited status=6 Feb 17 20:36:42 gateway systemd[1]: Failed to start dhcpcd on all interfaces. Feb 17 20:36:42 gateway systemd[1]: dhcpcd.service: Unit entered failed state. Feb 17 20:36:42 gateway systemd[1]: dhcpcd.service: Failed with result 'exit-code'. Warning: dhcpcd.service changed on disk. Run 'systemctl daemon-reload' to reload units. root@gateway:/home/pi# root@gateway:/home/pi# systemctl daemon-reload root@gateway:/home/pi# systemctl status dhcpcd ● dhcpcd.service - dhcpcd on all interfaces Loaded: loaded (/lib/systemd/system/dhcpcd.service; enabled; vendor preset: enabled) Drop-In: /etc/systemd/system/dhcpcd.service.d └─wait.conf Active: failed (Result: exit-code) since Sun 2019-02-17 20:36:42 GMT; 1min 23s ago Feb 17 20:36:42 gateway systemd[1]: Starting dhcpcd on all interfaces... Feb 17 20:36:42 gateway dhcpcd[775]: Not running dhcpcd because /etc/network/interfaces Feb 17 20:36:42 gateway dhcpcd[775]: defines some interfaces that will use a Feb 17 20:36:42 gateway dhcpcd[775]: DHCP client or static address Feb 17 20:36:42 gateway systemd[1]: dhcpcd.service: Control process exited, code=exited status=6 Feb 17 20:36:42 gateway systemd[1]: Failed to start dhcpcd on all interfaces. Feb 17 20:36:42 gateway systemd[1]: dhcpcd.service: Unit entered failed state. Feb 17 20:36:42 gateway systemd[1]: dhcpcd.service: Failed with result 'exit-code'. root@gateway:/home/pi#
•
gateway
版本:pi@gateway:/etc$ cat os-release PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)" NAME="Raspbian GNU/Linux" VERSION_ID="9" VERSION="9 (stretch)" ID=raspbian ID_LIKE=debian
問題:
1)錯誤資訊
Not running dhcpcd because /etc/network/interfaces defines some interfaces that will use a DHCP client or static address
是什麼意思?根據我上面的配置,如何修復它?2)為什麼主機沒有根據我的 dhcpcd.conf 分配 IP 地址,除了主機
Accountant
,它總是獲得相同的 IP,我想要,即使註釋掉綁定……?如何解決它,以便能夠將多個主機 MAC 與 IP 綁定?3)這個符號是什麼意思:
#auto eth0 allow-hotplug eth0 iface eth0 inet static address 192.168.2.1 netmask 255.255.255.0 network 192.168.2.0 broadcast 192.168.2.255
interfaces
Linux中文件的符號規則是什麼?
問題 1.) 抱歉,您似乎誤解了一些事情。
dhcpcd
是一個 DHCP客戶端守護程序,通常由 NetworkManager 或 啟動ifupdown
,而不是直接由systemd
. 它將為您處理 IP 地址分配wlan0
。如果您願意,您可以使用
dhcpcd
as started bysystemd
,但是這將需要禁用分發的所有正常網路介面配置邏輯(即/etc/network/interfaces
必須為空的非註釋行),並在必要時用您自己的自定義腳本替換它。僅用於特殊用途;如果你不確定你應該這樣做,你不應該這樣做。
dhcpcd
永遠不會向任何其他主機提供 IP 地址。您添加的這部分dhcpcd.conf
看起來應該屬於 ISC DHCP伺服器守護程序的配置文件,dhcpd
(是的,它只是一個字母的區別)而不是:host Accountant { hardware ethernet 10:60:4b:68:03:21; fixed-address 192.168.2.83; } host Accountant1 { hardware ethernet 00:0c:29:35:95:ed; fixed-address 192.168.2.66; } host Accountant3 { hardware ethernet 30:85:A9:1B:C4:8B; fixed-address 192.168.2.70; }
但是,如果您按照您提到的 YouTube 教程進行操作,您甚至可能還沒有
dhcpd
安裝,因為dnsmasq
它應該完成這項工作。據我所知,等效的語法
dnsmasq.conf
是:dhcp-host=10:60:4b:68:03:21,192.168.2.83,Accountant dhcp-host=00:0c:29:35:95:ed,192.168.2.66,Accountant1 dhcp-host=30:85:A9:1B:C4:8B,192.168.2.70,Accountant3
免責聲明:我實際上沒有使用過
dnsmasq
,所以這是基於快速Google搜尋它的手冊頁。問題 2。)在您提到的教程中,
dnsmasq
應該充當eth0
. 你什麼都沒說,所以我不知道它是否正在執行。如果不是,則始終獲得相同 IP 的一個客戶端可能只是退回到先前收到的尚未到期的舊 DHCP 租約。是的,如果網路似乎沒有可用的工作 DHCP 伺服器,DHCP 客戶端可以永久儲存 DHCP 租約並繼續使用它。問題 3.):
/etc/network/interfaces
是一個經典的 Debian/Ubuntu 風格的網路介面配置文件。用於man interfaces
查看它的文件,或查看此處。在 Debian、Ubuntu、Raspbian 等中,NetworkManager 將有一個可以讀取
/etc/network/interfaces
但不會寫入*的外掛。如果使用 NetworkManager 配置工具
nmcli
,nmtui
或您選擇的桌面環境的基於 GUI 的 NetworkManager 配置工具,則配置將保存到/etc/NetworkManager/system-connections/
目錄中的文件中。如果未安裝 NetworkManager,則該
/etc/network/interfaces
文件由ifupdown
軟體包使用,其中包括命令ifup
和ifdown
. 該軟體包還包括一個系統啟動腳本,該腳本將在啟動時執行,ifup -a
啟用所有具有. 如果新網路介面的驅動程序被自動載入並有一行,則還有一個 udev 規則將執行。auto <interface name>``/etc/network/interfaces``ifup <interface name>``/etc/network/interfaces``allow-hotplug <interface name>