openvpn高级设置 – 伪装或snat / dnat甚至代理

所以,我有以下问题:给定一个服务器与公共(可路由)的IP,让我们说:xyz1,xyz2,xyz3 – xyz31,我想configurationOpenVPN作为代理或伪装服务器的一些客户端如下:每个客户端有唯一的公共静态IP地址:abcd他将连接到允许的服务器地址:xyz1(他将不能连接到服务器的任何其他公共IP地址)。 使用这种连接,他应该能够浏览具有公共ip地址的互联网,他们首先连接到xyz1。 这个设置是微不足道的,只使用Squid(附加给需要它的人),但是我必须find一个方法来使用OpenVPN完成整个shebang。

acl testuser1src src abcd#这是客户端的公共IP地址

acl testuser1bindip myip xyz1#服务器的公共IP地址之一

tcp_outgoing_address xyz1 testuser1bindip

http_access允许testuser1src testuser1bindip#如果两个条件都满足的话

提前致谢

其中,“1.1.1.1”是客户端的OpenVPN分配的地址,“9.9.9.9”是SNAT客户端stream量的公共IP地址:

iptables -t nat -A POSTROUTING -s 1.1.1.1 -j SNAT --to-source 9.9.9.9 

这就是你想要在我这里的testing盒上做的。 很明显,你需要使用OpenVPN来设置客户端configuration文件,以便在给定的客户端连接时给同一个IP地址分配相同的IP地址,但是听起来你已经有了。

如果您的FORWARD链中没有条目来允许来自客户端的stream量,那么您也需要在其中添加规则。 如果您想盲目转发通往Internet的隧道接口上收到的stream量,则可以这样做:

 iptables -A FORWARD -i tun+ -o internet-interface -j ACCEPT 

最后,如果您想要将客户端公共IP地址的未经请求的入站连接尝试引导到客户端,您将需要在nat表中的PREROUTING链上执行如下操作:

 iptables -t nat -I PREROUTING -d 9.9.9.9 -j DNAT --to-dest 1.1.1.1 

您可以在openvpn服务器上使用ipp.txt文件,以便只将所需的IP分配给每个客户端。 默认情况下,ipp.txt是由openvpn服务器维护的,但你可以改变它,所以你维护它在你的服务器configuration文件中使用以下行(openvpn不会再更新ipp.txt):

ifconfig-pool-persist /path/to/ipp.txt 0在服务器configuration上(只在默认行末加0)。

该文件是在host,ipforms。

感谢您的快速回复,埃文。 但是,SNAT和DNAT不是这里的问题。 让我得到一个真实的例子,以显示你到底想要什么:

我们有两个客户端,每个都有唯一的公共IP:client1:219.16.233.140和client2:143.12.155.19。 服务器的IP地址为:213.230.161.1 – 213.230.161.31。 首先,我想为每个客户端分配一个(也是唯一的一个!!!)公共IP地址从我的服务器,他们将用来掩盖自己在互联网上的IP地址。

client1(219.16.233.140)—> 213.230.161.10 client2(143.12.155.19)—> 213.230.161.11

我们使用尽可能less的configuration来设置OpenVPN:在所有客户端之间共享的静态密钥:

服务器configuration文件dev tun server 10.8.0.0 255.255.255.0 secret static.key client1configuration文件remote 213.230.161.10 dev tun ifconfig 10.8.0.2 10.8.0.1 secret static.key Client2configuration文件远程213.230.161.11 dev tun ifconfig 10.8.0.3 10.8 .0.1密钥static.key

当然,我可以限制客户端1只连接到213.230.161.10和客户端2只连接到213.230.161.11,但我如何防止他们切换隧道IP的? 我的意思是,client1可以很容易地修改.ovpn文件,所以它是:ifconfig 10.8.0.3 10.8.0.1,从而干扰client2。 这将使SNAT-DNAT规则无用。 这是我的困境,我如何链接客户端的公共IP到在服务器端看到的隧道IP(到219.16.233.140只有10.8.0.2地址可以在ovpn tun接口内部使用,并且219.16.233.140只能连接到213.230.161.10)。

谢谢,RC