Ativar o encaminhamento no U1. A maioria dos SOs, por padrão, não faz roteamento de interface para interface, a menos que você os informe explicitamente.
Revise as regras de firewall no nível do SO no U1. Não esqueça nat
table também.
Eu tenho duas VMs de caixa virtual. U1 e U2
A VM U1 possui dois adaptadores, enp0s3, que são ligados ao meu adaptador sem fio em minha máquina host e enp0s8, que está conectado à rede interna denominada "inet". Além disso, também estou executando um servidor dhcp na interface enp0s8. Eu também configuro o endereço IP estático para a interface enp0s8 do U1 usando o arquivo / etc / network / interfaces
A VM U2 tem um adaptador, enp0s3, que está conectado à rede interna chamada "inet".
Agora, quando eu aumento o U1 e o U2 e faço
ping <u1_enp0s8_ip_address>
do U2 recebo uma resposta
No entanto, quando tento
ping <u1_enp0s3_ip_address>
do U2, não há resposta
Eu também já tentei
ping -I enp0s8 <u1_enp0s3_ip_address>
em U1 e não há resposta.
O que eu preciso fazer para que o enp0s8 no U1 possa se comunicar com o enp0s3 no U1?
Qualquer sugestão / resposta será muito apreciada. Eu tenho estado preso nisso por alguns dias agora.
(EDIT 1)
Saída do comando 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
(EDIT 2)
sudo iptables -L
saída de comando
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
(Editar 3)
Saída do comando route -n
route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 100 0 0 enp0s3
10.0.1.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s8
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enp0s8
192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s3
A rede do enp0s3 (interface de rede externa) é 192.168.0.0/24 e a rede do enp0s8 (interface de rede interna) é 10.0.1.0/24
Saída do comando sysctl net.ipv4.ip_forward
sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
Atenciosamente
Ativar o encaminhamento no U1. A maioria dos SOs, por padrão, não faz roteamento de interface para interface, a menos que você os informe explicitamente.
Revise as regras de firewall no nível do SO no U1. Não esqueça nat
table também.
No U1, você precisará configurar o NAT para a rede interna ou abri-lo e apenas encaminhar pacotes. Se você escolher o segundo, você precisará definir rotas apropriadas em qualquer máquina na sua LAN física que você deseja conectar à LAN virtual.
Se você deseja configurar o NAT, é necessário ativar o encaminhamento de pacotes e configurar algumas regras iptables
. Aqui está um script que eu uso que faz isso -
#!/bin/bash
# a very simple set of iptables commands
# to allow forwarding between ethernet
# devices
# which device is the one that connects to The World (or at least your
# non virtual LAN - this would be a Bridged or NAT (not NAT Network) type
# in VirtualBox
WAN_DEVICE="enp0s3"
# which device is the one that connects to Internal Only or Host Only network?
LAN_DEVICE="enp0s8"
# enable forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
# where is iptables located?
iptables='which iptables'
# flush all existing rules
$iptables -F
# this is for NAT
# enable masquerading
$iptables -t nat -A POSTROUTING -o $WAN_DEVICE -j MASQUERADE
# don't forward packets from off-lan to lan if
# they are a brand new connection being formed
$iptables -A FORWARD -i $WAN_DEVICE -o $LAN_DEVICE -m state --state NEW -j REJECT
# if the packets come from off-lan but they are
# related to a connection that was established from
# within the lan, go ahead and forward them
$iptables -A FORWARD -i $WAN_DEVICE -o $LAN_DEVICE -m state --state RELATED,ESTABLISHED -j ACCEPT
# whatever traffic comes from the lan to go to
# the world allow thru
$iptables -A FORWARD -i $LAN_DEVICE -o $WAN_DEVICE -j ACCEPT
Depois de executar isto, seus iptables devem se parecer com
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere state NEW reject-with icmp-port-unreachable
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Para apenas abri-lo, é um pouco exagerado, mas você pode simplesmente alterar as regras acima para aceitar todas as conexões e encaminhar para dentro / fora em ambas as interfaces. Fazendo isso, você também removeria o comando NAT / Masquerade, MAS precisaria definir rotas em qualquer máquina que desejasse conectar da LAN física para o virutal. Simplesmente comente as outras chamadas de $iptables
(exceto a de liberação) e duplique a última linha com as referências de dispositivo invertidas, o que reduz o script para -
#!/bin/bash
# a very simple set of iptables commands
# to allow forwarding between ethernet
# devices
# which device is the one that connects to The World (or at least your
# non virtual LAN - this would be a Bridged or NAT (not NAT Network) type
# in VirtualBox
WAN_DEVICE="enp0s3"
# which device is the one that connects to Internal Only network?
LAN_DEVICE="enp0s8"
# enable forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
# where is iptables located?
iptables='which iptables'
# flush all existing rules
$iptables -F
# whatever traffic comes from the lan to go to
# the world allow thru
$iptables -A FORWARD -i $LAN_DEVICE -o $WAN_DEVICE -j ACCEPT
# whatever traffic comes from the world to go to
# the lan allow thru
$iptables -A FORWARD -i $WAN_DEVICE -o $LAN_DEVICE -j ACCEPT
Depois de usar este, seus iptables devem se parecer com
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination