linux虚拟机网络配置NAT模式下,ip是动态的。

linux虚拟机网络配置NAT模式下,ip是动态的。,第1张

虚拟机上边菜单

edit->Virtual Network Editor->选择Vmnet8->有个 Use local DHCP service to distribute IP address 前面对号取消

由于要使用网络通讯,所以不可避免的要用到dhcp。理想的网络通讯方式是下面3种都要支持:

1,接入已有网络。这便要求可以作为dhcp客户端,自动获取Ip。

2,作为DHCP服务器,动态分配IP。

3,指定固定IP

第3种情况没有什么好说的,简单说下前2种情况。

使用步骤:

(1)在内核的网络项里面把DHCP配置上,

Networking --->

Networking support

Networking options --->

Packet socket //添加.配置CONFIG_PACKET

[ * ] IP: DHCP support //添加

[ * ] Network packet filtering (replaces ipchains) ---> //添加,后面子选项可不选,配置CONFIG_NETFILTER

说明:若没选 Packet socket, [ * ] Network packet filtering (replaces ipchains) --->选项,在执行udhcpc命令时出现如下错误:

[root@(none) /]# udhcpc -f

udhcpc (v1.13.2) started

eth0: link up, 100Mbps, full-duplex, lpa 0x41E1

udhcpc: socket: Address family not supported by protocol

(2)在busybox里面把[*]udhcp server(udhcpd)

[*]udhcp client(udhcpc)都选上。

udhcpd就是终端设备作为DHCP服务器 ;udhcpc就是终端设备作为DHCP客户端

若busybox没编译相应选项,也可从网上下载相应文件,用arm-linux交叉编译得到udhcpd,udhcpc命令copy到usr/sbin下就可以了。

1>编译Busybox,使make menuconfig,添加以下选项:

Networking Utilities --->

udhcp Server/Client --->

[ ] udhcp Server (udhcpd) //在此不作服务端,故不选。生成udhcpd命令

udhcp Client (udhcpc) //生成udhcpc命令

[ ] Lease display utility (dumpleases)

[ ] Log udhcp messages to syslog (instead of stdout)

[ ] Compile udhcp with noisy debugging messages

若busybox没编译相应选项,也可从网上下载相应文件,用arm-linux交叉编译得到udhcpd,udhcpc命令copy到usr/sbin下就可以了。

说明:有种方法说是从网上下的udhcp_0.9.8cvs20050303.orig.tar.gz文件,解压后修改Makefile文件,

在19行添加CROSS_COMPILE=arm-linux-

注释12行的COMBINED_BINARY=1,

否则不生成udhcpc命令。

注:使用0.9.8版本的udhcp貌似也不行,重新编译Busybox1.9.2版本。

2>使用Busybox下的simple.script,/usr/share/udhcpc/下,并重命名为default.script,修改default.script中RESOLV_CONF="/etc/resolv.conf"为RESOLV_CONF="/tmp/resolv.conf"

说明:从网上下了几个default.script貌似无法使用,提示无法找到default.script文件,使用上面的方法较好。由于使用Cramfs文件系统,etc目录不可写,运行udhcp.c时会提示无法创建resolv.conf

3>将生成的udhcpc复制到开发板/sbin下,在控制台下运行udhcpc即可,很快就可以从DHCP SERVER获得IP地址。但是有个问题,开发板可以获得IP地址,在路由器里也可以看到分配地址了,问题是一使用PING命令,不管是PC 机PING 开发板,还是开发板PING PC 机,就会造成开发板死机。试了好多方法,检查ROUTE,检查ARP,修改Default.script ,始终无法解决。

1>使用udhcpc时 ,就可以直接把simple.script拿来使用,busybox里面默认的目录文件是/usr/share/udhcpc/default.script(改下名)

可以查看下帮助

# udhcpc --help

#udhcpc -f

udhcpc 之后需要关闭网卡,之后需要送重开网卡使用命令

ifconfig eth0 down

ifconfig eht0 up

之后就能正常工作了,

如果无法PING本机,设置回环地址就可以了

ifconfig lo 127.0.0.1

/************PC上使用udhcpc*****************************

从使用的角度来说,无线网卡最好用DHCP动态获取IP地址,在LINUX下使用DHCP获取地址有几种方法,在桌面机LINUX一种是配置网卡的启动脚本。即修改/etc/sysconfig/networks-scripts/ifg-XXXX(后面是设备名)。如wlan0的设备就是 ifconfig-wlan0.第一块网卡就是 ifg-eth0,

静态IP的配置文件如下

DEVICE=eth0

BOOTPROTO=none

BROADCAST=192.168.0.255

IPADDR=192.168.0.146

NETMASK=255.255.255.0

NETWORK=192.168.0.0

ONBOOT=yes

USERCTL=no

PEERDNS=no

TYPE=Ethernet

如果用动态IP则修改成

DEVICE=eth0

BOOTPROTO=dhcp # 以后的配置均失效。

BROADCAST=192.168.0.255

IPADDR=192.168.0.146

NETMASK=255.255.255.0

NETWORK=192.168.0.0

ONBOOT=yes

USERCTL=no

PEERDNS=no

TYPE=Ethernet

然后ifconfig eth0 down ,再打开ifconfig eth0 up即可申请IP。

*****************************************************/

2>使用udhcpd,同样可以直接把busybox自带的udhcpd.conf作为参考,按要求配置一下udhcpd.config文件。

可以查看下帮助

# udhcpd --help

运行的时候直接#udhcpd -fs /etc/udhcpd.conf

还有一个租约文件(udhcpd.leases)要简要说说,使用udhcpd时会要求建立一个租约文件,按照提示创建一个就行了,它起什么作用呢?就是为了记录客户端所获得的IP,如果没有租约文件,则会重新给客户端分配一个新IP,如果有,则使用原先分配的IP。

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

另外,摘抄ifconfig用法文章

ifconfig 命令由超级用户使用,用来配置所有的网络接口参数。也可以被用来重新定义一个接口的IP地址或其它的操作参数。

一、检查网络接口

例如:

*检查所有网络接口的状态:

# ifconfig –a

lo0: flags=849<UP,LOOPBACK,RUNNING,MULTICAST>mtu 8232

inet 127.0.0.1 netmask ff000000

le0: flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST>

mtu 1500 inet 128.50.1.2 netmask ffff0000 broadcast 128.50.255.255

ether 8:0:20:75:6e:6f

*检查一个接口的状态:

# ifconfig le0

le0: flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST>

mtu 1500 inet 128.50.1.2 netmask ffff0000 broadcast 128.50.255.255

ether 8:0:20:75:6e:6f

各字段含义:

lo0,le0——网络接口的设备名

Flags——网络接口状态的数字表示方式,状态变量已经在包中定义,将在后来讨论。

MTU——MTU用来定义包的存储片

Inet——接口的Internet 地址

netmask——掩码应用于网络层包的输入和输出。掩码被用来定义哪些值是用来表示网络地址的位。

Broadcast——广播地址,用来发送信息到所有主机。

Ether——由ARP使用的以太网地址(MAC)

—状态段

UP——这个标志指出这个接口是开放的,可以发送和接收数据。

DOWN——相反的,这个标志指出这个接口是关闭的,也就是说,此时不能为主机发送和转发包。

NOTRAILERS——这个标志指出了一个报文尾不包括以太帧的尾部。报文尾是在Berkerley Unix系统中使用的把信息头加到包尾的一种方式。在Solaris2.x系统中已经不支持。

RUNNING——这个标志指出,该接口已经被系统识别。

MULTICAST——这表示接口支持多路传送地址。

BROADCAST——这表示接口支持广播地址。

二、网络地址配置

——解决网络接口故障

丢失,不完整,或不正确的配置网络接口参数,将会引起连接失败。如:一个主机可能拒绝挂接(mount)远程文件系统,拒绝发送和接收邮件,拒绝执行打印任务,如果一个主机的接口配置错误的话。

为了确保主机接口配置的正确,要检查如下几项:

所有的接口状态是否为UP

IP地址是否正确

子网掩码是否正确

广播地址是否正确

——重新配置网络接口参数

* 允许一个网络接口(Enable):

# ifconfig le0 up

# ifconfig le0

le0: flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST>

mtu 1500 inet 128.50.1.2 netmask ffff0000 broadcast 128.50.255.255

ether 8:0:20:75:6e:6f

*开放一个网络接口(Disable):

# ifconfig le0 down

# ifconfig le0

le0: flags=863<BROADCAST,NOTRAILERS,RUNNING,MULTICAST>mtu 1500

inet 128.50.1.2 netmask ffff0000 broadcast 128.50.255.255

ether 8:0:20:75:6e:6f

*关闭一个网络接口(Close):

# ifconfig le0 unplumb

# ifconfig le0

ifconfig : SIOCGIFFLAGS:le0:no such interface

*打开一个网络接口(Open):

# ifconfig le0 plumb

# ifconfig le0

le0:flags=842<BROADCAST,RUNNING,MULTICAST>mtu 1500

inet 0.0.0.0 netmask 0

ether 8:0:20:75:6e:6f

*设置一个IP地址,允许接口但不允许 trailers:

# ifconfig le0 inet 128.50.1.2 –trailers up

# ifconfig le0

le0: flags=842<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST>

mtu 1500 inet 128.50.1.2 netmask ffff0000 broadcast 128.50.255.255

ether 8:0:20:75:6e:6f

*改变掩码值和广播值来正确的反映新的掩码:

# ifconfig le0 netmask 255.255.255.0 broadcast +

# ifconfig le0

le0: flags=843<UP,BROADCAST,RUNNING,MULTICAST>mtu 1500

inet 128.50.1.2 netmask ffffff00 broadcast 128.50.1.255

ether 8:0:20:75:6e:6f

*在正确的设置子网掩码后改变所有的广播地址:

# ifconfig –a

lo0: flags=849<UP,LOOPBACK,RUNNING,MULTICAST>mtu 8232

inet 127.0.0.1 netmask ff000000

le0: flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST>mtu 1500

inet 128.50.1.5 netmask ffffff00 broadcast 128.50.255.255

ether 8:0:20:75:8b:59

le1: flags=842<BROADCAST,NOTRAILERS,RUNNING,MULTICAST>mtu 1500

inet 128.50.3.6 netmask ffffff00 broadcast 128.50.255.255

ether 8:0:20:75:8b:59

# ifconfig –a broadcast +

# ifconfig –a

lo0: flags=849<UP,LOOPBACK,RUNNING,MULTICAST>mtu 8232

inet 127.0.0.1 netmask ff000000

le0: flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST>mtu 1500

inet 128.50.1.5 netmask ffffff00 broadcast 128.50.1.255

ether 8:0:20:75:8b:59

le1: flags=842<BROADCAST,NOTRAILERS,RUNNING,MULTICAST>mtu 1500

inet 128.50.3.6 netmask ffffff00 broadcast 128.50.3.255

ether 8:0:20:75:8b:59

进VMware之前,右键,用管理员模式打开,后面需要管理员权限,先不要开虚拟机

按照①②配置, 把③的子网IP记住 ,后面要用到。

然后点击④进入NAT设置。

①中配置 默认网关 ,其中前三大位要与前面记住的子网IP前面相同,后面默认会配置2,也可以自定义。然后该默认网关192.168.248.2要记住,后面需要用到。

②照做就行

③按确定返回上图,再点击下栏确定就可以保存虚拟网络编辑器的配置。

①选择IPv4的项目,②然后进入属性。

默认是自动获得IP地址,勾选“使用下面的IP地址”自定义IP

①配置IP地址,前三位同虚拟网络编辑器配置的子网IP前三位相同,最后一位的1自定义,这里我设置为1

②配完①一般子网掩码会自动填好,没自动补上就填上虚拟网络编辑器里的子网掩码。

③默认网关就是干菜虚拟网络编辑器里面NAT设置里的那个默认网关。

④确定保存,然后再确定就保存成功了。

管理员模式进入VMware,选择要配置的那台虚拟机,进入网络适配器

如图配置即可。

打开虚拟机,建议用root用户登录,方便后面对ifcfg-eth0文件进行编辑。

打开terminal终端,输入指令: vim /etc/sysconfig/network-scripts/ifcfg-eth0

这是使用终端vim的方式修改,不会vim操作的自行百度,或者根据上面的路劲去找ifcfg-eth0文件打开进行修改。

下面的配置建议对字段进行复制,防止配错。

然后esc : wq保存

退出后,终端输入指令: service network restart 重启网络

然后 ping baidu.com,看能不能ping通,能说明能上网。

输入指令:ifconfig,查看刚才自定义的静态ip地址是否配置成功。

可以先本地cmd中ping 一下服务器

如图能ping通,接下来进入XShell,将该ip连接就可以了,至此虚拟机静态IP配置结束。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/426473.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-26
下一篇2023-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存