用iptables打开SNAT或DNAT的openvpn端口转发?

我已经设法得到openvpn设置,并得到它发出静态内部ips给客户端。 现在我遇到的麻烦是我现在试图分配每个客户端的开放端口,因为他们现在有静态的内部IP它使它很容易准备添加规则。 遇到问题的地方在于如何通过iptables正确执行此操作。

客户端推送的内部静态IP 10.8.0.10例子将是有端口1234转发

我已经试过这个没有运气vpn使用udp和端口1194,但已经尝试了以下规则修改为udp和tcp,并在一起。 请注意vpn已经工作,并有伪装规则,但除此之外,iptables是空的。

iptables -t nat -A PREROUTING -p tcp --dport 1234 -j DNAT --to-destination 10.8.0.10 iptables -A FORWARD -s 10.8.0.10 -p tcp --dport 1234 -j ACCEPT 

我也试过10.8.0.1是网关,10.8.0.10是客户端需要端口转发的所有端口

 iptables -t nat -A PREROUTING -d 10.8.0.1 -j DNAT --to-destination 10.8.0.10 

我试图完成2件事先能够转发每个客户端端口,如果需要的话,如果他们需要所有端口转发静态公共IP。

openvpn server.conf

 local 123.123.123.123 #- your_server_ip goes here port 1194 #- port proto udp #- protocol client-config-dir /etc/openvpn/ccd push "route 10.8.0.0 255.255.0.0" ifconfig-pool-persist /etc/openvpn/openvpn.dhcp 30 dev tun tun-mtu 1500 tun-mtu-extra 32 mssfix 1450 ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt cert /etc/openvpn/easy-rsa/2.0/keys/server.crt key /etc/openvpn/easy-rsa/2.0/keys/server.key dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem plugin /etc/openvpn/radiusplugin.so /etc/openvpn/radiusplugin.cnf client-cert-not-required username-as-common-name server 10.8.0.0 255.255.255.0 push redirect-gateway def1 push dhcp-option DNS 8.8.8.8 push dhcp-option DNS 8.8.4.4 keepalive 5 30 comp-lzo persist-key persist-tun status 1194.log verb 3 

iptables-save

 # Generated by iptables-save v1.3.5 on Sun Aug 26 14:27:12 2012 *nat :PREROUTING ACCEPT [4834:503608] :POSTROUTING ACCEPT [1000:70847] :OUTPUT ACCEPT [1000:70847] -A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j MASQUERADE COMMIT # Completed on Sun Aug 26 14:27:12 2012 # Generated by iptables-save v1.3.5 on Sun Aug 26 14:27:12 2012 *filter :INPUT ACCEPT [21545:23742094] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [14867:1938275] COMMIT # Completed on Sun Aug 26 14:27:12 2012 

为我工作得很好。 有几件事要检查:

  • 这将不会从VPN服务器本身进行NAT连接,因此您需要OUTPUT链中的规则。
  • 客户端是否configuration为通过VPN路由所有stream量? 如果没有,您可能会发现响应数据包没有通过VPN发回。
  • 你确定你使用客户端的IP地址,而不是客户端的点对点连接的服务器端?
  • 您希望在规则中匹配特定的目标IP,否则您将捕获该端口号上的其他连接。
  • NAT到10.8.0.1的所有连接可能会导致问题,因为所有客户端通过此IP路由stream量。
 -A PREROUTING -p tcp -m tcp --dport 1234 -j DNAT --to-destination 10.8.0.10 

是你在找什么:)

自己也经历了这个同样的问题

我看到并假设你使用ccd文件推动静态内部IP? 如果是的话,上面的规则应该在编辑到你的iptables的时候工作