基于linux的USB小工具设备的静态主机RNDIS IP

时间:2013-03-14 05:53:42

标签: linux usb rndis

我必须在基于Linux的主板和主机之间建立RNDIS连接(它可以是WinXP / Win7 / Ubuntu等)。

当我使用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以太网驱动程序。 Linux版本是2.3.62。

2 个答案:

答案 0 :(得分:2)

好的..我得到了答案....实际上我们必须通过接口usb0启动dhcp服务器。因此,每当USB主机尝试寻找dhcp IP时,在设备上运行的dhcp服务器和在usb0接口上列出将响应呼叫并分配IP。修复Ip只需在IP池中配置一个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

答案 1 :(得分: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,但是不能成功。