指定本地源IP访问网站(多网卡场景)
当主机有多个IP(如多个网卡或虚拟IP),需指定某个IP作为请求源时:
使用 curl
命令
curl --interface <本地IP> http://example.com
- 示例:通过IP
168.1.100
访问百度curl --interface 192.168.1.100 http://www.baidu.com
- 参数说明:
--interface
:绑定本地IP(支持IPv4/IPv6)。
使用 wget
命令
wget --bind-address=<本地IP> http://example.com
- 示例:
wget --bind-address=192.168.1.100 http://www.baidu.com
高级方法:ip route
策略路由
若需所有流量走指定IP(需root权限):
ip route add default via <网关> dev <网卡> src <本地IP>
- 示例:
ip route add default via 192.168.1.1 dev eth0 src 192.168.1.100
- 恢复默认路由:
ip route delete default
强制域名解析到指定IP(绕过DNS)
修改 /etc/hosts
文件(永久生效)
sudo nano /etc/hosts
- 添加规则(格式:
目标IP 域名
):18.25.35 www.example.com
- 生效方式:
保存后立即生效(浏览器或命令直接访问域名)。
使用 curl
临时指定域名解析
curl --resolve <域名>:<端口>:<目标IP> https://域名
- 示例:将
www.example.com
指向IP18.25.35
curl --resolve www.example.com:443:104.18.25.35 https://www.example.com
- 注意:需指定端口(HTTP默认80,HTTPS默认443)。
自定义Host头(模拟访问)
curl -H "Host: www.example.com" http://<目标IP>
- 示例:访问IP
18.25.35
但识别为www.example.com
curl -H "Host: www.example.com" http://104.18.25.35
注意事项
- 权限问题:
- 修改
/etc/hosts
或配置路由需sudo
权限。 - 普通用户可直接使用
curl
/wget
参数。
- 修改
- 网络环境:
- 指定源IP需确保该IP已配置且可路由。
- 强制域名解析时,目标IP必须提供对应服务(如Web服务器)。
- 安全性:
- 修改hosts文件可能影响系统,操作前建议备份。
- 临时命令(如
--resolve
)更安全,退出即失效。
适用场景总结
场景 | 推荐方法 |
---|---|
多网卡指定源IP | curl --interface 或 wget --bind-address |
临时测试域名解析 | curl --resolve |
长期固定域名指向 | 修改 /etc/hosts 文件 |
模拟虚拟主机访问 | curl -H "Host: ..." |
引用说明:本文方法基于Linux网络工具(curl 7.58+、wget 1.20+、iproute2)和标准系统文件(/etc/hosts),参考Linux Man手册及网络调试最佳实践。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/7238.html