我的主机是 Ubuntu 12.04,来宾是 Debian squeeze(LAMP 服务器)。我想允许主机连接访客。并允许客人连接互联网。不应从外部启用来宾。这就是我不使用网桥的原因。我想为主机设置静态IP。我跟着本教程。
所以我采取了这些步骤,但我无法通过ssh
从主机到访客进行连接。我无法通过浏览器调用服务器。ping
然而有效!
我使用以下设置创建了一个仅虚拟主机的网络适配器 ( vboxnet0
):
IPv4-Adress: 192.168.56.1
IPv4-Netmask: 255.255.255.0
ifconfig
在 Ubuntu 主机中显示:
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 scrape guest 上,/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 地址(如主机接口上的 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,可以在那里设置 ip_forward。