Я создал две машины Virtualbox, обе с Lubuntu Server 13.10. На серверном компьютере есть сеть Virtualbox NAT и внутренняя сеть (статический IP-адрес 192.168.1.1), на клиентском компьютере есть только внутренний сетевой адаптер (статический IP-адрес 192.168.1.2), и он подключается к Интернету через серверный компьютер (сервер работает в качестве шлюза).
Я назначил им статический локальный IP-адрес и создал несколько правил IPtables. Все работает, кроме одной вещи - Клиент не может пинговать (или подключаться) кого-либо (серверный компьютер или Интернет), пока компьютер сервера не отправит ему пинг (ping 192.168.1.2). После нескольких пинг-пакетов клиентский компьютер «разблокируется», и все работает нормально.
Сервер 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)
Сервер 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
Клиент 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)
Клиент 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
Я отключил ufw
, но проблема остается. Я также проверил настройки Virtualbox, и они, кажется, в порядке.
редактировать: я выяснил, что не так - после каждой перезагрузки клиент имеет неправильную таблицу ARP: Как я могу это исправить? Иногда arp -d 192.168.1.1
работает, но обычно я не могу избавиться от этого странного MAC-адреса ...
Я изменил MAC-адрес на тот, который показан на экране выше. Это не помогло - после нескольких перезапусков MAC-адрес снова переключился.
Я не специалист, но у меня возникла похожая проблема с VMWare. Команда ARP на клиенте показала разные MAC-адреса, это казалось почти случайным.
Я решил эту проблему, отключив виртуальные адаптеры VMNet от сети VMnet, которую я использовал в операционной системе хоста. «Странные» MAC-адреса были MAC-адресом этого виртуального адаптера. Теперь я могу сделать так, чтобы мои виртуальные клиенты немедленно подключались к Интернету через мой виртуальный сервер.
Надеюсь, это поможет