我有一个 VLAN 接口 wlp2s0.10,由以下命令创建。
$ sudo ip link add link wlp2s0 name wlp2s0.10 type vlan id 10
$ sudo ip addr add 10.0.0.1/24 dev wlp2s0.10
$ sudo ip link set up wlp2s0.10
我配置了一个简单的 nginx 服务器来托管 php 文件,监听 10.0.0.1:8099。( listen 10.0.0.1:8099;
)
所以curl -I 10.0.0.1:8099
现在能工作,但curl -I localhost:8099
不能工作。
现在我想通过机器的全局 IP 220.xx.xx.xx 从互联网访问该页面,并将我的客户端 IP 45.14.yy.yy 列入白名单。因此我尝试了以下 iptables 命令:
sudo iptables -t nat -A PREROUTING -p tcp -i wlp2s0.10 --dport 8099 -j DNAT --to-destination 10.0.0.1:8099
sudo iptables -t nat -A POSTROUTING -p tcp -m tcp -d 10.0.0.1 --dport 8099 -j MASQUERADE
sudo iptables -I FORWARD -i wlp2s0.10 -p tcp --dport 8099 -d 10.0.0.1 -j DROP
sudo iptables -I FORWARD -i wlp2s0.10 -p tcp --dport 8099 -d 10.0.0.1 -s 45.14.yy.yy -j ACCEPT
现在让我们在curl -I 220.xx.xx.xx:8099
我的计算机上测试一下(IP:45.14.yy.yy),这应该会成功。但事实并非如此。(没有服务器响应)
那么,iptables 命令哪里出了问题?