xenon
@xenon
Too drunk to fsck

Почему не работают некоторые сайты из docker под wireguard?

Почему-то некоторые URL не открываются (curl) из docker контейнера, если запускаю wireguard. Проверял на debian:latest и ubuntu:latest, на своем wireguard сервере (с минимальным конфигом) и на сторонних (warpvpn.net и fastssh.com - бесплатные, для теста, можете тоже попоробовать через них).

Не работают конкретно следующие URL:

# по дефолту IPv6 отключен. перепроверяем, чтоб на него не грешить
root@c66fa430586c:/# sysctl net.ipv6.conf.default.disable_ipv6
net.ipv6.conf.default.disable_ipv6 = 1

root@c66fa430586c:/# timelimit -t 10 curl https://pypi.org/
timelimit: sending warning signal 15

root@c66fa430586c:/# timelimit -t 10 curl http://deb.debian.org/
timelimit: sending warning signal 15

root@c66fa430586c:/# timelimit -t 10 curl https://www.cnn.com/  
timelimit: sending warning signal 15

# telegra.ph иногда работает, может 1 раз из 5
root@c66fa430586c:/# timelimit -t 10 curl https://telegra.ph/
timelimit: sending warning signal 15

root@c66fa430586c:/# timelimit -t 10 curl https://dev.to/
timelimit: sending warning signal 15

# и самое святое!
root@c66fa430586c:/# timelimit -t 10 curl https://habr.com/
timelimit: sending warning signal 15

Прочие сайты работают, всякие там https://www.debian.org/ открывается, ifconfig.me, скачал с netlify 80 мегов файл для теста - работает. HTTPS вроде бы не работают чаще, чем HTTP. ftp.debian.org/debian кидает редирект с trailing slash, но если его добавить, то уже не работает (видимо, потому что страничка в ответе длиннее).

Если поможет, то вот что tcpdump пишет (при попытке залезть на deb.debian.org)
tcpdump

root@c66fa430586c:/# tcpdump -n tcp and port 80
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
16:47:14.393881 IP 172.17.0.3.50938 > 146.75.118.132.80: Flags [S], seq 1517565118, win 64240, options [mss 1460,sackOK,TS val 4282636928 ecr 0,nop,wscale 7], length 0
16:47:14.505298 IP 146.75.118.132.80 > 172.17.0.3.50938: Flags [S.], seq 4278727570, ack 1517565119, win 65535, options [mss 1460,sackOK,TS val 2280960337 ecr 4282636928,nop,wscale 9], length 0
16:47:14.505358 IP 172.17.0.3.50938 > 146.75.118.132.80: Flags [.], ack 1, win 502, options [nop,nop,TS val 4282637039 ecr 2280960337], length 0
16:47:14.505507 IP 172.17.0.3.50938 > 146.75.118.132.80: Flags [P.], seq 1:86, ack 1, win 502, options [nop,nop,TS val 4282637039 ecr 2280960337], length 85: HTTP: GET /debian/ HTTP/1.1
16:47:14.614046 IP 146.75.118.132.80 > 172.17.0.3.50938: Flags [.], ack 86, win 283, options [nop,nop,TS val 2280960447 ecr 4282637039], length 0
16:47:14.642363 IP 146.75.118.132.80 > 172.17.0.3.50938: Flags [P.], seq 1:573, ack 86, win 283, options [nop,nop,TS val 2280960475 ecr 4282637039], length 572: HTTP: HTTP/1.1 200 OK
16:47:14.642374 IP 172.17.0.3.50938 > 146.75.118.132.80: Flags [.], ack 573, win 501, options [nop,nop,TS val 4282637176 ecr 2280960475], length 0
16:47:14.642396 IP 146.75.118.132.80 > 172.17.0.3.50938: Flags [P.], seq 6349:6693, ack 86, win 283, options [nop,nop,TS val 2280960475 ecr 4282637039], length 344: HTTP
16:47:14.642402 IP 172.17.0.3.50938 > 146.75.118.132.80: Flags [.], ack 573, win 501, options [nop,nop,TS val 4282637176 ecr 2280960475,nop,nop,sack 1 {6349:6693}], length 0



Все эти сайты работают с хоста (тот же тест, те же команды, в то же время и через тот же VPN). Но не работают, если из под docker.

Конфиг VPN почти минимальный (но и с абсолютно минимальным неработает тоже):
spoiler

~~~
[Interface]
PrivateKey = ....
Address = 10.9.0.2/24
MTU=1200

PostUp = iptables -A FORWARD -i wg0 -m state --state RELATED,ESTABLISHED -j ACCEPT; iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
PostDown = iptables -D FORWARD -i wg0 -m state --state RELATED,ESTABLISHED -j ACCEPT; iptables -D FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

[Peer]
PublicKey = ....
AllowedIPs = 0.0.0.0/0
Endpoint = .....
PersistentKeepalive = 25
~~~


Вот MTU и PostUp/PostDown это я уже сегодня добавил в попытках починить (не помогло). Без них - та же фигня. Более того, та же фигня через конфиг от warpvpn.net / fastssh.com, у них тоже конфиги минимальные. В общем, через все бесплатные wireguard которые я пробовал + через мой собственный эта проблема есть. Но с хост-машины ее нет, и из докера без wireguard - тоже нет. И понижение MTU даже до 1200 - не помогает. Что это может быть тогда?

Проверил на другом компе - та же проблема есть (то есть, она не какие-то сильно специфичные особенности моего компа). На обоих хостовая ОС - Debian 11 Bullseye.

Вообще, у вас это дело работает? (debian host, wireguard, ubuntu/debian docker, curl https://pypi.org/)
  • Вопрос задан
  • 277 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы