允许OpenVPN通过一个特定的端口 – CentOS 6.5

我拥有一个VPS(CentOS 6.5)。 我已经在这台服务器上安装了OpenVPN。 一切工作正常,我可以连接和冲浪等。假设我的服务器的IP是: 1.2.3.4 。 当我连接到我的VPS我的IP是1.2.3.4

我还安装了在端口8069上运行的OpenERP(在相同的VPS上)。

我试图实现的是阻止除了VPNstream量之外的端口8069上的所有stream量。 所以,我必须通过OpenVPN连接到我的VPS才能访问http://1.2.3.4:8069

我在网上尝试了几个iptables教程,但没有一个在工作。

例如:

 iptables -A INPUT -p tcp -s 1.2.3.4 --dport 8069 -j ACCEPT or iptables -A INPUT -p tcp -s 10.8.0.0/24 --dport 8069 -j ACCEPT or iptables -I INPUT \! --src 10.8.0.0/24 -m tcp -p tcp --dport 8069 -j DROP or iptables -I INPUT \! --src 1.2.3.4 -m tcp -p tcp --dport 8069 -j DROP 

这些都是例子。 我已经尝试了更多规则。 我遵循的所有教程阻止端口8069上的所有stream量,即使我用OpenVPN连接到我的VPS我不能访问http://1.2.3.4:8069

有没有人有一个想法,除了我的VPN连接,如何阻止端口8069上的所有stream量? 我如何做到这一点?

我的server.conf是:

 port 1194 proto udp dev tun ca ca.crt cert server.crt key server.key dh dh2048.pem server 10.8.0.0 255.255.255.0 push "redirect-gateway def1" push "dhcp-option DNS 10.8.0.1" user nobody group nobody keepalive 5 30 cipher AES-256-CBC comp-lzo persist-key persist-tun verb 5 

我的客户conf是:

 dev tun client proto udp remote 1.2.3.4 port 1194 resolv-retry infinite nobind redirect-gateway def1 persist-key persist-tun ca ca.crt cert nika-pc.crt key nika-pc.key cipher AES-256-CBC comp-lzo ns-cert-type server verb 5 

提前致谢。

编辑:

输出:iptables -L -n -v

http://pastebin.com/RhzFBG8R

输出:iptables -L -n -v | 头

http://pastebin.com/n6gLe68s

我的话说,这是一个复杂的防火墙设置(尽pipe很多规则都没有包数,这让我觉得这里有很多的历史痕迹)。 试图弄清楚现有的哪条规则错误地捕捉到了这个stream量,我build议我们切入,把相关规则放在最前面:

 iptables -I INPUT 1 -p tcp -i tun+ --dport 8069 -j ACCEPT iptables -I INPUT 2 -p tcp --dport 8069 -j REJECT 

编辑 :我真的鼓励你编辑更新到你的问题,而不是留下无尽的一系列pastebin链接,这可能会或可能不会保持一段时间。 无论如何,感谢新的输出。 正如你所看到的,第一条规则的数据包计数为零,而第二条(绝对拒绝)规则的数据绝对不是。 剩下的唯一结论就是你使用OpenVPN连接误解了这个stream量。 这是非常明显的来自纯文本互联网。 如果你想完全确定,在上面两个之间添加第三条规则

 iptables -I INPUT 2 -p tcp --dport 8069 -j LOG --log-prefix "CARROT: " 

除非CARROT这个词在你的日志文件中出现了很多,否则应该很容易从系统日志( /var/log/messagessyslog /你的发行版认为合适的)中find这些匹配的输出,并且应该确认接口被拒绝的数据包正在进入。 我不指望它是tun0

我添加一个答案,因为我不能添加评论。 我认为使用的协议是udp而不是tcp

 iptables -I INPUT 1 -p udp -i tun+ --dport 8069 -j ACCEPT iptables -I INPUT 2 -p udp --dport 8069 -j REJECT