我找不到添加活动/动态 arp 条目的方法。
这一切都始于旧的 Win32 exe,它调用 SetIpNetEntry API 来创建动态/活动 arp 条目,作为在某些嵌入式硬件上设置 IP 地址的过程的一部分。SetIpNetEntry api 返回成功代码,但未创建任何条目。(此代码当然在 Win XP 上运行良好。)
然后我尝试通过以下方式手动创建一个
netsh 接口 ip 添加邻居接口=10 地址=“IpAddr”邻居=“MacAddr”存储=活动
这将创建一个 arp 条目,但创建的类型是永久的。它似乎只是忽略了 store=active。
此时,我似乎无法找到从命令行或 API 中创建活动/动态条目的方法。我不想要永久条目,因为如果安装程序出现问题,我不希望此分配永远留在系统上。我只需要大约 15 秒钟来分配 IP 地址。
答案1
C:\>arp
Displays and modifies the IP-to-Physical address translation tables used by
address resolution protocol (ARP).
ARP -s inet_addr eth_addr [if_addr]
ARP -d inet_addr [if_addr]
ARP -a [inet_addr] [-N if_addr]
-a Displays current ARP entries by interrogating the current
protocol data. If inet_addr is specified, the IP and Physical
addresses for only the specified computer are displayed. If
more than one network interface uses ARP, entries for each ARP
table are displayed.
-g Same as -a.
inet_addr Specifies an internet address.
-N if_addr Displays the ARP entries for the network interface specified
by if_addr.
-d Deletes the host specified by inet_addr. inet_addr may be
wildcarded with * to delete all hosts.
-s Adds the host and associates the Internet address inet_addr
with the Physical address eth_addr. The Physical address is
given as 6 hexadecimal bytes separated by hyphens. The entry
is permanent.
eth_addr Specifies a physical address.
if_addr If present, this specifies the Internet address of the
interface whose address translation table should be modified.
If not present, the first applicable interface will be used.
Example:
> arp -s 157.55.85.212 00-aa-00-62-c6-09 .... Adds a static entry.
> arp -a .... Displays the arp table.
因此,类似这样的操作arp -s 157.55.85.212 00-aa-00-62-c6-09
会将条目添加到 ARP 缓存中。它最终会被刷新,重启后将无法继续存在。