LINUX.ORG.RU
ФорумAdmin

openvpn не ходит трафик

 


0

1

клиент на windows, сервер на debian 12. openvpn установлен на сервер, сертификаты сгенерированы, клиенту подсунуты. пинг до ya.ru с сервера (через ssh-консоль) и с клиента проходит.

клиент успешно подключается к серверу, но пока подключен - на клиенте интернет не работает, пинга до ya.ru нет.

помогите плиз диагностировать проблему с маршрутизацией\настройками openvpn-сервера - любые конфиги предоставлю.

/etc/openvpn/server.conf

port 1194
proto udp
dev tun
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/server.crt
key /etc/openvpn/easy-rsa/pki/private/server.key  
dh /etc/openvpn/easy-rsa/keys/dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
cipher AES-256-GCM
persist-key
persist-tun
verb 3
push "redirect-gateway def1"
#push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 10.8.0.1"
#push "route 192.168.0.1 255.255.255.0"

/etc/sysctl.conf

net.ipv4.ip_forward=1


Последнее исправление: cargo_tim (всего исправлений: 4)

Давай начнём с того, что никакой OpenVPN и WG уже несколько месяцев как никуда ходить не должен. Может, в некоторых граничных случаях и довольно нестабильно.

Второй момент, который я вижу – это наличие push "redirect-gateway def1" и отстуствие в посте полной выкладки фаерволла сервера и в частности того, где ты делаешь NAT своему VPN трафику.

P.S.: когда будешь отвечать в теме, перед нажатием на «Поместить» прочитай что написано по ссылке «Markdown» парой строк выше кнопки и сделай всё как там написано.

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

В блеклистах не адрес а впны сами по себе, не важно на каком адресе. И не стоит упорствовать в этом направлении, тебе ясно дают понять что не надо это делать.

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

Давай начнём с того, что никакой OpenVPN и WG уже несколько месяцев как никуда ходить не должен.

Кому «не должен»? Где-то оно не робит, а где-то и робит, тут как повезет.

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

nft list ruleset

# Warning: table ip filter is managed by iptables-nft, do not touch!
table ip filter {
        chain FORWARD {
                type filter hook forward priority filter; policy accept;
                ct state related,established counter packets 168 bytes 28041 accept
                ip saddr 10.8.0.0/24 counter packets 152 bytes 19183 accept
                ct state related,established counter packets 0 bytes 0 accept
                ip saddr 10.8.0.0/24 counter packets 71 bytes 8739 accept
                counter packets 0 bytes 0 reject
                iifname "tun*" counter packets 0 bytes 0 accept
                iifname "tap*" counter packets 0 bytes 0 accept
                iifname "eth0" oifname "tun0" ct state established,related accept
                oifname "eth0" ip saddr 10.9.8.0/24 accept
        }

        chain INPUT {
                type filter hook input priority filter; policy accept;
                tcp dport 1194 counter packets 194 bytes 66506 accept
                iifname "tun*" counter packets 5 bytes 359 accept
                iifname "tap*" counter packets 0 bytes 0 accept
        }
}
# Warning: table ip nat is managed by iptables-nft, do not touch!
table ip nat {
        chain POSTROUTING {
                type nat hook postrouting priority srcnat; policy accept;
                oifname "eth0" ip saddr 10.8.0.0/24 counter packets 0 bytes 0 masquerade
                oifname "eth0" ip saddr 10.9.8.0/24 masquerade
                ip saddr 10.8.0.0/24 ip daddr != 10.8.0.0/24 counter packets 132 bytes 15935 snat to 150.241.114.112
        }
}
cargo_tim
() автор топика
Ответ на: комментарий от cargo_tim

nft list ruleset покажет тебе правила. Твой скрипт пролистал бегло и про nftables он ничего не знает. Отработала ли у тебя трансляция команд iptables в nft не ясно, похоже что нет.

Возьми другой скрипт, а лучше изучи современные методы антиРКН (sing-box, xray) – это принесет больше пользы и твоё решение на устаревших знаниях про VPN не сломается от первого дуновения ветерка.

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

Окей, NAT на месте. Похоже у тебя РКН. Как я и говорил выше РФ <> Германия (еще и какой-нибудь Hetzner) почти гарантированно не работает ни на каких домашних/мелких корпоративных каналах.

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

Ну вот у меня дома не должен и не работает, на мобилке не должен и не работает, в офисе не должен и не работает, а в датацентрах пока окей 50/50, даже до Hetzner (хотя тоже не должен).

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

Сервер в той же стране где и клиент или в разных? Если второе - то и не должно работать.

Уверен…?
У меня сервер в Нидерландах, все клиенты (~ 30 штук) во Владивостоке. OpenVPN, порт стандартный, скорость из 100 мбит заявленной 70 - 75 тянет.

Вы вроде тут все старожилы пятизвёздочные, но довольно-таки часто ошибаетесь в комментариях.

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

Ну вот у меня дома не должен и не работает

У меня работает.

на мобилке не должен и не работает

На МТС работает точно. Мегафон вроде не очень давно ради интереса проверял, тоже робило.

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

буду признателен за помощь с диагностикой\конфигурацией

Во-первых что за подсеть 10.9.8.0/24 у тебя маскарадится…? Я её в упор не вижу в конфиге. Вангую что это бездумный копи/паст с какого-то мануала.

Во-вторых, чтоб адреса выдавались как-будто из подсети, надо добавить в конфиг параметр topology subnet. Без него (если я не ошибаюсь) адреса выдаются с 32 битом маски типа point-to-point.
Подключившись к впн, посмотри какой адрес с какой маской тебе выдан.

Давай пока это сделаем

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

Поверхностно вроде похоже на правду. Я бы запустил tcpdump и посмотрел кто куда и как летает или не летает.
ЗЫ Ну и до кучи рекомендую сменить дефолтный порт. Это в качестве общей рекомендации.

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

ТС нам не занес больше золота, так что гадаем на кофейной гуще.

А что? Прикольно! Представим, что мы на какой-нибудь олимпиаде душных зaдpотoв. Нам задали вопрос без уточнений и кто первый даст правильный ответ, тот и победил. Приз - большое, человеческое спасибо! =)

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

У меня работает

Куда?

На МТС работает точно. Мегафон вроде не очень давно ради интереса проверял, тоже робило

Куда? Внутри России и на некоторые псевдозабугорные vps/vds работает. На остальное зарезано на уровне протокола (т.е. порт ни при чём). На мобильном интернете зарезано довольно давно, на проводном с октября +/-.

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

сорри, не могу понять

  • как правила nft list ruleset корректировать и как именно надо это сделать в части маскарадинга 10.9.8.0/24. этой подсети я не знаю, vpn-клиент когда подключается получает адрес 10.8.0.2
  • как проверить работоспособность push «redirect-gateway def1»
cargo_tim
() автор топика
Ответ на: комментарий от Shprot

УМВР. А у кого то — нет. Предполагаю что если вникнуть, провести анализ методами указанными на https://github.com/bol-van/zapret и подобрать параметры — заработает и там где не работает. Но УМВР до сих пор, так что это только предположение. Начнут мешать — начну бороться.

И не топлю я за неё вовсе, с чего ты взял? Просто так сложилось что я пользуюсь коммерческим провайдером VPN, я его на много лет вперёд проплатил битками, он умеет в wireguard в куче разных стран и мне оказалось совсем не сложно прикрутить к нему клиента Амнезии.

Но у меня и альтернативные варианты есть, проверенно-рабочие, только не такие шустрые, а именно ssh+openvpn и ssl+openvpn, пров в это умеет на разных портах и нескольких альтернативных IP на каждый сервер (это на случай если IP тоже начнут банить).

Jameson ★★★★★
()
Последнее исправление: Jameson (всего исправлений: 1)
Ответ на: комментарий от cargo_tim

Маскарадинг сети openvpn в конфиге nftables есть, всё необходимое для NAT 10.8.0.0/24 в Интернет уже на месте.

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

BOOBLIK ★★★★
()
Последнее исправление: BOOBLIK (всего исправлений: 1)
Ответ на: комментарий от BOOBLIK

понял. как тогда диагностировать проблему? я так понимаю она может быть как на windows-клиенте, так и на debian-сервере. мне хотелось бы добиться того, чтобы весь трафик (включая пинг) с клиента шел на сервер внутри vpn-тоннеля и попадал бы в интернет - и обратно.

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

Открой файл /etc/nftables.conf vim’ом удобным текстовым редактором и замени блок

table ip nat {
    chain POSTROUTING {
        type nat hook postrouting priority srcnat; policy accept;
        oifname "eth0" ip saddr 10.8.0.0/24 counter packets 0 bytes 0 masquerade
        oifname "eth0" ip saddr 10.9.8.0/24 masquerade
        ip saddr 10.8.0.0/24 ip daddr != 10.8.0.0/24 counter packets 132 bytes 15935 snat to 150.241.114.112
    }
}

на

table ip NAT {
    chain masquerade_for_OVPN {
        type nat hook postrouting priority srcnat; policy accept;
        ip saddr 10.8.0.0/24 oifname "eth0" masquerade comment "outgoing NAT"
    }
}

Обязательно сохрани изменения. Затем systemctl restart nftables пробуй подключиться/переподключиться к своему детищу…=)
После подключения пробуй что-нибудь открыть. Гугл например. Открывается? Отлично! Дальше проверь свой IP адрес. При подключенном ВПН’е, он должен будет соответствовать твоему забугорному серверу

P.S> У тебя интерфейс точно eth0 зовётся? ip a что показывает?

Shprot ★★
()
Последнее исправление: Shprot (всего исправлений: 1)
Ответ на: комментарий от Shprot

В nano /etc/nftables.conf не было такого, дополнил новым блоком, старый не трогал

root@vm834216:~# nano /etc/nftables.conf
  GNU nano 7.2                   /etc/nftables.conf *

flush ruleset

table inet filter {
        chain input {
                type filter hook input priority filter;
        }
        chain forward {
                type filter hook forward priority filter;
        }
        chain output {
                type filter hook output priority filter;
        }
}
table ip NAT {
    chain masquerade_for_OVPN {
        type nat hook postrouting priority srcnat; policy accept;
        ip saddr 10.8.0.0/24 oifname "eth0" masquerade comment "outgoing NAT"
    }
}

вывод ip a

root@vm834216:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:2d:e5:13 brd ff:ff:ff:ff:ff:ff
    altname enp0s3
    inet 150.241.114.112/32 brd 150.241.114.112 scope global ens3
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe2d:e513/64 scope link
       valid_lft forever preferred_lft forever
14: tun1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 500
    link/none
    inet 10.8.0.1/24 scope global tun1
       valid_lft forever preferred_lft forever
    inet6 fe80::cfdc:3f01:4102:82ee/64 scope link stable-privacy
       valid_lft forever preferred_lft forever

Выполнил systemctl restart nftables, переподключил vpn - поведение то же: ip 10.8.0.2 получает, но на windows-клиенте странички не открываются, пинг наружу перестает проходить после подключения vpn-клиента

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

понял. как тогда диагностировать проблему?

Довольно нетривиальная задача. Сомневаюсь, что хватит навыков если речь именно о диагностике вмешательства РКН.

BOOBLIK ★★★★
()
Последнее исправление: BOOBLIK (всего исправлений: 1)
Ответ на: комментарий от cargo_tim

Слушай, я ещё раз хочу осветить момент бездумного копи/паста лишь бы заработало. Ты какого хуавея в маскарад засовываешь интерфейс eth0, если на твоей системе такого в помине нет?

Замени теперь блок

table ip NAT {
    chain masquerade_for_OVPN {
        type nat hook postrouting priority srcnat; policy accept;
        ip saddr 10.8.0.0/24 oifname "eth0" masquerade comment "outgoing NAT"
    }
}

на

table ip NAT {
    chain masquerade_for_OVPN {
        type nat hook postrouting priority srcnat; policy accept;
        ip saddr 10.8.0.0/24 oifname "ens3" masquerade comment "outgoing NAT"
    }
}

systemctl restart nftables и пробуй.

И состояние твоего tun1 интерфейса говорит UNKNOWN. Немного должно настораживать

Давай уже как-то понимать свои действия, а то тебе посоветует тут кто-нибудь sudo rm -rf /* скомандовать, весело будет =)

P.S> только не делай sudo rm -rf /*, а то хрен Вас знает…=)

Shprot ★★
()
Последнее исправление: Shprot (всего исправлений: 1)

Граждане, вы занимаетесь хернёй. Настраивать iptables/nft можно лишь тогда, когда в туннеле всё бегает. Если пинг с клиента до шлюза 10.8.0.1 не работает, либо замирает после 5го пакета, то nft крутить бесполезно.

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

Потому что это норма. И UNKNOWN и link/none. Вот с поднятого и гарантировано (почему гарантировано? Потому что я зашёл туда по адресу 10.8.0.2) работающего ovpn:

X: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 500
    link/none 
    inet 10.8.0.2/24 brd 10.8.0.255 scope global tun0
       valid_lft forever preferred_lft forever
Dimez ★★★★★
()
Последнее исправление: Dimez (всего исправлений: 1)
Ответ на: комментарий от Dimez

Если пинг с клиента до шлюза 10.8.0.1 не работает, либо замирает после 5го пакета, то nft крутить бесполезно.

Вы не правы в своей однозначности.
1. «Если пинг с клиента до шлюза 10.8.0.1 не работает» то это как раз может быть fw.
2. «либо замирает после 5го пакета» хоть и с меньшей вероятностью, но тоже возможно виноват fw который прописывает что-то в up скрипте подключения клиента.

anc ★★★★★
()