Acesso do roteador para virtualbox vm na rede interna

0

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

    
por Abdul Rahman 18.02.2018 / 14:52

2 respostas

1

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.

    
por 18.02.2018 / 15:30
1

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
    
por 18.02.2018 / 18:06