我有一个UDP套接字绑定到INADDR_ANY来监听我的服务器上的所有IP数据包.我通过同一个套接字发送回复.
现在,当发送数据包时,服务器会自动选择将哪个IP用作源IP,但我希望能够自己设置传出源IP.
有没有办法做到这一点,而无需为每个IP创建一个单独的套接字?
如果套接字绑定到IN6ADDR_ANY或者INADDR_ANY您使用调用,例如recvfrom()在套接字上接收消息.有没有办法找出消息来自哪个接口?
在IPv6链接范围消息的情况下,我希望from参数recvfrom()将scope_id字段初始化为接口Id.不幸的是,它0在我的测试程序中设置.
谁知道找到这些信息的方法?
我正在实现一个应该响应SSDP M-SEARCH查询的设备.
我是设备供应商,我无法控制这些设备的部署位置.
有一种已知的DDoS攻击使用SSDP搜索放大,即攻击者从伪造地址发送搜索请求,编码不良的SSDP服务器响应该假地址.假地址最终受到重创.
我应该怎么做以防止我的设备被用于此类攻击?
Wrt 1. TTL应根据SSDP规范进行配置; 即使它的响应很低,仍然会泄漏出本地网络.如果网络上有桥接VPN,则响应泄漏很远.
Wrt 2.我可以想象可以访问多个子网的公司网络(例如,一个子网用于无线客户端,另一个用于桌面,另一个用于服务器),因此我的设备必须可以跨子网搜索(尽管每个规格需要TTL).
Wrt 3.配置和维护麻烦.
Wrt 4.有可靠的方法吗?IPv6怎么样?那些拥有例如/ 28片全局地址的网络怎么样?
Wrt 5.来自无数设备的涓涓细流仍然是一股洪流......
参考:https://blog.sucuri.net/2014/09/quick-analysis-of-a-ddos-attack-using-ssdp.html