Eu criei duas máquinas Virtualbox, ambas com o Lubuntu Server 13.10.
Máquina servidor tem rede NAT Virtualbox e rede interna (IP estático 192.168.1.1), máquina cliente tem apenas adaptador de rede interna (IP estático 192.168.1.2) e está se conectando à Internet via máquina do servidor (servidor funciona como um gateway).
Eu atribuí IP local estático a ambos e criei algumas regras de IPtables. Tudo está funcionando, exceto por uma coisa - O cliente não pode fazer ping (nem conectar-se a) a ninguém (máquina do servidor ou à Internet) até que o computador do servidor envie um ping (ping 192.168.1.2). Depois de apenas alguns pacotes de ping, o computador cliente "desbloqueia" e tudo está funcionando bem.
Servidor ifconfig
:
eth0 Link encap:Ethernet HWaddr 08:00:27:20:03:00
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe20:300/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:260 errors:0 dropped:0 overruns:0 frame:0
TX packets:310 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:32003 (32.0 KB) TX bytes:32378 (32.3 KB)
eth1 Link encap:Ethernet HWaddr 08:00:27:fd:7d:aa
inet addr:192.168.1.1 Bcast:192.168.10.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fefd:7daa/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:34 errors:0 dropped:0 overruns:0 frame:0
TX packets:54 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:8537 (8.5 KB) TX bytes:9206 (9.2 KB)
Servidor iptables
:
iptables -F
iptables -F -t nat
iptables -X -t nat
iptables -F -t filter
iptables -X -t filter
iptables -P FORWARD ACCEPT
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A INPUT -i eth0 -s 10.0.2.15 -j DROP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -i eth1 -o eth0 -s 192.168.1.0/255.255.255.0 -d 0/0 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.1.0/255.255.255.0 -d 0/0 -j MASQUERADE
Cliente ifconfig
:
eth0 Link encap:Ethernet HWaddr 08:00:27:2d:ec:78
inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe2d:ec78/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6 errors:0 dropped:0 overruns:0 frame:0
TX packets:82 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:461 (461.0 B) TX bytes:11601 (11.6 KB)
Cliente iptables
:
iptables -F
iptables -F -t nat
iptables -X -t nat
iptables -F -t filter
iptables -X -t filter
iptables -P FORWARD DROP
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Desativou ufw
, mas o problema persiste. Também verifiquei as configurações do Virtualbox e elas parecem estar bem.
edit: Eu descobri o que está errado - após cada reinicialização O cliente tem uma tabela ARP errada:
Como posso consertar isso? Às vezes o arp -d 192.168.1.1
funciona, mas normalmente não consigo me livrar desse endereço MAC estranho ...
Mudei o endereço MAC para um visto na tela acima. Não ajudou - depois de algumas reinicializações, o endereço MAC mudou novamente.