Roteie o tráfego LAN através de eth0, não tun0, no meu ponto de acesso VPN

Roteie o tráfego LAN através de eth0, não tun0, no meu ponto de acesso VPN

Como posso fazer com que meu ponto de acesso envie tráfego 192.168.1.0e eth0todos os outros tráfegos tun0?

Configurei um ponto de acesso VPN Raspberry Pi. Ele fica na mesma sub-rede que todos os meus servidores 192.168.1.0e, assim como os servidores, está conectado por cabo ao meu modem/roteador. O Raspberry Pi então possui um stick WIFI ( wlan0) para os clientes se conectarem, ele executa sua própria sub-rede 192.168.2.0e usa iptablesregras para encaminhar todo o tráfego de seus clientes wlan0através da minha conexão VPN ( tun0).

Eu preparei isso fazendo;

sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
sudo iptables -A FORWARD -i tun0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o tun0 -j ACCEPT

Meu problema é que agora um cliente conectado por wifi ao meu ponto de acesso não consegue se comunicar com meus servidores. Como posso conseguir isso?

|                                            |       ¦
|                          __________________|_______¦_________
|                          |      Modem/Router/DCHP server    |
|                          |             192.168.1.254        |
|                          |_________________________¦________|
|                                            |       ¦
|                                            |       ¦
|                                  __________________¦_
|                                  |  8-port switch  ¦ |
|                                  |_________________¦_|
|                                    |             | ¦    
|                                    |             | -----------
|                ____________________|             |__________ ¦
|                |                                       eth0| ¦tun0
|        __________________                        ________________________
|        |    Server      |                        |  Pi VPN Access Point |
|        |  192.168.1.79  |                        |  eth0: 192.168.1.81  |
|        |________________|                        |  tun0: 10.X.X.X      |
|                                                  |  wlan0:192.168.2.1   |
|                                                  |______________________|
|                                                       |wlan0
|                                                       | 
|                                             __________|___________
|                                             |   Laptop           |
|                                             | wlan0: 192.168.2.2 |
|                                             |____________________|

Descrevi a configuração do meu ponto de acesso com mais detalhes em;http://www.snabela.net/index.php/2013/11/raspberry-vpn-access-point/

O que preciso fazer para poder fazer o ssh do laptop para o servidor enquanto todo o tráfego da Internet dos clientes do AP é enviado pela VPN? Posso adicionar outra regra de iptables?

A saída ifconfig -a dos pontos de acesso:

eth0      Link encap:Ethernet  HWaddr b8:28:eb:f1:77:93  
          inet addr:192.168.1.81  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:124292 errors:0 dropped:0 overruns:0 frame:0
          TX packets:86097 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:136739836 (130.4 MiB)  TX bytes:15199088 (14.4 MiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:60 errors:0 dropped:0 overruns:0 frame:0
          TX packets:60 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:6200 (6.0 KiB)  TX bytes:6200 (6.0 KiB)

mon.wlan0 Link encap:UNSPEC  HWaddr F8-1B-67-20-B3-61-00-00-00-00-00-00-00-00-00-00  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4760 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:630721 (615.9 KiB)  TX bytes:0 (0.0 B)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.4.43.179  P-t-P:10.4.43.178  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:108875 errors:0 dropped:0 overruns:0 frame:0
          TX packets:75807 errors:0 dropped:29 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:126611820 (120.7 MiB)  TX bytes:6303503 (6.0 MiB)

wlan0     Link encap:Ethernet  HWaddr f8:1b:67:20:b3:61  
          inet addr:192.168.2.1  Bcast:192.168.2.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:75019 errors:0 dropped:0 overruns:0 frame:0
          TX packets:109376 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:7219164 (6.8 MiB)  TX bytes:130045181 (124.0 MiB)

A saída route -n do ponto de acesso:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.4.43.178     128.0.0.0       UG    0      0        0 tun0
0.0.0.0         192.168.1.254   0.0.0.0         UG    0      0        0 eth0
10.4.0.1        10.4.43.178     255.255.255.255 UGH   0      0        0 tun0
10.4.43.178     0.0.0.0         255.255.255.255 UH    0      0        0 tun0
95.211.191.34   192.168.1.254   255.255.255.255 UGH   0      0        0 eth0
128.0.0.0       10.4.43.178     128.0.0.0       UG    0      0        0 tun0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0

Responder1

Vou arriscar um palpite e dizer que sua política FORWARD padrão é REJECT ou DROP (verifique com iptables -L FORWARD). Se estiver correto, todo o seu problema é esta linha:

sudo iptables -A FORWARD -i wlan0 -o tun0 -j ACCEPT

O que ele faz é ACEITAR para encaminhar qualquer coisa que entre wlan0e saia tun0. O que não corresponde a um pacote from 192.168.2.2to 192.168.1.79, porque isso sairia através de eth0.

A coisa mais fácil a fazer é remover essa linha e substituí-la por estas duas, para permitir o encaminhamento de tudo em qualquer direção entre suas interfaces internas:

sudo iptables -A FORWARD -i wlan0 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -j ACCEPT

Se você simplesmente deseja excluir seu servidor da VPN, adicione -o wlan0à segunda linha. É claro que, se você quiser adicionar requisitos mais rígidos, como o estabelecimento de uma sessão ter que seguir uma direção específica ou qualquer outra coisa, essas regras são as que precisam ser ajustadas. Divirta-se e mantenha um console à mão. ;-)

informação relacionada