标题: [原创]VirtualBox网络配置详解
来自 http://www.linuxsir.org/bbs/showthread.php?p=1800679#post1800679



欢迎转载, 转载请注明作者, 谢谢

下面简单介绍一下Test-bed Environment:

Host : 偶的本本
OS : Arch Linux (Kernel Version 2.6.20) 已安装uml_utilities(包含tunctl工具)和bridge-utils(包含brctl工具)两个包.
Username : leemars
LAN IP : 192.168.1.106/24
Interface : ath0

Guest : 偶的本本上的一个虚拟机
OS : Win2003
Host Interface : tap0

Non-Host : 偶的台式机
OS : WinXP
LAN IP : 192.168.1.120/24

Wireless Router:
LAN IP : 192.168.1.1/24 Gateway
WAN IP : 172.18.60.55/24 绑定MAC
Router开启了DHCP

Network Environment :
Non-Host直接接在无线路由上, Host通过无线网卡与无线路由连接. 无线路由开启了DHCP功能.

===================================

最简单的方案 : NAT(by VirtualBox)

Host :
直接使用VirtualBox提供的NAT功能.

Guest :
网卡设置为使用DHCP.

Guest -> WAN :
由VirtualBox的NAT提供WAN的访问服务.

Guest -> Host :
需要注意的是, 如果直接访问Guest拿到的网关IP, 会发现这个IP似乎是Host. 不过事实上不能直接访问网关IP来访问Host. 因为这个IP是由VirtualBox负责的, 只实现了NAT的功能, 其他的一些功能并不能正常运行(如FTP). 如果要访问Host, 应该访问Host的真实IP.

Host -> Guest :
不可访问. 虽然VirtualBox的NAT功能中包括了Port Forwarding的功能, 但截至到1.3.6 Snapshot, 这个功能仍没有出现在GUI中. 不过在OSE Version中已经可以使用这个功能. 通过Port Forwarding可以实现部分的向内访问.

VirtualBox NAT没有什么玩法了. 下面的方案都是使用VirtualBox的Host Interface功能.

-----------------------------------------------------------------------------
方案一 : NAT(by Linux) + Route

Host :
#echo 1 > /proc/sys/net/ipv4/ip_forward #打开转发功能
#iptables -t nat -A POSTROUTING -j MASQUERADE #利用iptables完成NAT功能

#chmod 0666 /dev/net/tun #设置访问权限
#tunctl -t tap0 -u leemars #建立一个tap设备, 名字为tap0, 所有者为leemars
#ifconfig tap0 up #激活tap0
#ifconfig tap0 10.10.10.1 netmask 255.255.255.0 #为tap0指定IP和网段, 为10.10.10.1/24.

Guest :
网卡设置如下:
IP : 10.10.10.10
Netmask : 255.255.255.0
Gateway : 10.10.10.1

Guest -> WAN :
由Linux的iptables完成NAT功能, 提供WAN的访问服务.

Guest -> Host :
10.10.10.1是真实的Host. Guest对Host的任何访问都可以通过访问10.10.10.1来完成.

Host -> Guest :
10.10.10.10是真实的Guest. Host对Guest的任何访问都可以通过访问10.10.10.10来完成.

Non-Host -> Guest :
因为Guest是在Host的NAT之后的一个私有子网中, 所以直接访问是不行的. 不过可以通过iptables来完成Port Forwarding, 实现部分的向内访问.

-----------------------------------------------------------------------------

方案二 : Transparent Bridge (Layer 2)

在我的机器上测试下来的结果很遗憾, 无线网卡似乎不能配合Bridge工作. 建好Bridge之后, Guest只能访问Host, 连网关都访问不到. 所以我改用有线网卡来进行测试, 有线网卡为eth0, IP地址同ath0.

Host :

#chmod 0666 /dev/net/tun #设置访问权限
#tunctl -t tap0 -u leemars #建立一个tap设备, 名字为tap0, 所有者为leemars

#ifconfig eth0 0.0.0.0 promisc #使eth0进入promiscuous模式
#ifconfig tap0 0.0.0.0 promisc #使tap0进入promiscuous模式
#brctl addbr br0 #增加一个网桥
#brctl addif br0 eth0 #将eth0加入网桥
#ifconfig eth0 up #激活eth0
#dhclient br0 #为br0设置IP地址
#brctl addif br0 tap0 #将tap0加入网桥
#ifconfig tap0 up #激活tap0

Guest :
网卡设置为DHCP. 或者在设置为Host的Subnet中的一个IP地址, 如下例:
IP : 192.168.1.201
Netmask : 255.255.255.0
Gateway : 192.168.1.1

Guest -> WAN :
由网关提供WAN的访问服务.

Guest -> Host :
直接访问Host的IP地址即可.

Host -> Guest :
直接访问Guest的IP地址即可.

Non-Host -> Guest :
直接访问Guest的IP地址即可.
(由于建立了eth0和tap0的Bridge, Non-Host的ARP包被eth0接收到后, 被Brideg转发至tap0上, 数据链路得以建立.)

-----------------------------------------------------------------------------

方案三 : Transparent IP (Layer 3) proxy ARP bridge (by parprouted)

Host :
#echo 1 > /proc/sys/net/ipv4/ip_forward #打开转发功能

#chmod 0666 /dev/net/tun #设置访问权限
#tunctl -t tap0 -u leemars #建立一个tap设备, 名字为tap0, 所有者为leemars
#ip link set tap0 up #激活tap0
#ip addr add 169.1.1.1/32 dev tap0 #为tap0任意指定一个私有地址
#parprouted [-d] ath0 tap0 #启动parprouted监听ath0和tap0. -d参数为Debug模式

Guest :
网卡设置如下:
IP : 192.168.1.201
Netmask : 255.255.255.0
Gateway : 192.168.1.1

Guest -> WAN :
由网关来提供WAN的访问服务.

Guest -> Host :
直接访问Host的IP地址即可.

Host -> Guest :
直接访问Guest的IP地址即可.

Non-Host -> Guest :
直接访问Guest的IP地址即可.

Troubleshooting:
这个parprouted软件有时会出现无法连通的情况. 这时可以尝试更换Guest的IP地址来解决问题. 这个貌似是parprouted软件的BUG.

-----------------------------------------------------------------------------

方案四 : ARP Proxy(by Linux) + Route

Host :
#echo 1 > /proc/sys/net/ipv4/ip_forward #打开转发功能

#chmod 0666 /dev/net/tun #设置访问权限
#tunctl -t tap0 -u leemars #建立一个tap设备, 名字为tap0, 所有者为leemars
#ip link set tap0 up #激活tap0
#route add -host 192.168.1.201 dev tap0 #增加一个路由, 将192.168.1.201定向到tap0
#echo 1 > /proc/sys/net/ipv4/conf/ath0/proxy_arp #打开ath0上的ARP Proxy
#echo 1 > /proc/sys/net/ipv4/conf/tap0/proxy_arp #打开tap0上的ARP Proxy

Guest :
网卡设置如下:
IP : 192.168.1.201
Netmask : 255.255.255.0
Gateway : 192.168.1.1

Guest -> WAN :
由网关来提供WAN的访问服务.

Guest -> Host :
直接访问Host的IP地址即可.

Host -> Guest :
直接访问Guest的IP地址即可.

Non-Host -> Guest :
直接访问Guest的IP地址即可.

转载于:https://blog.51cto.com/axlrose/1294440

[转载]VirtualBox网络配置详解相关推荐

  1. 中标麒麟网络配置详解

    配置文件所在目录 cd /etc/sysconfig/network-scripts/ 配置文件详解: 对应字段如何查询均在详细解释中说明 DHCP(自动获取) TYPE="Ethernet ...

  2. VMware网络配置详解

    VMware常用虚拟机的常用的Host-only.Bridge.NAT三种网络连接方式,以下是个人使用的部分经验分享. 一 VMware网络设置的三种方式 1 Host-only连接方式 (1)原理: ...

  3. Linux系统中网络配置详解

    从linux诞生的那一天起,就注定了它的网络功能空前地强大.所以在linux系统中如何配置网络,使其高效,安全的工作就显得十分重要.下面我们就从网络设备的安装,网络服务的设置和网络安全性三个方面来介绍 ...

  4. Linux系统中网络配置详解(一)

       从linux诞生的那一天起,就注定了它的网络功能空前地强大.所以在linux系统中如何配置网络,使其高效,安全的工作就显得十分重要.下面我们就从网络设备的安装,网络服务的设置和网络安全性三个方面 ...

  5. RedHat Linux网络配置详解

    1.以太网接口         以太网最常见的接口文件是ifcfg-eth0,它控制系统里的第一个以太网卡.如果系统里有多个网卡,就有多个配置文件ifcfg-eth (是特定接口的唯一标识).因为每个 ...

  6. Docker6种网络配置详解,网络模式应该这么选

    文章目录 一.Bridge网络模式 二.Host网络模式 三.Overlay网络模式 四.None网络模式 五.Macvlan网络模式 六.Ipvlan网络模式 七.网络模式选择 在Docker中,网 ...

  7. 【Linux】Linux网络配置详解

    网络配置 一.网络连接测试 1.查看宿主机和虚拟机ip (1)查看宿主机ip ①宿主机:可视化界面查看ip ②宿主机:命令行查看ip (2)查看虚拟机ip ①虚拟机:可视化界面查看ip ②虚拟机:命令 ...

  8. VM虚拟机三种网络配置详解(桥接、NAT、仅主机)

    在学习网络配置之前,需要搞明白有关于网络的一些基本概念,什么是ip,子网掩码,网段,网关?这里只做最简单的解释,实际上远远不止这些. 网络名词 ip 在现实生活中,这么大的一个中国,物流怎么能清楚的找 ...

  9. Virtualbox虚拟机网络配置详解

    目录 1. 使用桥接(Bridged Adapter)模式. 2. 使用HostOnly模式+网络共享的方式. 3. 使用双网卡,HostOnly模式+NAT转换. 在默认情况下,Virtualbox ...

最新文章

  1. 读CLR via C#总结(4) 值类型的装箱和拆箱
  2. Python除了人工智能,还能从事哪些工作?
  3. fastreport 直接调网络打印机_为什么UV打印机不能打印凹凸不平的材料?
  4. centos7.0搭建svn服务器
  5. guava 并发_Google Guava并发– ListenableFuture
  6. react学习路线图,学习react就是有捷径
  7. ORA-32004问题解决
  8. java基础的知识_Java基础知识点(一)
  9. python进阶05并发之一基本概念
  10. ant+testng 搭建
  11. c# 中实用包,实用dll。
  12. js遍历数组和遍历对象的区别
  13. 面试简历上的项目经验
  14. html5迷宫小游戏,JS实现的走迷宫小游戏完整实例
  15. Halcon|通过旋转前后3维坐标点求旋转轴及旋转角度
  16. UIAutomatorViewer
  17. 毕设:基于CNN卷积神经网络的猫狗识别、狗品种识别(Tensorflow、Keras、Kaggle竞赛)
  18. Android 手机安装有微信,还是提示未安装微信
  19. java学生成绩管理系统类图,学生成绩管理系统的分析及设计-应用UML建模
  20. 一些值得一看的博友文章地址

热门文章

  1. 《深入理解JVM.2nd》笔记(四):虚拟机性能监控与故障处理工具
  2. postman 不安全网站_接口工具分析(apipost、jmeter、postman)
  3. boost::interprocess::named_mutex的翻译和学习
  4. Java集合Stream类
  5. Android设计模式之——模板方法模式
  6. 做好7步 迅速成为行业专家
  7. OpenCL 第8课:旋转变换(2)
  8. 技术人员如何"正确"的浪费时间?
  9. 「LG2664 树上游戏」
  10. C#动态操作DataTable(新增行、列、查询行、列等)