Мой хост — Ubuntu 12.04, а гость — Debian squeeze (сервер LAMP). Я хочу разрешить хосту подключать гостя. и разрешить гостю подключаться к Интернету. Гость не должен быть включен извне. Вот почему я не использую network-bridge. Я хочу настроить статический IP для хоста. Я следовалэтот урок.
Итак, я выполнил эти шаги, но не могу подключиться через ssh
хост к гостю. Я не могу вызвать сервер через браузер. ping
Однако работает!
Я создал виртуальный сетевой адаптер только для хоста ( vboxnet0
) со следующими настройками:
IPv4-Adress: 192.168.56.1
IPv4-Netmask: 255.255.255.0
ifconfig
в Ubuntu host показывает это:
eth0 Link encap:Ethernet Hardware Adresse XX:XX:XX:XX:XX:XX
inet Adresse:192.168.2.100 Bcast:192.168.2.255 Maske:255.255.255.0
inet6-Adresse: XXXX:XXX:XXXX:XXXX:X:X/XX Gültigkeitsbereich:Global
vboxnet0 Link encap:Ethernet Hardware Adresse XX:XX:XX:XX:XX:XX
inet Adresse:192.168.56.1 Bcast:192.168.56.255 Maske:255.255.255.0
inet6-Adresse: XXXX:XXX:XXXX:XXXX:X:X/XX Gültigkeitsbereich:Verbindung
UP BROADCAST RUNNING MULTICAST MTU:1500 Metrik:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:10069 errors:0 dropped:0 overruns:0 carrier:0
Kollisionen:0 Sendewarteschlangenlänge:1000
RX-Bytes:0 (0.0 B) TX-Bytes:1539501 (1.5 MB)
На гостевой ОС Debian Squeeze это /etc/network/interfaces
выглядит так:
# The host-only network interface
auto eth1
iface eth1 inet static
address 192.168.56.1
netmask 255.255.255.0
network 192.168.56.0
broadcast 192.168.56.255
Я уже пробовал поменять eth1
на eth0
, но безрезультатно.
В настройках VirtualBox беспорядочный режим позволяет виртуальным машинам и хосту подключаться.
Я достиг предела своих знаний.
выход:
netstat --inet --inet6 -ln | grep :22
ничего.
выход:
sudo iptables -L INPUT -nv
является:
Chain INPUT (policy ACCEPT 166 packets, 30786 bytes)
pkts bytes target prot opt in out source destination
решение1
Вам не следует использовать тот же IP-адрес в гостевой системе (например, в интерфейсе хоста). Если вы настраиваете vboxnet0 на хосте на IP-адрес 192.168.56.1, то в гостевой системе вам следует использовать, например, 192.168.56.2. Шлюзом для гостевой системы должен быть IP-адрес хоста (в вашем случае 192.168.56.1).
Это должно сделать соединение хост<->гость. Если вы хотите, чтобы у вашего гостя тоже был интернет, то вам следует замаскировать его IP (или сеть) на вашем хосте.
iptables -t nat -I POSTROUTING -s 192.168.56.0/24 -j MASQUERADE
sysctl net.ipv4.ip_forward=1
Возможно, вам придется настроить политику по умолчанию на пересылку или включить вашу замаскированную сеть:
iptables -P FORWARD ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
Примечание: Вы можете выполнить эти строки с правами root, чтобы включить доступ в Интернет для вашего гостя. Но эти строки, вероятно, должны быть в конфигурации вашего брандмауэра вашего хоста. (т.е. ufw). Файл конфигурации sysctl: /etc/sysctl.conf, вы можете установить ip_forward там, если хотите, чтобы он всегда был включен.