繁体   English   中英

基于 linux 的 USB Gadget 设备的静态主机 RNDIS IP

[英]Static Host RNDIS IP by linux based USB Gadget device

我必须在基于 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

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

好的.. 我得到了答案.. 实际上我们必须通过接口 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

在测试一段时间 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,但无法成功。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM