Задать вопрос
  • Почему контейнер с сетью "bridge" на VPS сервере не может подключиться к API?

    @Ayudag Автор вопроса
    shurshur, понял, спасибо за пояснение. Полезная информация, не сталкивался с таким раньше.
    Написано
  • Почему контейнер с сетью "bridge" на VPS сервере не может подключиться к API?

    @Ayudag Автор вопроса
    shurshur, поучительная история, надо взять на заметку это правило :DD
    Написано
  • Почему контейнер с сетью "bridge" на VPS сервере не может подключиться к API?

    @Ayudag Автор вопроса
    Valentin Barbolin, решил свою проблему - поменял значение MTU с 1500 на 1450 в конфигурационном файле docker.service. Помогли в поддержке провайдера.

    Большущее спасибо за помощь!
    Написано
  • Почему контейнер с сетью "bridge" на VPS сервере не может подключиться к API?

    @Ayudag Автор вопроса
    shurshur, всё понял, спасибо!

    Решил свою проблему - поменял значение MTU с 1500 на 1450 в конфигурационном файле docker.service. Помогли в поддержке провайдера.

    Спасибо большое за помощь, узнал много нового!
    Написано
  • Почему контейнер с сетью "bridge" на VPS сервере не может подключиться к API?

    @Ayudag Автор вопроса
    shurshur, такой вопрос: если у меня 1 или 2 контейнера будут работать в сети host, а остальные контейнеры в сети bridge (между собой они не общаются) - это приемлемая практика или это совсем плохо?
    Написано
  • Почему контейнер с сетью "bridge" на VPS сервере не может подключиться к API?

    @Ayudag Автор вопроса
    Valentin Barbolin, попробовал из другого контейнера - тоже самое:
    curl: (35) Recv failure: Connection reset by peer

    Еще запустил контейнер с другим Телеграм-ботом в bridge, который работает с другим API - проблем никаких нет.
    Написано
  • Почему контейнер с сетью "bridge" на VPS сервере не может подключиться к API?

    @Ayudag Автор вопроса
    Valentin Barbolin, В момент подключения к API, приложение будто замирает - логи перестают поступать в консоль и при этом исключения не выскакивают. Потом я добавил в программу таймауты к подключению и чтению:
    connection.setConnectTimeout(5000); // 5 seconds connection timeout
    connection.setReadTimeout(10000); // 10 seconds read timeout

    Теперь когда этот контейнер запускаю на серваке выскакивает след исключение:
    java.net.SocketTimeoutException: Read timed out
            at java.base/sun.nio.ch.NioSocketImpl.timedRead(NioSocketImpl.java:283)
            at java.base/sun.nio.ch.NioSocketImpl.implRead(NioSocketImpl.java:309)
            at java.base/sun.nio.ch.NioSocketImpl.read(NioSocketImpl.java:350)
            at java.base/sun.nio.ch.NioSocketImpl$1.read(NioSocketImpl.java:803)
            at java.base/java.net.Socket$SocketInputStream.read(Socket.java:961)
            at ...


    Попробовал внутри контейнера отправить запрос к этому API с помощью curl - тишина минуты 3, потом выводится следующее:
    curl: (35) Recv failure: Connection reset by peer

    Я использую YandexGPT API и возможно проблемы именно с ним. Когда с помощью курла отправляю тестовый запрос на другой API - всё работает. Насколько я знаю, при отправке запроса к YandexGPT именно из браузера - выскакивает cors ошибка (нужна доп настройка). Может ли быть такое, что моя проблема тоже связана с этим?
    Написано
  • Почему контейнер с сетью "bridge" на VPS сервере не может подключиться к API?

    @Ayudag Автор вопроса
    shurshur, я не запустил контейнер, извиняюсь. вот с запущенным контейнером:

    # Generated by iptables-save v1.8.10 (nf_tables) on Wed Oct 23 22:51:04 2024
    *filter
    :INPUT ACCEPT [0:0]
    :FORWARD DROP [0:0]
    :OUTPUT ACCEPT [0:0]
    :DOCKER - [0:0]
    :DOCKER-ISOLATION-STAGE-1 - [0:0]
    :DOCKER-ISOLATION-STAGE-2 - [0:0]
    :DOCKER-USER - [0:0]
    -A FORWARD -j DOCKER-USER
    -A FORWARD -j DOCKER-ISOLATION-STAGE-1
    -A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    -A FORWARD -o docker0 -j DOCKER
    -A FORWARD -i docker0 ! -o docker0 -j ACCEPT
    -A FORWARD -i docker0 -o docker0 -j ACCEPT
    -A DOCKER -d 172.17.0.2/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 8080 -j ACCEPT
    -A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
    -A DOCKER-ISOLATION-STAGE-1 -j RETURN
    -A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
    -A DOCKER-ISOLATION-STAGE-2 -j RETURN
    -A DOCKER-USER -j RETURN
    COMMIT
    # Completed on Wed Oct 23 22:51:04 2024
    # Generated by iptables-save v1.8.10 (nf_tables) on Wed Oct 23 22:51:04 2024
    *nat
    :PREROUTING ACCEPT [1995:93938]
    :INPUT ACCEPT [0:0]
    :OUTPUT ACCEPT [129:9071]
    :POSTROUTING ACCEPT [129:9071]
    :DOCKER - [0:0]
    -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
    -A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
    -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
    -A POSTROUTING -s 172.17.0.2/32 -d 172.17.0.2/32 -p tcp -m tcp --dport 8080 -j MASQUERADE
    -A DOCKER -i docker0 -j RETURN
    -A DOCKER ! -i docker0 -p tcp -m tcp --dport 8001 -j DNAT --to-destination 172.17.0.2:8080
    COMMIT
    # Completed on Wed Oct 23 22:51:04 2024

    --------------------------------------------------------------------------------------------------

    управлялок iptables на хосте не нашел.
    docker network inspect bridge:

    [
    {
    "Name": "bridge",
    "Id": "7602bbdfd9d4f63f4fbac77020790bfff29b3f346b17babd572065aa5eb72aa1",
    "Created": "2024-10-23T21:00:12.612812129+03:00",
    "Scope": "local",
    "Driver": "bridge",
    "EnableIPv6": false,
    "IPAM": {
    "Driver": "default",
    "Options": null,
    "Config": [
    {
    "Subnet": "172.17.0.0/16",
    "Gateway": "172.17.0.1"
    }
    ]
    },
    "Internal": false,
    "Attachable": false,
    "Ingress": false,
    "ConfigFrom": {
    "Network": ""
    },
    "ConfigOnly": false,
    "Containers": {
    "ecf0bdd22cde20a91a028e09c2ff8e4541fcbac2a4b9cc8b388c59102c47625b": {
    "Name": "test-app",
    "EndpointID": "67c1b82eafa238fe2753200c00fbde26ddd3184f5d6a23b1628b1442dcd8bfb3",
    "MacAddress": "02:42:ac:11:00:02",
    "IPv4Address": "172.17.0.2/16",
    "IPv6Address": ""
    }
    },
    "Options": {
    "com.docker.network.bridge.default_bridge": "true",
    "com.docker.network.bridge.enable_icc": "true",
    "com.docker.network.bridge.enable_ip_masquerade": "true",
    "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
    "com.docker.network.bridge.name": "docker0",
    "com.docker.network.driver.mtu": "1500"
    },
    "Labels": {}
    }
    ]

    но насколько я разобрался, проблем здесь нет.
    если нужно, могу отправить что выводится после команды sudo inspect test-app
    Написано
  • Почему контейнер с сетью "bridge" на VPS сервере не может подключиться к API?

    @Ayudag Автор вопроса
    Valentin Barbolin, виноват, не запустил контейнер.

    # Generated by iptables-save v1.8.10 (nf_tables) on Wed Oct 23 22:51:04 2024
    *filter
    :INPUT ACCEPT [0:0]
    :FORWARD DROP [0:0]
    :OUTPUT ACCEPT [0:0]
    :DOCKER - [0:0]
    :DOCKER-ISOLATION-STAGE-1 - [0:0]
    :DOCKER-ISOLATION-STAGE-2 - [0:0]
    :DOCKER-USER - [0:0]
    -A FORWARD -j DOCKER-USER
    -A FORWARD -j DOCKER-ISOLATION-STAGE-1
    -A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    -A FORWARD -o docker0 -j DOCKER
    -A FORWARD -i docker0 ! -o docker0 -j ACCEPT
    -A FORWARD -i docker0 -o docker0 -j ACCEPT
    -A DOCKER -d 172.17.0.2/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 8080 -j ACCEPT
    -A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
    -A DOCKER-ISOLATION-STAGE-1 -j RETURN
    -A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
    -A DOCKER-ISOLATION-STAGE-2 -j RETURN
    -A DOCKER-USER -j RETURN
    COMMIT
    # Completed on Wed Oct 23 22:51:04 2024
    # Generated by iptables-save v1.8.10 (nf_tables) on Wed Oct 23 22:51:04 2024
    *nat
    :PREROUTING ACCEPT [1995:93938]
    :INPUT ACCEPT [0:0]
    :OUTPUT ACCEPT [129:9071]
    :POSTROUTING ACCEPT [129:9071]
    :DOCKER - [0:0]
    -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
    -A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
    -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
    -A POSTROUTING -s 172.17.0.2/32 -d 172.17.0.2/32 -p tcp -m tcp --dport 8080 -j MASQUERADE
    -A DOCKER -i docker0 -j RETURN
    -A DOCKER ! -i docker0 -p tcp -m tcp --dport 8001 -j DNAT --to-destination 172.17.0.2:8080
    COMMIT
    # Completed on Wed Oct 23 22:51:04 2024
    Написано
  • Почему контейнер с сетью "bridge" на VPS сервере не может подключиться к API?

    @Ayudag Автор вопроса
    Valentin Barbolin, кастомные настройки не делал.
    iptables:

    # Generated by iptables-save v1.8.10 (nf_tables) on Wed Oct 23 19:40:43 2024
    *filter
    :INPUT ACCEPT [0:0]
    :FORWARD DROP [0:0]
    :OUTPUT ACCEPT [0:0]
    :DOCKER - [0:0]
    :DOCKER-ISOLATION-STAGE-1 - [0:0]
    :DOCKER-ISOLATION-STAGE-2 - [0:0]
    :DOCKER-USER - [0:0]
    -A FORWARD -j DOCKER-USER
    -A FORWARD -j DOCKER-ISOLATION-STAGE-1
    -A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    -A FORWARD -o docker0 -j DOCKER
    -A FORWARD -i docker0 ! -o docker0 -j ACCEPT
    -A FORWARD -i docker0 -o docker0 -j ACCEPT
    -A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
    -A DOCKER-ISOLATION-STAGE-1 -j RETURN
    -A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
    -A DOCKER-ISOLATION-STAGE-2 -j RETURN
    -A DOCKER-USER -j RETURN
    COMMIT
    # Completed on Wed Oct 23 19:40:43 2024
    # Generated by iptables-save v1.8.10 (nf_tables) on Wed Oct 23 19:40:43 2024
    *nat
    :PREROUTING ACCEPT [2850:133435]
    :INPUT ACCEPT [0:0]
    :OUTPUT ACCEPT [87:6603]
    :POSTROUTING ACCEPT [87:6603]
    :DOCKER - [0:0]
    -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
    -A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
    -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
    -A DOCKER -i docker0 -j RETURN
    COMMIT
    # Completed on Wed Oct 23 19:40:43 2024
    Написано
  • Почему контейнер с сетью "bridge" на VPS сервере не может подключиться к API?

    @Ayudag Автор вопроса
    shurshur, внутри контейнера ping работает, файл daemon пустой, ip_forward включен. В правилах iptables в FORWARD прописан DROP - может быть в этом проблема или это правильная настройка?
    Написано