LINUX.ORG.RU
ФорумAdmin

OpenVPN, маршруты и localhost

 , , , ,


1

1

Доброй ночи, уважаемые красноглазики. В своё время забил на тему сетей и теперь, когда сталкнулся с конкретными задачами с ними связанными, познал свою ничтожность. Я очень надеюсь, что кто-нибудь поможет мне в моей проблеме. И так как я решил в свободное время полностью отдать себя наверстыванию упущенного, то с радостю приму актуальные полезные ссылки по тематике. Но проблема здесь и сейчас, надо бы её решить, даже если я ничего не пойму. Заранее благодарю за отзывчивость.

  • Дано:
    • VPS с настроенным OpenVPN (udp) ;;
    • Белая штука с лампочками (TP-LINK) ;;
    • Кампуктер с Debian 9 ;;
    • Whonix (Gateway + Workstation) в Virtualbox ;;
    • Скрипт 00-iptables (прикрепил), бросил его в /etc/network/if-up.d ;;
  • Как обстоят дела:
    • VPN я настроил кое-как, работает хорошо. Скрипт для ФВ, упомянутый выше гонит трафик через VPN, как я понимаю (а я не понимаю), скорее всего я просто несу какую-то дичь, прошу за это простить. Короче, скрипт отработал - в интернет без vpn я не попадаю (вроде так я и хотел).
    • Виртуалка работает, коннектится через VPN куда ей нужно (tor), с этим всё ок.
  • Проблемы:
    • Не могу попасть на localhost на своём Дебиане, чтобы работать с проектами (LAMP серв) ;;
    • Не могу приконнектить моб. устройства к Дебиану через вифи (KDE Connect например) ;;
    • То же касается и принтера, который работает через вифи ;;
    • Всё ок после " iptables -F " ;;

Можете пинать за тупость, лишь бы помогли. Гуглить не отправляйте - не пойду, нагуглился. Нужно разбираться с самого дна, но пока нет времени, обещаю что выучу тему, но пока прошу вашей помощи.

#!/bin/bash
 
PRIMARY=enp3s0
VPN_SERVER=XXX.XXX.XXX.XXX # < ----- Тут адр. моего впс 

# Не понял что это и зачем, команда ничего не выдаёт.
GATEWAY=`ip route | grep $PRIMARY | egrep "^0\.0\.0\.0" | tr -s " " | cut -d" " -f2`

# provided by pppd: interface name
TUNNEL=tun0
 
LOCAL_NET=192.168.0.0/16
 
iptables -F
iptables -N MYVPN
 
# Exceptions for local traffic & vpn server
iptables -A MYVPN -o lo -j RETURN
iptables -A MYVPN -o ${TUNNEL} -j RETURN
iptables -A MYVPN --dst 127.0.0.1 -j RETURN
iptables -A MYVPN --dst $LOCAL_NET -j RETURN
#iptables -A MYVPN --dst ${SERVER} -j RETURN
iptables -A MYVPN --dst ${VPN_SERVER} -j RETURN

# Add extra local nets here as necessary
 
iptables -A MYVPN -j DROP
 
# MYVPN traffic leaving this host:
iptables -A OUTPUT -p tcp --syn -j MYVPN
iptables -A OUTPUT -p icmp -j MYVPN
iptables -A OUTPUT -p udp -j MYVPN
user@host:~$ ip route

0.0.0.0/1 via 10.8.0.1 dev tun0 
default via 192.168.0.1 dev enp3s0 proto static metric 100 
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.2 
128.0.0.0/1 via 10.8.0.1 dev tun0 
XXX.XXX.0.0/16 dev enp3s0 scope link metric 1000 
XXX.XXX.XXX.XXX via 192.168.0.1 dev enp3s0  # <--- XXX... = адрес впн серв.
192.168.0.0/24 dev enp3s0 proto kernel scope link src 192.168.0.100 metric 100 
user@host:~$ iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
MYVPN      tcp  --  anywhere             anywhere             tcp flags:FIN,SYN,RST,ACK/SYN
MYVPN      icmp --  anywhere             anywhere            
MYVPN      udp  --  anywhere             anywhere            

Chain MYVPN (3 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere            
RETURN     all  --  anywhere             anywhere            
RETURN     all  --  anywhere             localhost           
RETURN     all  --  anywhere             192.168.0.0/16      
RETURN     all  --  anywhere             Тут адрес впн 
DROP       all  --  anywhere             anywhere            

Скорее всего не дал всей нужной информации, сообщите пжл, что требуется выложить.


Обратите внимание на этот комментарий в Вашем скрипте:

# Add extra local nets here as necessary

Он подсказывает Вам, что нужно делать, чтобы работать с локальной сетью ;). Вставьте сюда правила для WiFi и локальной сети (если есть) и все будет работать.

Serge10 ★★★★★ ()

Прочитал еще раз Ваше сообщение, что-то до конца не могу разобраться.

Не могу попасть на localhost на своём Дебиане, чтобы работать с проектами (LAMP серв) ;;

Откуда и на какой адрес коннектитесь?

Не могу приконнектить моб. устройства к Дебиану через вифи (KDE > Connect например) ;;

То же касается и принтера, который работает через вифи ;;

WiFi откуда? Можете схему сети нарисовать?

Serge10 ★★★★★ ()
Ответ на: комментарий от Serge10

WiFi откуда? Можете схему сети нарисовать?

Идёт сетевой кабель из падика, втыкается в TP-LINK. От тплинка кабель в комп. Моб устройства коннектятся к тплинку, он типа раздает им адреса. Я и правда очень слаб в этом вопросе.

Откуда и на какой адрес коннектитесь?

Ну, банально к localhost в браузере, который выдаёт страницу апача. Или к вирт. хостам.

QUUID ()
Ответ на: комментарий от Serge10

Он подсказывает Вам, что нужно делать, чтобы работать с локальной сетью ;). Вставьте сюда правила для WiFi и локальной сети (если есть) и все будет работать.

Я вроде и понимаю, что нужно что-то добавить/изменить в iptables, но для меня это тёмный лес(если глобально), в данном случае с моей маленькой домашней сетью — лесок, но такой же тёмный :)

QUUID ()

А почему у Вас разные сети указаны в таблице маршрутизации (192.168.0.0/24) и правилах iptables (192.168.0.0/16)?

Serge10 ★★★★★ ()
Ответ на: комментарий от QUUID

Моб устройства коннектятся к тплинку, он типа раздает им адреса.

Я правильно понимаю, что раздает тплинк ту же сеть (192.168.0.0)? И enp3s0 адрес оттуда же получает по dhcp?

Serge10 ★★★★★ ()
Ответ на: комментарий от QUUID

Ну, банально к localhost в браузере, который выдаёт страницу апача. Или к вирт. хостам.

Именно localhost (127.0.0.1)? Или 192.168.0.x (адрес enp3s0) тоже не отвечает?

Serge10 ★★★★★ ()
Ответ на: комментарий от Serge10

Ситуация с локалхостом и апачем оказалась до смешного тупой. Я его на новой системе еще не установил. Сейчас поставил, работает :) (какой же я мудак). Вопрос снят.

Вифи устройства пингуются, получают адреса 192.168.0.10X (dhcp). Кде коннект заработал, хотя еще вчера обзывал меня системным матом. Вопрос снят.

Но принтер(192.168.0.103) хоть и определяется, печатать ни в какую не хочет. Но как только сбросить `iptables -F` сразу принимается за дело. Остаётся только этот вопрос.

А почему у Вас разные сети указаны в таблице маршрутизации (192.168.0.0/24) и правилах iptables (192.168.0.0/16)?

Не знаю, скажите пожалуйста как надо.

QUUID ()
Ответ на: комментарий от QUUID

Не знаю, скажите пожалуйста как надо.

Это Вам виднее - какая у вас локальная сеть. Подозреваю, что /24, вряд ли 254 адреса Вам не хватит ;). Попробуйте заменить 192.168.0.0/16 на 192.168.0.0/24 в правилах iptables.

И еще - если запустить следующую команду от root:

/usr/sbin/tcpdump -i enp3s0 host 192.168.0.103

во время отправки задания на печать, что выдается в результате с включенными iptables и при сбросе (iptables -F)?

Serge10 ★★★★★ ()
Ответ на: комментарий от Serge10

С выключенными правилами

01:35:20.987010 IP 192.168.0.103.mdns > 224.0.0.251.mdns: 0*- [0q] 1/0/1 (Cache flush) TXT "txtvers=1" "ty=Canon MG5700 series" "adminurl=http://017DD4000000.local." "mfg=Canon" "mdl=MG5700 series" "UUID=00000000-0000-1000-8000-60128B017DD4" "scannerAvailable=1" (242)
01:35:23.924164 IP host.50777 > 192.168.0.103.snmp:  GetRequest(28)  25.3.2.1.3.1
01:35:23.925573 IP 192.168.0.103 > host: ICMP 192.168.0.103 udp port snmp unreachable, length 36
01:35:25.926253 IP host.50777 > 192.168.0.103.snmp:  GetRequest(28)  43.5.1.1.2.1
01:35:25.927559 IP 192.168.0.103 > host: ICMP 192.168.0.103 udp port snmp unreachable, length 36
01:35:27.929757 IP host.40656 > 192.168.0.103.ipp: Flags [S], seq 3806520580, win 29200, options [mss 1460,sackOK,TS val 14721791 ecr 0,nop,wscale 7], length 0
01:35:27.931095 IP 192.168.0.103.ipp > host.40656: Flags [S.], seq 272268800, ack 3806520581, win 11520, options [mss 1460], length 0
01:35:27.931110 IP host.40656 > 192.168.0.103.ipp: Flags [.], ack 1, win 29200, length 0
01:35:27.931451 IP host.40656 > 192.168.0.103.ipp: Flags [P.], seq 1:195, ack 1, win 29200, length 194
01:35:27.931538 IP host.40656 > 192.168.0.103.ipp: Flags [P.], seq 195:916, ack 1, win 29200, length 721
01:35:27.932757 IP 192.168.0.103.ipp > host.40656: Flags [.], ack 195, win 11326, length 0
01:35:27.933066 IP 192.168.0.103.ipp > host.40656: Flags [.], ack 916, win 10605, length 0
01:35:27.955879 IP 192.168.0.103.ipp > host.40656: Flags [P.], seq 1:24, ack 916, win 10799, length 23
01:35:27.955888 IP host.40656 > 192.168.0.103.ipp: Flags [.], ack 24, win 29200, length 0
01:35:27.956586 IP 192.168.0.103.ipp > host.40656: Flags [P.], seq 24:26, ack 916, win 10799, length 2
01:35:27.956589 IP host.40656 > 192.168.0.103.ipp: Flags [.], ack 26, win 29200, length 0
01:35:27.971903 IP 192.168.0.103.ipp > host.40656: Flags [P.], seq 26:43, ack 916, win 11520, length 17
01:35:27.971912 IP host.40656 > 192.168.0.103.ipp: Flags [.], ack 43, win 29200, length 0
01:35:27.972650 IP 192.168.0.103.ipp > host.40656: Flags [P.], seq 43:62, ack 916, win 11520, length 19
01:35:27.972654 IP host.40656 > 192.168.0.103.ipp: Flags [.], ack 62, win 29200, length 0
01:35:27.973347 IP 192.168.0.103.ipp > host.40656: Flags [P.], seq 62:83, ack 916, win 11520, length 21
01:35:27.973349 IP host.40656 > 192.168.0.103.ipp: Flags [.], ack 83, win 29200, length 0
01:35:27.974058 IP 192.168.0.103.ipp > host.40656: Flags [P.], seq 83:111, ack 916, win 11520, length 28
01:35:27.974060 IP host.40656 > 192.168.0.103.ipp: Flags [.], ack 111, win 29200, length 0
01:35:27.975033 IP 192.168.0.103.ipp > host.40656: Flags [P.], seq 111:192, ack 916, win 11520, length 81
01:35:27.975035 IP host.40656 > 192.168.0.103.ipp: Flags [.], ack 192, win 29200, length 0
01:35:27.975519 IP 192.168.0.103.ipp > host.40656: Flags [P.], seq 192:197, ack 916, win 11520, length 5
01:35:27.975521 IP host.40656 > 192.168.0.103.ipp: Flags [.], ack 197, win 29200, length 0
01:35:27.976655 IP 192.168.0.103.ipp > host.40656: Flags [P.], seq 197:1331, ack 916, win 11520, length 1134
01:35:27.976670 IP host.40656 > 192.168.0.103.ipp: Flags [.], ack 1331, win 31752, length 0
01:35:27.976872 IP 192.168.0.103.ipp > host.40656: Flags [P.], seq 1331:1333, ack 916, win 11520, length 2
01:35:27.976874 IP host.40656 > 192.168.0.103.ipp: Flags [.], ack 1333, win 31752, length 0
01:35:27.978270 IP 192.168.0.103.ipp > host.40656: Flags [P.], seq 1333:1338, ack 916, win 11520, length 5
01:35:27.978272 IP host.40656 > 192.168.0.103.ipp: Flags [.], ack 1338, win 31752, length 0
01:35:27.983711 IP host.40656 > 192.168.0.103.ipp: Flags [P.], seq 916:1110, ack 1338, win 31752, length 194
01:35:27.983804 IP host.40656 > 192.168.0.103.ipp: Flags [P.], seq 1110:1333, ack 1338, win 31752, length 223
... миллиард пакетов ...
01:35:38.016853 IP 192.168.0.103.mdns > 224.0.0.251.mdns: 0*- [0q] 1/0/1 (Cache flush) TXT "txtvers=1" "ty=Canon MG5700 series" "adminurl=http://017DD4000000.local." "mfg=Canon" "mdl=MG5700 series" "UUID=00000000-0000-1000-8000-60128B017DD4" "scannerAvailable=1" (242)
01:35:40.016728 IP 192.168.0.103.mdns > 224.0.0.251.mdns: 0*- [0q] 1/0/1 (Cache flush) TXT "txtvers=1" "ty=Canon MG5700 series" "adminurl=http://017DD4000000.local." "mfg=Canon" "mdl=MG5700 series" "UUID=00000000-0000-1000-8000-60128B017DD4" "scannerAvailable=1" (242)

с включенными правилами

root@host:# tcpdump -i enp3s0 host 192.168.0.103
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp3s0, link-type EN10MB (Ethernet), capture size 262144 bytes
01:31:14.308821 IP 192.168.0.103.56099 > 239.255.255.250.1900: UDP, length 285
01:31:14.309552 IP 192.168.0.103.56099 > 239.255.255.250.1900: UDP, length 294
01:31:14.310126 IP 192.168.0.103.56099 > 239.255.255.250.1900: UDP, length 333
01:31:14.408791 IP 192.168.0.103.56099 > 239.255.255.250.1900: UDP, length 355
01:31:14.509017 IP 192.168.0.103.56099 > 239.255.255.250.1900: UDP, length 285
01:31:14.509701 IP 192.168.0.103.56099 > 239.255.255.250.1900: UDP, length 294
01:31:14.510373 IP 192.168.0.103.56099 > 239.255.255.250.1900: UDP, length 333
01:31:14.608802 IP 192.168.0.103.56099 > 239.255.255.250.1900: UDP, length 355
01:31:50.365853 IP 192.168.0.103 > 224.0.0.251: igmp v2 report 224.0.0.251
01:31:57.023445 IP 192.168.0.103 > 239.255.255.250: igmp v2 report 239.255.255.250

QUUID ()
Ответ на: комментарий от QUUID

Интересно... Посмотрел еще раз Вашу таблицу маршрутизации - а что вот это за маршрут?

XXX.XXX.0.0/16 dev enp3s0 scope link metric 1000
Serge10 ★★★★★ ()
Ответ на: комментарий от Serge10

Самому интересно стало. Прогуглил этот вопрос. Это некий avahi-daemon и avahi-autoipd сотворили. Нашел этих ребят рядом со своим скриптом в if-up.d

Вот что пишут люди:

169.254.0.0/16 Применяется для динамической конфигурации хоста, когда хост должен получить адрес по DHCP, но сервер недоступен после 3 запросов, хост автоматически присваевает себе адрес с этого диапозона, перебирая по одному, до тех пор пока небудет найден свободный. Подробнее можно глянуть RFC 3927

#!/bin/sh

set -e

# Description:      Add routes to allow communication between machines which
#                   only have an IPv4LL address assigned and those which only
#                   have a routable address assigned.
#
#                   See http://developer.apple.com/qa/qa2004/qa1357.html for
#                   more information.

[ -x /usr/sbin/avahi-autoipd ] || exit 0

[ "$IFACE" != "lo" ] || exit 0
case "$ADDRFAM" in
	inet) ;;
	*) exit 0 ;;
esac

case "$METHOD" in
	static|dhcp|NetworkManager) ;;
	*) exit 0 ;;
esac


if [ -x /bin/ip ]; then
	# route already present?
	ip route show | grep -q '^169.254.0.0/16[[:space:]]' && exit 0

	/bin/ip route add 169.254.0.0/16 dev $IFACE metric 1000 scope link
elif [ -x /sbin/route ]; then
	# route already present?
	/sbin/route -n | egrep -q "^169.254.0.0[[:space:]]" && exit 0

	/sbin/route add -net 169.254.0.0 netmask 255.255.0.0 dev $IFACE metric 1000
fi
#!/bin/sh

# Don't run the avahi-daemon unicast local check while bringing up
# the loopback device; it's not necessary until we bring up a real network
# device
[ "$IFACE" != "lo" ] || exit 0
case "$ADDRFAM" in
	inet|inet6) ;;
	*) exit 0 ;;
esac

# If we have an unicast .local domain, we immediately disable avahi to avoid
# conflicts with the multicast IP4LL .local domain
if [ -x /usr/lib/avahi/avahi-daemon-check-dns.sh ] ; then
	exec /usr/lib/avahi/avahi-daemon-check-dns.sh
fi
QUUID ()
Ответ на: комментарий от Serge10

Убрал я это дело, перезагрузился. Этот маршрут исчез. Решил потестить принтер. Сразу как обычно вывалилась ошибка, что принтер не найден, хотя он прекрасно найден , пингуется и рассказывает о своих чернилах. Вырубил его, врубил, попробавал распечатать снова - распечатал :) Сейчас снова послал меня при просьбе о печати, а после выкл-вкл тупо без вопросов стал жрать листы и печать.

Аномалии короче. Но уже хоть что-то. Думаю можно закрываться. Сергей, большое спасибо за диалог и за помощь.

QUUID ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.