Iptables PREROUTING 通过 varnish 重定向选定 IP 的 80 端口

Iptables PREROUTING 通过 varnish 重定向选定 IP 的 80 端口

我已经在服务器上安装了 varnish,并且想在不影响正常使用的情况下测试配置。我让 apache 监听端口 80,让 varnish 监听端口 8080。因此,我希望来自我的 IP abcd 的所有请求都通过 varnish,并且应该允许所有其他 IP 正常访问 apache。

我读到过一些文章说可以使用 Iptables 中的 PREROUTING 来实现这一点。有人能告诉我怎么做吗?我在服务器上托管了 2 个网站,是否可以只为一个域配置此功能?

更新
我尝试了该命令,但是没有起作用

root@git:~# iptables -A PREROUTING -t nat -i venet0 -p tcp -s 117.201.192.67 --dport 80 -j REDIRECT --to-port 8000
root@git:~# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
root@git:~# iptables -A PREROUTING -t nat -i venet0:0 -p tcp -s 117.201.192.67 --dport 80 -j REDIRECT --to-port 8000
Warning: weird character in interface `venet0:0' (No aliases, :, ! or *).
root@git:~# iptables -A PREROUTING -t nat -p tcp -s 117.201.192.67 --dport 80 -j REDIRECT --to-port 8000
root@git:~# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

我在 VPS 上,没有名为 的接口eth0/sbin/ifconfig列出lo、、和仅。venet0venet0:0venet0:1venet0:2

更新 2- 在开头插入规则有效

iptables -t nat -I PREROUTING -p tcp -s 117.201.192.67  --dport 80 -j REDIRECT --to-port 8000

是否也可以检查请求的主机名?我只想重定向对 mydomainname.com 的请求

答案1

您可以在 iptables 重定向中指定源地址(或网络),如下所示:

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

规则是从上到下阅读的,并且第一场比赛开始,因此您可能必须将其粘贴在正确的位置。

相关内容