2

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

当我使用 RNDIS 电缆连接板时,所有主机都识别并开始解析 IP 地址。在主板方面,我通过在启动时执行命令来提供静态 IP

ifconfig usb0 169.254.1.1 netmask 255.255.0.0 up

但是主机需要很长时间来协商 RNDIS IP,并且每次都会出现一些不可预测的 IP,例如169.254.abc.xyz.

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

4

2 回答 2

2

好的..我得到了答案....实际上我们必须通过接口usb0启动一个dhcp服务器。因此,每当 USB 主机尝试寻找 dhcp IP 时,在设备上运行并在 usb0 接口上列出的 dhcp 服务器将应答呼叫并分配一个 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
于 2013-03-14T12:28:41.677 回答
0

在测试一段时间 udhcpd 服务器时抛出错误。所以我几乎没有改变。首先创建 /var/lib/misc/udhcpd.lease 文件然后我将 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 但无法成功。

于 2013-03-15T10:13:41.237 回答