linux配置ip地址

linux配置ip地址,第1张

linux配置ip地址的方法如下:

工具:联想Y7000P、Windows10。

1、以根用户登录系统,然后使用lspci | grep Ethernet命令检查计算机上的以太网卡设备是否被内核检测到。在默认的情况下,只有root也就是根用户才有权限进行网络配置。红框内就是检测到的网卡信息。

2、使用ifconfig命令查看系统已经识别并已激活的网络接口。如果没有找到可以用“ifconfig-a”命令找到所有已识别包括未激活的网络接口,然后使用ifconfig网卡名up激活。可以看出我的CentOS6.4系统上有一块已激活的eth0网卡,下面就对这块网卡进行设置使它能够发挥作用。

3、这里我首先为大家演示如何临时指定IP地址。在命令行输入“ifconfig网卡名IP地址netmask子网掩码”就可以临时指定网卡的IP地址,但重启后失效。相对于上一张图,我的IP临时设置已经生效。

4、为大家演示如何永久改变IP地址。第一步用“vi/etc/sysconfig/network-scripts/ifcfg-eth0”编辑网卡eth0的配置文件。dhcp自动获取IP地址,那么IPADDR、NETMASK和GATWAY都可以不写。

5、使用service network restart命令重新启动network服务,使配置文件生效。四个状态都必须是OK,否则说明设置有问题,需要重新修改设置。

6、再次使用ifconfig命令查看网卡参数,可以看出IP地址修改成功,并且会一直保留。

IPv6头部的设计是一个简洁的基本头部后面根据需要加上多种不同类型的扩展头部,这种设计可以将不常用的功能通过选择性的添加不同的扩展头部实现,从而在保证了基本头部的简洁和处理的快速性。以Linux2.6.28版本内核为例,IPv6扩展首部的定义在Linux-2.6.28/include/linux/in6.h和linux-2.6.28/include/net/ipv6.h两个目录下,我们以添加一种IPPROTO_MY类型的扩展头为例:

1、在头文件中添加新类型扩展头的定义,在linux-2.6.28/include/linux/in6.h中

/*

* NextHeader field of IPv6 header

*/

#define NEXTHDR_HOP 0 /* Hop-by-hop option header. */

#define NEXTHDR_TCP 6 /* TCP segment. */

#define NEXTHDR_UDP 17 /* UDP message. */

#define NEXTHDR_IPV6 41 /* IPv6 in IPv6 */

#define NEXTHDR_ROUTING 43 /* Routing header. */

#define NEXTHDR_FRAGMENT 44 /* Fragmentation/reassembly header. */

#define NEXTHDR_ESP 50 /* Encapsulating security payload. */

#define NEXTHDR_AUTH 51 /* Authentication header. */

#define NEXTHDR_ICMP 58 /* ICMP for IPv6. */

#define NEXTHDR_NONE 59 /* No next header */

#define NEXTHDR_DEST 60 /* Destination options header. */

#define NEXTHDR_MOBILITY 135 /* Mobility header. */

#define IPPROTO_MY 200/*自己定义的头部类型 */

2、在linux-2.6.28/include/net/ipv6.h中定义结构体

/*

* IPV6 extension headers

*/

#define IPPROTO_HOPOPTS 0 /* IPv6 hop-by-hop options */

#define IPPROTO_ROUTING 43 /* IPv6 routing header */

#define IPPROTO_FRAGMENT 44 /* IPv6 fragmentation header */

#define IPPROTO_ICMPV6 58 /* ICMPv6 */

#define IPPROTO_NONE 59 /* IPv6 no next header */

#define IPPROTO_DSTOPTS 60 /* IPv6 destination options */

#define IPPROTO_MH 135 /* IPv6 mobility header */

自己定义新的扩展头类型如:

#define NEXTHDR_INDEX200/*IPv6 next header */

自己定义新的扩展头类型:

struct index_hdr{ /*index扩展头结构*/

__u8nexthdr

__u8hdrlen

__u16 reserved

__u32 skb_index

}

3、在需要添加头部和删除头部的源文件中添加添加和删除函数,届时直接调用这两个函数即可

static void ip6_index_add(struct sk_buff *skb,unsigned char *data,unsigned int len)

{

struct ipv6hdr *tmp_hdr

struct ipv6hdr *old_hdr

struct index_hdr *ih

u8 prevhdr

unsigned int hlen

unsigned int ilen

ilen=sizeof(struct index_hdr)

hlen=sizeof(struct ipv6hdr)

old_hdr=skb_network_header(skb)

prevhdr=old_hdr->nexthdr

if(prevhdr!=200){

old_hdr->nexthdr=NEXTHDR_INDEX

tmp_hdr = kmemdup(skb_network_header(skb), hlen, GFP_ATOMIC)

__skb_pull(skb, hlen) /*使data指针下移hlen长度,将ipv6头部去掉*/

ih = (struct index_hdr*)__skb_push(skb, ilen) /*上移data指针,将index头部添加进去*/

__skb_push(skb, hlen) /*继续上移data指针,将原来的ipv6头部加进去*/

skb_reset_network_header(skb)

memcpy(skb_network_header(skb), tmp_hdr, hlen)

/*为index扩展头赋值*/

ih->nexthdr = prevhdr

ih->hdrlen = 8

ih->reserved = 0

ih->skb_index = htonl(skb->xfrm_index)

skb->truesize += ilen

ipv6_hdr(skb)->payload_len += ilen

data = skb->data

len = skb->len

kfree(tmp_hdr)

}

}

static void ip6_index_del(struct sk_buff *skb,unsigned char *data,unsigned int len)

{

struct ipv6hdr *tmp_hdr

struct ipv6hdr *old_hdr

struct index_hdr *ih

u8 prevhdr

unsigned int hlen

unsigned int ilen

ilen=sizeof(struct index_hdr)

hlen=sizeof(struct ipv6hdr)

if(ipv6_hdr(skb)->nexthdr == 200){

tmp_hdr = kmemdup(skb_network_header(skb), hlen, GFP_ATOMIC)/*保存ipv6头*/

__skb_pull(skb, hlen) /*下移data指针,去掉ipv6头*/

skb_reset_network_header(skb)

ih=(struct index_hdr *)skb_network_header(skb)

prevhdr = ih->nexthdr

tmp_hdr->nexthdr = prevhdr

__skb_pull(skb, ilen) /*下移data指针,去掉index扩展头*/

__skb_push(skb, hlen)/*上移data指针,将原来的ipv6头添加回去*/

skb_reset_network_header(skb)

memcpy(skb_network_header(skb), tmp_hdr, hlen)

skb_reset_network_header(skb)

skb->truesize -= ilen

ipv6_hdr(skb)->payload_len -= ilen

kfree(tmp_hdr)

}

}

是用户需root 权限。在linux 系统的 /etc/sysconfig/network-script/ifcfg-eth0 文件中存放着网卡IP 地址配置的相关信息,它的具体格式为:[root@localhost network-scripts]# cat ifcfg-eth0DEVICE=eth0BOOTPROTO=noneONBOOT=yesTYPE=EthernetNETMASK=255.255.255.0IPADDR=IP 地址USERCTL=noPEERDNS=yesGATEWAY=网关地址(路由器的IP 地址)#ifconfig eth0 192.168.0.1 或者修改/etc/sysconfig/network-scripts/ 下的ifcfg-eth0#vi /etc/syssconfig/network-scripts/ifcfg-eth0DEVICE=eth0BOOTPROTO=staticHWADDR= 这里是你网卡的物理地址,通常检测到的网卡你就不用输入了ONBOOT=yesIPADDR=192.168.0.1NETMASK=255.255.255.0NETWORK=192.168.1.0BROADCAST=192.168.1.255GATEWAY= 这里输入你的网关,路由器的IP 地址保存退出#/sbin/service network restart如果网卡启动是OK 的话就说明IP 地址设定成功了。另外我们可以用ifconfig eth0 来显示当前的IP 来确认是否设置正确。利用以下命令:/etc/init.d/network reload 命令或service network [命令]重新导入该文件,实现网络启动。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7530258.html

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

发表评论

登录后才能评论

评论列表(0条)

保存