1

Я настроил Raspberry Pi (на котором работает Raspbian) дома в качестве медиа-сервера, к которому я получаю доступ из-за пределов своей сети через SSH и другие порты (то есть, используя клиент Plex с мобильного через порт 32400). Недавно я решил подписаться на коммерческий сервис VPN. Я установил и настроил OpenVPN на Raspbian.

После долгих часов поиска, чтения и тестирования я узнал, как удаленно подключиться к серверу по ssh, перенаправляя весь трафик с eth0 на tun0. Просто запустив:

ip rule add from <internal IP of SSH server/VPN client> table 10
ip route add default via <internal IP of gateway/router> table 10

Я добавил пару сценариев в /etc/init.d/, чтобы открыть VPN-соединение при загрузке, и другой сценарий, который запускает две команды выше, как только VPN-соединение установлено (кажется, эти правила сбрасываются при перезапуске). Таким образом, с настройкой выше, я могу ssh на свой сервер с работы без проблем.

Моя проблема в том, что в описанной выше среде я не могу локально подключиться к Raspberry Pi. И поэтому мой клиент Plex на PlayStation 4 больше не может найти сервер ... Однако, если я удалю сценарии rc.d, которые 1/ открывают VPN-соединение и 2/ выполняют две вышеупомянутые командные строки, я могу подключиться к серверу из дома и снаружи - но VPN не работает :)

Я думаю, что я делаю что-то не так с IP-маршрутами, но не могу понять, что. Или, может быть, это потому, что порядок, в котором выполняются сценарии, неправильный (хотя команды ip route 'Required-Start' vpnconnection должны быть установлены)

Надеюсь, что все это имеет смысл, и что вы можете указать мне правильные направления в отношении возможности ssh к пи из локальной и удаленной сетей. Я верю, что ответ заключается в использовании либо маршрута, либо толчка, но я не уверен.

Ниже приведены некоторые результаты, которые могут быть полезны.

Заранее спасибо за помощь!

Вывод маршрута -n при создании tun0

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.109.1.5      128.0.0.0       UG    0      0        0 tun0
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
10.109.1.1      10.109.1.5      255.255.255.255 UGH   0      0        0 tun0
10.109.1.5      0.0.0.0         255.255.255.255 UH    0      0        0 tun0
128.0.0.0       10.109.1.5      128.0.0.0       UG    0      0        0 tun0
168.1.6.49      192.168.0.1     255.255.255.255 UGH   0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

Вывод iptables -L -v

Chain INPUT (policy DROP 44 packets, 5890 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 fail2ban-ssh  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            multiport dports 22
  220  143K ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            state INVALID
 7062 1750K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:32400
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:5850
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:4285
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:58846
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:8112
    1    64 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:72
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            icmptype 8
   92 15173 ACCEPT     all  --  *      *       192.168.0.0/24       0.0.0.0/0

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 8071 packets, 1231K bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain fail2ban-ssh (1 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0

Файл конфигурации клиента OpenVPN

client
dev tun
proto udp
remote [xxx.yyy.com] [PORT]
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
tls-client
remote-cert-tls server
auth-user-pass
comp-lzo
verb 1
reneg-sec 0
crl-verify crl.pem
auth-user-pass

Вывод sysctl -a | grep \.rp_filter

net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.eth0.rp_filter = 0
net.ipv4.conf.lo.rp_filter = 0
net.ipv4.conf.tun0.rp_filter = 0

Вывод ip route show

0:   from all lookup local
32765:   from 192.168.0.170 lookup 10
32766:   from all lookup main
32767:   from all lookup default

Вывод ip route show в таблицу 10

default via 192.168.0.1 dev eth0

1 ответ1

0

Подключив машину к сети VPN, вы фактически "изолируете" ее от локальной сети, она не увидит никаких других машин, кроме тех, которые находятся в сети VPN.

Поэтому я думаю, что вы настроили VPN задом наперед - вы хотите запустить VPN- клиент на удаленной машине и VPN- сервер в вашей локальной сети - чтобы оставить локальную локальную сеть без изменений и заставить удаленную машину чувствовать себя подключенной к ней.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .