Направляйте трафик локальной сети через eth0, а не tun0, на моей точке доступа VPN

Направляйте трафик локальной сети через eth0, а не tun0, на моей точке доступа VPN

Как сделать так, чтобы моя точка доступа отправляла трафик на , 192.168.1.0а eth0весь остальной трафик — через tun0?

Я настроил точку доступа Raspberry Pi VPN. Она находится в той же подсети, что и все мои серверы, 192.168.1.0и, как и серверы, подключена кабелем к моему модему/маршрутизатору. Затем Raspberry Pi имеет WIFI-модем ( wlan0) для подключения клиентов, он управляет собственной подсетью 192.168.2.0и использует iptablesправила для пересылки всего трафика от своих клиентов wlan0через мое VPN-подключение ( tun0).

Я подготовил это следующим образом:

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

Моя проблема в том, что теперь клиент, подключенный по Wi-Fi к моей точке доступа, не может связаться с моими серверами. Как мне этого добиться?

|                                            |       ¦
|                          __________________|_______¦_________
|                          |      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 |
|                                             |____________________|

Более подробно я описал настройку своей точки доступа здесь:http://www.snabela.net/index.php/2013/11/raspberry-vpn-access-point/

Что мне нужно сделать, чтобы иметь возможность подключаться по ssh с ноутбука на сервер, пока весь интернет-трафик от клиентов точки доступа отправляется через VPN? Могу ли я добавить еще одно правило iptables?

Вывод ifconfig -a точек доступа:

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)

Вывод route -n точки доступа:

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

решение1

Я рискну предположить и скажу, что ваша политика FORWARD по умолчанию — REJECT или DROP (проверьте с помощью iptables -L FORWARD). Если это верно, то вся ваша проблема заключается в этой строке:

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

Что он делает, так это ПРИНИМАЕТ для ПЕРЕСЫЛКИ все, что входит через wlan0и будет выходить через tun0. Что не соответствует пакету из 192.168.2.2в 192.168.1.79, потому что он будет выходить через eth0.

Самый простой способ — удалить эту строку и заменить ее этими двумя, чтобы разрешить пересылку всего в любом направлении между вашими внутренними интерфейсами:

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

Если вы просто хотите исключить свой сервер из VPN, добавьте -o wlan0во вторую строку. Конечно, если вы хотите добавить больше, более строгие требования, такие как установление сеанса, которое должно идти в определенном направлении или что-то еще, эти правила нужно скорректировать. Получайте удовольствие и держите консоль под рукой. ;-)

Связанный контент