Deployment:
VM -- (eth0)RPI(wlan0) -- Router -- ISP
^ ^ ^ ^
DHCP Static DHCP GW
NOTE: RPI hostname: gateway
• The goal was to make VMs accessible from the outside the network. Accomplished, according to the tutorial https://www.youtube.com/watch?v=IAa4tI4JrgI, via the Port Forwarding on Router and RPI, by installing dhcpcd and configuring iptables on RPI.
• Here is my interfaces
, where I have commented out the auto wlan0, in attempt to fix the issue (before, it was uncommented, and was still the same thing...)
# 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
• Here is the firewall.conf
used by the 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
• Here is the 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;
}
• The error message, that I am not able to figure out:
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
version:
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
Questions:
1) What does the error message Not running dhcpcd because /etc/network/interfaces defines some interfaces that will use a DHCP client or static address
mean? How to fix it, according to my config above?
2) Why hosts are not getting assigned the IP address according to my dhcpcd.conf, except the host Accountant
, which is always getting the same IP, which I want, even if comment out the binding...? How to fix it, in order to be able to bind more than one hosts MAC with IP?
3) What does this notation mean:
#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
What are the notation rules for the interfaces
file in Linux?