一.介绍
这个软件还是我在V2看到的,当时就收藏了,不过一直没用到,最近在折腾点东西,正好又看到了这个,所以顺便介绍一下,确实是个不错的工具,特殊情况下用起来挺好的。
用途很明确,标题就说了,这个可以在不修改程序本身任何配置文件的情况下将其绑定到另外的端口或者是IP地址,下面是介绍
基于 LD_PRELOAD 机制,可以作用于:
已有的网络程序客户端 /服务器程序,比如nc,curl,wget,nginx等
使用 Java 、 Python 等语言编写的网络 Server 或客户端 Client 程序
特性如下:绑定制定 IP 地址和端口
添加 SO_REUSEADDR 特性支持
添加 SO_REUSEPORT 特性支持
添加 IP_TRANSPARENT 特性支持
二.安装
没有啥依赖,直接编译就行
1 2 3 |
git clone https://github.com/yongboy/bindp.git cd bindp make |
连安装都不要,就是这样,因为最后生成的是一个libindp.so文件,只需要在使用时预载就行,这个和tsocks的原理其实比较像,都是通过LD_PRELOAD来劫持实现功能的
三.使用案例
①.假设本地多个可用 IP 地址包含 10.10.10.10 ,并且假设端口 49999 没被占用,那么我们可以在作为客户端访问远程服务器时进行制定 IP 地址和端口:
1 |
REUSE_PORT=1 BIND_ADDR="10.10.10.10" BIND_PORT=49999 LD_PRELOAD=/the_path/libindp.so nc 10.10.10.11 80 |
②.假设 Nginx 配置监听 80 端口,不想修改配置文件的话而使之监听 9090 端口,我们可以这样做:
1 |
BIND_PORT=9090 LD_PRELOAD=/your_path/libindp.so /usr/sbin/nginx -c /etc/nginx/nginx.conf |
在我看来,这个程序对于调试可能比较方便,当然也有些特殊用途,这个就得靠自己发掘了
PS.windows下有个类似用途的软件叫ForceBindIP,本身是个命令行程序,不过有几个GUI的版本,如果有需要可以试试,可以将指定进程绑定到指定的网卡,在同时连接多个网络的情况下会比较有用,比如方便访问内网啥的。
Senraの小窝原创文章,转载请注明来自:小工具推荐——Bindp (为Linux程序绑定 IP 地址和端口)
666