展開:
VM -- (eth0)RPI(wlan0) -- Router -- ISP
^ ^ ^ ^
DHCP Static DHCP GW
注:RPIホスト名:gateway
•目標は、ネットワークの外部からVMにアクセスできるようにすることでした。チュートリアル https://www.youtube.com/watch?v=IAa4tI4JrgI に従って、dhcpcdをインストールしてRPIにiptablesを構成することにより、ルーターとRPIのポート転送を介して達成されました。
•これが私のinterfaces
です。問題を修正するために、自動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)バインディングがコメントアウトされていても、常に同じIPを取得しているホストAccountant
を除いて、ホストがdhcpcd.confに従って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
Linuxのinterfaces
ファイルの表記規則は何ですか?
質問1.)申し訳ありませんが、いくつかのことを誤解しているようです。
dhcpcd
はDHCPclientデーモンであり、通常、ifupdown
から直接ではなく、NetworkManagerまたはsystemd
によって起動されます。これが、wlan0
のIPアドレス割り当てを処理するものです。
あなたはcan必要に応じてdhcpcd
で始まるsystemd
を使用しますが、ディストリビューションのすべての通常のネットワークインターフェイス構成ロジックを無効にする必要があります(つまり、コメント行以外の/etc/network/interfaces
は空にする必要があります)必要に応じて独自のカスタムスクリプトに置き換えます。これは特別な用途のみです。絶対に確信が持てない場合は、そうすべきではありません。
dhcpcd
が他のホストにIPアドレスを提供することはありません。 dhcpcd.conf
に追加したこの部分は、ISC DHCPserverデーモン、dhcpd
の構成ファイルに属しているようです(はい、1つだけです-文字の違い)代わりに:
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
を使用していません。そのため、これは、そのマニュアルページをすばやくグーグル検索することに基づいています。
質問2)あなたが言及したチュートリアルでは、dnsmasq
はeth0
でDHCPサーバーとして機能するはずでした。あなたはそれについて何も言わなかったので、それが走っていたかどうかわかりません。そうでない場合は、常に同じIPを取得していた1つのクライアントが、以前に受信した、まだ期限が切れていない古いDHCPリースに単にフォールバックしている可能性があります。はい。DHCPクライアントはDHCPリースを永続的に保存し、ネットワークでDHCPサーバーが機能していないように見える場合は、それを使い続けることがあります。
質問3.):/etc/network/interfaces
は、古典的なDebian/Ubuntuスタイルのネットワークインターフェイス構成ファイルです。 man interfaces
を使用してドキュメントを参照するか、 ここを参照 を使用してください
Debian、* Ubuntu、Raspbianなどでは、NetworkManagerはread/etc/network/interfaces
を実行しますが、-writeを実行しないプラグインを備えています。
nmcli
、nmtui
、または選択したデスクトップ環境のGUIベースのNetworkManager構成ツールなどのNetworkManager構成ツールを使用すると、構成は/etc/NetworkManager/system-connections/
ディレクトリのファイルに保存されます。
NetworkManagerがインストールされていない場合、/etc/network/interfaces
ファイルはifupdown
パッケージによって使用されます。このパッケージには、ifup
コマンドとifdown
コマンドが含まれています。パッケージには、起動時にifup -a
を実行するシステム起動スクリプトも含まれており、auto <interface name>
に/etc/network/interfaces
を含むすべてのネットワークインターフェイスを有効にします。新しいネットワークインターフェースのドライバーが自動ロードされ、ifup <interface name>
に/etc/network/interfaces
行がある場合にallow-hotplug <interface name>
を実行するudevルールもあります。