2013-03-14 133 views
2

我必须在基于Linux的电路板和主机(它可以是WinXP/Win7/Ubuntu等)之间建立一个RNDIS连接。基于Linux的USB小工具设备的静态主机RNDIS IP

当我使用RNDIS电缆连接主板时,所有主机都能识别并开始解析IP地址。在主板方面我给一个静态IP通过启动

ifconfig usb0 169.254.1.1 netmask 255.255.0.0 up 

执行命令,但主机需要很长的时间来谈判RNDIS IP每一次出现一些不可预知的IP,如169.254.abc.xyz

我想为连接到此Linux板的任何主机分配一个静态RNDIS IP(例如169.254.1.2)。有人能帮我确定我能做到吗?在主机端,我不使用任何特殊的RNDIS驱动程序。默认的USB-Ethernet驱动程序被下载。 Linux版本是2.3.62。

回答

2

好的..我得到了答案....其实我们必须通过接口usb0启动一个DHCP服务器。因此,无论何时USB主机将尝试寻找DHCP IP,在设备上运行的DHCP服务器以及在USB接口上列出的DHCP服务器都将应答呼叫并分配一个IP。要解决一个IP只是IP池assing OLY一个IP(可以在udhcpd.conf文件中完成)

启动服务器udhcpd为:

busybox udhcpd /etc/udhcpd.conf 

下面的dhcpd.conf其中的样品我使用:

# Sample udhcpd configuration file (/etc/udhcpd.conf) 
# Values shown are defaults 

# The start and end of the IP lease block 
start  169.254.10.102 
end  169.254.10.102 

# The interface that udhcpd will use 
interface usb0 

# The maximum number of leases (includes addresses reserved 
# by OFFER's, DECLINE's, and ARP conflicts). Will be corrected 
# if it's bigger than IP lease block, but it ok to make it 
# smaller than lease block. 
#max_leases 254 

# The amount of time that an IP will be reserved (leased to nobody) 
# if a DHCP decline message is received (seconds) 
#decline_time 3600 

# The amount of time that an IP will be reserved 
# if an ARP conflict occurs (seconds) 
#conflict_time 3600 

# How long an offered address is reserved (seconds) 
#offer_time 60 

# If client asks for lease below this value, it will be rounded up 
# to this value (seconds) 
#min_lease 60 

# The location of the pid file 
#pidfile /var/run/udhcpd.pid 

# The location of the leases file 
#lease_file /var/lib/misc/udhcpd.leases 

# The time period at which udhcpd will write out leases file. 
# If this is 0, udhcpd will never automatically write leases file. 
# Specified in seconds. 
#auto_time 7200 

# Every time udhcpd writes a leases file, the below script will be called 
#notify_file   # default: no script 
#notify_file dumpleases # useful for debugging 

# The following are bootp specific options 
# next server to use in bootstrap 
#siaddr  192.168.0.22 # default: 0.0.0.0 (none) 
# tftp server name 
#sname  zorak  # default: none 
# tftp file to download (e.g. kernel image) 
#boot_file /var/nfs_root # default: none 

# Static leases map 
#static_lease 00:60:08:11:CE:4E 192.168.0.54 
#static_lease 00:60:08:11:CE:3E 192.168.0.44 

# The remainder of options are DHCP options and can be specified with the 
# keyword 'opt' or 'option'. If an option can take multiple items, such 
# as the dns option, they can be listed on the same line, or multiple 
# lines. 
# Examples: 
#opt dns 192.168.10.2 192.168.10.10 
option subnet 255.255.255.0 
#opt router 192.168.10.2 
#opt wins 192.168.10.10 
#option dns 129.219.13.81 # appended to above DNS servers for a total of 3 
option domain local 
option lease 864000  # default: 10 days 
#option msstaticroutes 10.0.0.0/8 10.127.0.1  # single static route 
#option staticroutes 10.0.0.0/8 10.127.0.1, 10.11.12.0/24 10.11.12.1 
# Arbitrary option in hex form: 
option 0x08 01020304 # option 8: "cookie server IP addr: 1.2.3.4" 

# Currently supported options (for more info, see options.c): 
#opt lease  NUM 
#opt subnet  IP 
#opt broadcast IP 
#opt router  IP_LIST 
#opt ipttl  NUM 
#opt mtu  NUM 
#opt hostname STRING  # client's hostname 
#opt domain  STRING  # client's domain suffix 
#opt search  STRING_LIST # search domains 
#opt nisdomain STRING 
#opt timezone NUM  # (localtime - UTC_time) in seconds. signed 
#opt tftp  STRING  # tftp server name 
#opt bootfile STRING  # tftp file to download (e.g. kernel image) 
#opt bootsize NUM  # size of that file 
#opt rootpath STRING  # (NFS) path to mount as root fs 
#opt wpad  STRING 
#opt serverid IP  # default: server's IP 
#opt message STRING  # error message (udhcpd sends it on success too) 
#opt vlanid  NUM  # 802.1P VLAN ID 
#opt vlanpriority NUM  # 802.1Q VLAN priority 
# Options specifying server(s) 
#opt dns  IP_LIST 
#opt wins  IP_LIST 
#opt nissrv  IP_LIST 
#opt ntpsrv  IP_LIST 
#opt lprsrv  IP_LIST 
#opt swapsrv IP 
# Options specifying routes 
#opt routes  IP_PAIR_LIST 
#opt staticroutes STATIC_ROUTES # RFC 3442 classless static route option 
#opt msstaticroutes STATIC_ROUTES # same, using MS option number 
# Obsolete options, no longer supported 
#opt logsrv  IP_LIST # 704/UDP log server (not syslog!) 
#opt namesrv IP_LIST # IEN 116 name server, obsolete (August 1979!!!) 
#opt cookiesrv IP_LIST # RFC 865 "quote of the day" server, rarely (never?) used 
#opt timesrv IP_LIST # RFC 868 time server, rarely(never?) used 
# TODO: in development 
#opt userclass STRING  # RFC 3004. set of LASCII strings. "I am a printer" etc 
#opt sipserv STRING LIST # RFC 3361. flag byte, then: 0: domain names, 1: IP addrs 
0

而测试一些时间udhcpd服务器抛出错误。所以我没有做任何改变。首先创建/var/lib/misc/udhcpd.lease文件ADN我修改conf文件为:

# Sample udhcpd configuration file (/etc/udhcpd.conf) 
# Values shown are defaults 

# The start and end of the IP lease block 
start  169.254.10.102 
end  169.254.10.103 

# The interface that udhcpd will use 
interface usb0 

# The maximum number of leases (includes addresses reserved 
# by OFFER's, DECLINE's, and ARP conflicts). Will be corrected 
# if it's bigger than IP lease block, but it ok to make it 
# smaller than lease block. 
max_leases 1 

# The amount of time that an IP will be reserved (leased to nobody) 
# if a DHCP decline message is received (seconds) 
#decline_time 3600 

# The amount of time that an IP will be reserved 
# if an ARP conflict occurs (seconds) 
#conflict_time 3600 

# How long an offered address is reserved (seconds) 
#offer_time 60 

# If client asks for lease below this value, it will be rounded up 
# to this value (seconds) 
#min_lease 60 

# The location of the pid file 
pidfile /var/run/udhcpd.pid 

# The location of the leases file 
lease_file /var/lib/misc/udhcpd.leases 

# The time period at which udhcpd will write out leases file. 
# If this is 0, udhcpd will never automatically write leases file. 
# Specified in seconds. 
#auto_time 7200 

# Every time udhcpd writes a leases file, the below script will be called 
#notify_file   # default: no script 
#notify_file dumpleases # useful for debugging 

# The following are bootp specific options 
# next server to use in bootstrap 
#siaddr  192.168.0.22 # default: 0.0.0.0 (none) 
# tftp server name 
#sname  zorak  # default: none 
# tftp file to download (e.g. kernel image) 
#boot_file /var/nfs_root # default: none 

# Static leases map 
#static_lease 00:60:08:11:CE:4E 192.168.0.54 
#static_lease 00:60:08:11:CE:3E 192.168.0.44 

# The remainder of options are DHCP options and can be specified with the 
# keyword 'opt' or 'option'. If an option can take multiple items, such 
# as the dns option, they can be listed on the same line, or multiple 
# lines. 
# Examples: 
#opt dns 192.168.10.2 192.168.10.10 
option subnet 255.255.255.0 
#opt router 192.168.10.2 
#opt wins 192.168.10.10 
#option dns 129.219.13.81 # appended to above DNS servers for a total of 3 
option domain local 
option lease 864000  # default: 10 days 
#option msstaticroutes 10.0.0.0/8 10.127.0.1  # single static route 
#option staticroutes 10.0.0.0/8 10.127.0.1, 10.11.12.0/24 10.11.12.1 
# Arbitrary option in hex form: 
#option 0x08 01020304 # option 8: "cookie server IP addr: 1.2.3.4" 

# Currently supported options (for more info, see options.c): 
#opt lease  NUM 
#opt subnet  IP 
#opt broadcast IP 
#opt router  IP_LIST 
#opt ipttl  NUM 
#opt mtu  NUM 
#opt hostname STRING  # client's hostname 
#opt domain  STRING  # client's domain suffix 
#opt search  STRING_LIST # search domains 
#opt nisdomain STRING 
#opt timezone NUM  # (localtime - UTC_time) in seconds. signed 
#opt tftp  STRING  # tftp server name 
#opt bootfile STRING  # tftp file to download (e.g. kernel image) 
#opt bootsize NUM  # size of that file 
#opt rootpath STRING  # (NFS) path to mount as root fs 
#opt wpad  STRING 
#opt serverid IP  # default: server's IP 
#opt message STRING  # error message (udhcpd sends it on success too) 
#opt vlanid  NUM  # 802.1P VLAN ID 
#opt vlanpriority NUM  # 802.1Q VLAN priority 
# Options specifying server(s) 
#opt dns  IP_LIST 
#opt wins  IP_LIST 
#opt nissrv  IP_LIST 
#opt ntpsrv  IP_LIST 
#opt lprsrv  IP_LIST 
#opt swapsrv IP 
# Options specifying routes 
#opt routes  IP_PAIR_LIST 
#opt staticroutes STATIC_ROUTES # RFC 3442 classless static route option 
#opt msstaticroutes STATIC_ROUTES # same, using MS option number 
# Obsolete options, no longer supported 
#opt logsrv  IP_LIST # 704/UDP log server (not syslog!) 
#opt namesrv IP_LIST # IEN 116 name server, obsolete (August 1979!!!) 
#opt cookiesrv IP_LIST # RFC 865 "quote of the day" server, rarely (never?) used 
#opt timesrv IP_LIST # RFC 868 time server, rarely(never?) used 
# TODO: in development 
#opt userclass STRING  # RFC 3004. set of LASCII strings. "I am a printer" etc 
#opt sipserv STRING LIST # RFC 3361. flag byte, then: 0: domain names, 1: IP addrs 

其实我是想给与static_lease叫一切连接给它相同的固定IP,但不能得逞IP 。