通过VPN服务器将stream量路由到Internet中的某个主机

我需要通过VPN服务器路由到Internet上的某些主机。

组态:

电脑:ubuntu-12.04

eth0 – xxxx / 24

tun0 – inet addr:10.8.0.6 PtP:10.8.0.5掩码:255.255.255.255

有OpenVPN服务器(亚马逊):

Ubuntu的12.04

eth0 – yyyy / 24

tun0 – inet addr:10.8.0.1 PtP:10.8.0.2掩码:255.255.255.255

互联网上有主机:qqqq

我想stream量到qqqq去扔OpenVPN服务器。 为此我做:

iptables的:

我在表格中标记数据包:

sudo iptables -t mangle -A OUTPUT -d qqqq -j MARK --set-mark 2 

我发送stream量到qqqq扔tun0:

 sudo iptables -t nat -A POSTROUTING -d qqqq -j SNAT --to-source 10.8.0.6 

iproute2的:

我在/ etc / iproute2 / rt_tables中创build表“100”

 sudo ip rule add fwmark 2 table 100 sudo ip route add default via 10.8.0.5 table 100 

第一台计算机上的tcpdump:

14:22:04.554399 IP 10.8.0.6> qqqq.clodo.ru:ICMP回应请求,编号11717,seq 1,长度64

14:22:04.681918 IP qqqq.clodo.ru> 10.8.0.6:ICMP回应答复,编号11717,seq 1,长度64

14:22:05.562577 IP 10.8.0.6> qqqq.clodo.ru:ICMP回应请求,ID 11717,序列2,长度64

14:22:05.690240 IP qqqq.clodo.ru> 10.8.0.6:ICMP回应答复,ID 11717,序列2,长度64

但没有平。 2个数据包传输,0个接收,100%丢包

你不需要标记数据包,做什么刨你需要以下内容

在服务器configuration文件中添加以下内容:

 "push route qqqq 255.255.255.255" 

以上将把路由推送到客户端,所有从客户端发送到该ip的stream量将通过openvpn隧道发送。

同样在服务器端,您需要接受客户端传入的stream量,您可以接受来自客户端子网的所有stream量,如下所示

 iptables -A INPUT -s 10.8.0.0/24 -j ACCEPT 

你可能也需要这个不确定:

 iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT 

你需要nat从客户端到服务器端来回stream量[在服务器端做这个]

 iptables -t nat -A POSTROUTING -d qqqq -j SNAT --to-source PUBLIC_IP_OR_YOUR_VPN_SERVER 

而且你不需要iproute2或者mangle表。

规则的顺序很重要,所以在匹配的放下规则之前请他们