我有一个VPS,我已经成功地build立了VPN。 我连接OpenVPN客户端。 VPN服务器接口为10.8.0.1,客户端接收到10.8.0。 IP。 我可以ping通10.8.0.1。 我似乎也可以做telnet到10.8.0.1:80,10.8.0.1:443等标准端口与他们的工作服务,但不是10.8.0.1:3306。
这是通过ifconfig打印的VPN连接:
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.8.0.1 PtP:10.8.0.2 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:383 errors:0 dropped:0 overruns:0 frame:0 TX packets:358 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:29356 (28.6 KiB) TX bytes:149232 (145.7 KiB)
MySQL不绑定到任何IP,所以它从任何地方接收连接。 我想通过IPTABLES减less它的可见性。
然后我将这些规则添加到IPTABLES中:
# allow connections from the vpn iptables -A INPUT -s 10.8.0.0/24 -p tcp --dport 3306 -j ACCEPT # allow local connections eg your scripts running locally iptables -A INPUT -s 127.0.0.1 -p tcp --dport 3306 -j ACCEPT # deny any other attempts of connecting to mysql iptables -A INPUT -p tcp --dport 3306 -j DROP
现在我可以从服务器本身连接到127.0.0.1。 我无法通过公共IP连接到服务器。 而且我无法通过10.8.0.1(VPN IP)连接到它。
这是我的完整IPTABLES:
[root@ddinvps mail]# iptables -L -n Chain INPUT (policy DROP) target prot opt source destination ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:1723 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 icmp_packets all -- 0.0.0.0/0 0.0.0.0/0 tcp_packets all -- 0.0.0.0/0 0.0.0.0/0 ACCEPT tcp -- 10.8.0.0/24 0.0.0.0/0 tcp dpt:3306 ACCEPT tcp -- 127.0.0.1 0.0.0.0/0 tcp dpt:3306 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306 Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain icmp_packets (1 references) target prot opt source destination ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 0 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 3 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 11 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 8 DROP icmp -- 0.0.0.0/0 0.0.0.0/0 Chain tcp_packets (1 references) target prot opt source destination ACCEPT all -- 127.0.0.1 0.0.0.0/0 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:53 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:25 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:26 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 ACCEPT tcp -- 10.3.124.200 0.0.0.0/0 tcp dpt:9102 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:143 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:993 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:110 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:10000 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 DROP udp -- 0.0.0.0/0 0.0.0.0/0
有任何想法吗?
数据包正在被tcp_packets链过滤。 这是因为您的iptables -A命令已将新规则添加到INPUT链的末尾,并且filter在首次匹配获胜时起作用。 解决你的问题最简单的方法是使用iptables -I命令将你的规则添加到INPUT链的开头
iptables -I INPUT -s 10.8.0.0/24 -p tcp --dport 3306 -j ACCEPT
等等,这将在链条的开始插入你的新规则。
这是你的tcp_packets连锁在stream量达到你的规则之前丢弃的stream量。
可以在tcp_packets链的开始或INPUT链中添加此规则,但在跳转tcp_packets