使用iptables进行本地端口转发并屏蔽目标端口
站点运行在nginx服务,然而我并不想使用root来跑这个服务,因此也没法使用80端口。于是想着是否可以使用iptables进行端口转发,将80端口的数据转发到nginx服务的端口8888。
在搜了一堆资料后,有了如下方法
#!/bin/bash
# nat表,PREROUTING链增加转发规则
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8888
# mangle表,PREROUTING链给发向8888的包做个标记
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport 8888 -j MARK --set-mark 1
# filter表,INPUT链,首先允许所有本地接口的数据包
iptables -t filter -I INPUT -i lo -j ACCEPT
# 然后拒绝所有被标记了1的包
iptables -t filter -A INPUT -m mark --mark 1 -j REJECT