我有一些服务在我的服务器上运行,我想限制只有通过OpenVPN连接的服务。 我设法让路由工作到我添加到机器上的第二个IP,但是这并不理想。
*.*.*.1
是主要的公共IP。 它绑定到本地IP 172.31.20.102
。 *.*.*.2
是创build用于testing的同一台计算机上的辅助IP。 它被绑定到本地IP 172.31.20.103
。 这在Amazon EC2接口中完成,而不是在服务器上完成。
注意 :* s只是在此屏蔽IP地址。 真正的configuration有实际的公共IP。
以下是OpenVPN服务器configuration的相关位:
dev tun server 172.16.128.32 255.255.255.240 #push "route *.*.*.1 255.255.255.255 net_gateway" push "route *.*.*.2 255.255.255.255"
我已经尝试了和没有push "route *.*.*.1 255.255.255.255 net_gateway"
行,这就是为什么我在这个样本中评论。 请注意,路由对当前configuration中的*.*.*.2
起作用。
VPN上的服务器IP是172.16.128.33
。
这是来自sysctl.conf
的相关行:
net.ipv4.ip_forward = 1
这里是iptables-save
的相关位:
*nat -A PREROUTING -p tcp -m state --state NEW -m tcp --dport 22 -j DNAT --to-destination 172.16.128.33 -A POSTROUTING -s 172.16.128.32/28 -o eth0 -j MASQUERADE COMMIT *filter -A FORWARD -i tun0 -s 172.16.128.32/28 -d *.*.*.1 -j ACCEPT -A FORWARD -i tun0 -s 172.16.128.32/28 -d *.*.*.2 -j ACCEPT -A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -s 172.16.128.32/28 -j ACCEPT -A INPUT -s 172.31.20.100/28 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
-A PREROUTING -p tcp -m state --state NEW -m tcp --dport 22 -j DNAT --to-destination 172.16.128.33
允许我通过SSH进入备用接口。 为每个端口添加其中一条线并不理想,但如果没有其他选项,则可以接受。
我希望能够访问端口22,例如, *.*.*.1
。 我宁愿连接来自*.*.*.1
,而不是我的公有IP。 我意识到,我不能将所有的交通通过隧道,因为隧道本身必须维护,但我希望所有其他的东西通过隧道。
让我知道如果我错过了任何有用的信息。
据我所知,EC2并没有实现NAT回环,这就是为什么自己的连接失败。
简短的解决scheme是将公共IP添加到虚拟接口,或DNAT将所有将被转发到公共IP的内容添加到您的内部地址。
虚拟接口:
ip link add dummy0 type dummy ip addr add *.*.*.1/32 dev dummy0 ip link set dummy0 up iptables -A OUTPUT -s *.*.*.1/32 -o eth+ -j REJECT iptables -A FORWARD -i tun+ -o dummy0 -j ACCEPT iptables -A FORWARD -i dummy0 -o tun+ -j ACCEPT
或NAT:
iptables -t nat -A PREROUTING -i tun+ -p tcp -d *.*.*.1 -m state --state NEW -j DNAT --to-destination 172.16.128.33
更常见的解决scheme是实现水平分割DNS,这将允许您运行具有内部和外部IP的基于名称的安全networking。 随着networking规模的扩大,这将使未来的自动路由和pipe理变得更加容易。