Como especificar um determinado dispositivo para acessar a Internet através do cliente de roteador OpenVPN?

1

Dispositivos Envolvidos: um VPS, um roteador e vários dispositivos conectados ao roteador.

Final Object: Base no cliente OpenVPN que se conectou ao servidor no VPS, especifique somente um dispositivo local para acessar a Internet através da VPN e encaminhar algumas portas do VPS para o dispositivo especificado.

Rede VPS:

Public IP: 157.7.201.X

Rede de roteadores:

WAN: 192.168.178.207/27
LAN: 192.168.1.0/24

VPN:

DHCP: 10.168.1.0/29
VPS: 10.168.1.1 (static)
Client: 10.168.1.2 (static)

O IP do dispositivo especificado é 192.168.1.123 (static)

(Você pode pular as seguintes configurações detalhadas para ver minha situação agora diretamente, porque é um pouco longo e nem todas as linhas são úteis.)

E aqui estão os iptables do meu VPS:

root@VPS:~# iptables -t nat -L POSTROUTING -vn
Chain POSTROUTING (policy ACCEPT 24 packets, 2860 bytes)
pkts bytes target prot opt in out source destination
6280 663K SNAT all -- * * 10.168.1.0/29 0.0.0.0/0 to:157.7.201.X

A tabela de rotas do meu roteador:

root@Onee3:/tmp/home/root# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.178.193 * 255.255.255.255 UH 0 0 0 vlan1
157.7.201.85 192.168.178.193 255.255.255.255 UGH 0 0 0 vlan1
10.168.1.1 * 255.255.255.255 UH 0 0 0 tun11
10.168.1.0 10.168.1.1 255.255.255.248 UG 0 0 0 tun11
192.168.178.192 * 255.255.255.224 U 0 0 0 vlan1
192.168.1.0 * 255.255.255.0 U 0 0 0 br0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
default 192.168.178.193 0.0.0.0 UG 0 0 0 vlan1

O iptables do meu roteador:

root@Onee3:/tmp/home/root# iptables -t nat -L POSTROUTING -vn
Chain POSTROUTING (policy ACCEPT 5 packets, 709 bytes)
pkts bytes target prot opt in out source destination
75 14012 SNAT all -- * br0 192.168.1.0/24 192.168.1.0/24 to:192.168.1.233
12828 1438K SNAT all -- * vlan1 192.168.1.100 0.0.0.0/0 to:192.168.178.207
27 1764 SNAT all -- * tun11 0.0.0.0/0 10.168.1.0/29 to:10.168.1.2
33 1980 SNAT all -- * vlan1 192.168.1.222 0.0.0.0/0 to:192.168.178.207
0 0 SNAT all -- * tun11 192.168.1.123 0.0.0.0/0 to:10.168.1.2

Minha situação agora é:

O próprio roteador pode acessar a Internet através da rede física, e pode acessar qualquer host, incluindo o 10.168.1.1, que é o IP virtual do VPS.

Qualquer dispositivo conectado ao roteador pode acessar o roteador e o IP virtual do VPS normalmente. Dispositivos incluídos no iptables do roteador que estão configurados para usar vlan1 podem acessar a Internet normalmente, por exemplo, 192.168.1.100 na lista. Outros não incluídos não podem porque o registro MASQUERADE padrão foi excluído manualmente.

Então, agora eu adicionei um registro no iptables do roteador para fazer um ip forward de 192.168.1.123 para 10.168.1.2 por SNAT (na lista acima) ou MASQUERADE (também tentei), mas o resultado é que 192.168 .1.123 só pode acessar os hosts na LAN ou o IP virtual do VPS.

Em uma palavra, estou agora preso no meio do caminho (ou até menos) para o objetivo final. Por favor me ajude, obrigado.

    
por Frederick Zhang 16.04.2014 / 21:08

1 resposta

0

Parece que o problema realmente não tem negócios com pré-roteamento ou pós-roteamento

Eu finalmente resolvi o problema adicionando uma nova tabela de rotas

route add default gw 192.168.178.193 # to add a default route of the local physical network, notice that it should be above the one of the VPN
ip route del default via 10.168.1.1 dev tun11 table main # delete the VPN route from the main route table
ip route add table 200 via 10.168.1.1 dev tun11 # create a new table numbered 200 to use the VPN
ip rule add from 192.168.1.200/32 table 200 # add devices which are expected to be connected to the VPN
ip rule add from 192.168.1.222/32 table 200

Em seguida, para o encaminhamento de porta, consultei o link

    
por 17.04.2014 / 10:31