iptables配置问题,访问某个网段的请求全部转发到某个端口。

问题遇到的现象和发生背景

最近碰到这么一个需求,就是当前服务器如果访问网段10.148.0.0/20时,则需要通过代理来访问。
代理现在已经配置好了,端口是8888(TCP代理),8088(http代理)。

我现在通过下面的命令进行设置:

iptables -t nat -A PREROUTING -d 10.148.0.0/20 -p tcp -j REDIRECT --to-ports 8888

然后访问http://10.148.0.25,如下

[root@server ~]#curl http://10.148.0.25
curl: (7) Failed connect to 10.148.0.25:80; No route to host

访问出错,而且8888这个端口也没有收到10.148.0.25的请求。

操作环境、软件版本等信息

CentOS 7.4 当前机器IP是172.19.99.155,跟要访问的10.148.0.0/20,不在一个网段中,故需要走代理。

尝试过的解决方法

我尝试过设置http代理是可以的

[root@server ~]# export http_proxy=http://localhost:8088
[root@server ~]# export https_proxy=http://localhost:8088

[root@server ~]# curl http://10.148.0.25
"Welcome to gateway!"

但我除了http请求外,还有数据库链接也要走代理,所以要配置成10.148.0.0/20这个网段全部走TCP代理。

我想要达到的结果

访问10.148.0.0/20时,流量全部转到TCP代理端口8888上面