页次: 1
virtualbox中使用桥接方式和NAT,dhcp是为了上网的,static是为了与主机通信。
有个问题,ethernet-static永远都是优先使用,必须停掉static,才能dhcp上网。
#netctl list
* ethernet-static
ethernet-dhcp
离线
要处理下路由表。我都是手工用 route 或者 ip route 命令做的。
离线
还是搞不定,我的主机是通过端口代理上网的,虚拟机中也指定了代理服务器才能上网。跟这有关系吗?
eth0: 10.0.2.15 dhcp NAT 上网用的
eth1: 192.168.1.23 static 桥接
主机: 192.168.1.103
公司代理服务器: 192.168.1.10:808
eth1虽然与主机在同一网段,但是公司mac绑定上不了网,只能通过eth0
route add -net 192.168.1.0 netmask 255.255.255.0 eth0 没啥效果
离线
那你只用 host only 网卡好了,主机建立个 NAT,这样既可以与主机通讯又可以上外网了。vbox 好像新加了个网卡模式就是这么干的。
离线
host only 模式加 iptables 主机ip转发 即可完美使用 详见 http://my.oschina.net/huozhe3136/blog/100237
Arch Linux User
离线
本来是用host only挺好的,但有个致命问题,主机端没法当成真正的接口使用,我搞网络开发,如果将VirtualBox Host-Only Network作为服务端bind,客户端就无法连接,错误提示这个socket是异步的不能立即完成之类的。
离线
本来是用host only挺好的,但有个致命问题,主机端没法当成真正的接口使用,我搞网络开发,如果将VirtualBox Host-Only Network作为服务端bind,客户端就无法连接,错误提示这个socket是异步的不能立即完成之类的。
这样?
Shell 1:
>>> ifconfig vboxnet0
vboxnet0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.56.1 netmask 255.255.255.0 broadcast 192.168.56.255
inet6 fe80::800:27ff:fe00:0 prefixlen 64 scopeid 0x20<link>
ether 0a:00:27:00:00:00 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 107 bytes 14867 (14.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
10106 ~tmp
>>> py
Python 3.3.3 (default, Nov 26 2013, 13:33:18)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import socket
>>> s = socket.socket()
>>> s.bind(('192.168.56.1', 1234))
>>> s.listen(10)
>>> s.accept()
(<socket.socket object, fd=5, family=2, type=1, proto=0>, ('192.168.56.3', 41251))
>>> _[0].recv(1024)
b'abc'
>>>
Shell 2:
>>> DISPLAY=:0 VBoxManage startvm Arch32
Waiting for VM "Arch32" to power on...
VM "Arch32" has been successfully started.
10004 ~tmp
>>> ssh root@192.168.56.3
Last login: Sun Jan 5 00:49:18 2014 from 192.168.56.1
251 ~
### py
Python 3.3.3 (default, Nov 26 2013, 13:47:45)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import socket
>>> s = socket.socket()
>>> s.connect(('192.168.56.1', 1234))
>>> s.send(b'abc')
3
>>>
252 ~
###
Connection to 192.168.56.3 closed.
离线
chenzhengxi 说:本来是用host only挺好的,但有个致命问题,主机端没法当成真正的接口使用,我搞网络开发,如果将VirtualBox Host-Only Network作为服务端bind,客户端就无法连接,错误提示这个socket是异步的不能立即完成之类的。
这样?
Shell 1:
>>> ifconfig vboxnet0 vboxnet0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.56.1 netmask 255.255.255.0 broadcast 192.168.56.255 inet6 fe80::800:27ff:fe00:0 prefixlen 64 scopeid 0x20<link> ether 0a:00:27:00:00:00 txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 107 bytes 14867 (14.5 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 10106 ~tmp >>> py Python 3.3.3 (default, Nov 26 2013, 13:33:18) [GCC 4.8.2] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import socket >>> s = socket.socket() >>> s.bind(('192.168.56.1', 1234)) >>> s.listen(10) >>> s.accept() (<socket.socket object, fd=5, family=2, type=1, proto=0>, ('192.168.56.3', 41251)) >>> _[0].recv(1024) b'abc' >>>
Shell 2:
>>> DISPLAY=:0 VBoxManage startvm Arch32 Waiting for VM "Arch32" to power on... VM "Arch32" has been successfully started. 10004 ~tmp >>> ssh root@192.168.56.3 Last login: Sun Jan 5 00:49:18 2014 from 192.168.56.1 251 ~ ### py Python 3.3.3 (default, Nov 26 2013, 13:47:45) [GCC 4.8.2] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import socket >>> s = socket.socket() >>> s.connect(('192.168.56.1', 1234)) >>> s.send(b'abc') 3 >>> 252 ~ ### Connection to 192.168.56.3 closed.
不是这样的,虚拟机做服务器,主机访问,shell 2 应该在主机端,错误依旧(the socket is makred as nonblocking ...)
离线
搞不定,经hostonly通信。
主机做服务端,虚拟机当客户端正常使用,反过来就不行。
主机做服务器,主机访问主机也不行。
虚拟机做服务器,虚拟机访问没问题。
离线
不是这样的,虚拟机做服务器,主机访问,shell 2 应该在主机端,错误依旧(the socket is makred as nonblocking ...)
反过来也没问题(实际上 ssh 没问题已经说明没有问题了):
shell 1:
10005 ~tmp
>>> DISPLAY=:0 VBoxManage startvm Arch32
Waiting for VM "Arch32" to power on...
VM "Arch32" has been successfully started.
10006 ~tmp
>>> ssh root@192.168.56.3
Last login: Sun Jan 5 00:53:49 2014 from 192.168.56.1
251 ~
### py
Python 3.3.3 (default, Nov 26 2013, 13:47:45)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import socket
>>> s = socket.socket()
>>> s.bind(('192.168.56.3', 1234))
>>> s.listen(10)
>>> s.accept()
(<socket.socket object, fd=4, family=2, type=1, proto=0>, ('192.168.56.1', 52252))
>>> s = _[0]
>>> s.send(b'aaa')
3
>>> s.recv(1024)
b'abc'
>>>
251 ~
###
Connection to 192.168.56.3 closed.
10007 ~tmp
>>> DISPLAY=:0 VBoxManage controlvm Arch32 savestate
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
shell 2:
10536 ~tmp
>>> py
Python 3.3.3 (default, Nov 26 2013, 13:33:18)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import socket
>>> s = socket.socket()
>>> s.connect(('192.168.56.3', 1234))
>>> s.send(b'abc')
3
>>> s.recv(1024)
b'aaa'
你确定不是你那个报错的程序自身的问题?
离线
你确定不是你那个报错的程序自身的问题?
我非常确定我那个报错的程序自身有问题...
我的程序用的是非阻塞的socket,用的网络调试助手估计也是非阻塞的。
阻塞连接没问题。
我再研究下,但可以肯定这个虚拟网卡没真网卡好使。
离线
那你确定你会用非阻塞 socket?非阻塞 socket 出现那个错误很正常啊……
离线
那你确定你会用非阻塞 socket?非阻塞 socket 出现那个错误很正常啊……
搞定了,这个接口稍微有点延时,习惯用非阻塞还不加判断做测试,这次栽了。
离线
页次: 1