LINUX.ORG.RU
решено ФорумAdmin

Помогите разобраться с curl

 ,


1

1

Имеются 2 сетевые карты и 2 провайдера.

[fil@lair ~]$ ifconfig 
enp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.100  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::bcd8:11c:aec4:eba5  prefixlen 64  scopeid 0x20<link>
        ether 00:25:22:39:6a:55  txqueuelen 1000  (Ethernet)
        RX packets 31444  bytes 30425932 (29.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 23875  bytes 7076099 (6.7 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp4s1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::9d03:1bd8:c3ad:83cd  prefixlen 64  scopeid 0x20<link>
        ether 10:bf:48:e7:94:b0  txqueuelen 1000  (Ethernet)
        RX packets 550  bytes 182319 (178.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 619  bytes 80509 (78.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 47324  bytes 26307776 (25.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 47324  bytes 26307776 (25.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ppp0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1492
        inet X.X.X.X  netmask 255.255.255.255  destination X.X.X.X
        ppp  txqueuelen 3  (Point-to-Point Protocol)
        RX packets 156  bytes 69121 (67.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 87  bytes 7127 (6.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
enp1s0 - роутер, ppp0 - pppoe
Вот таблица маршрутизации:
[fil@lair ~]$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    203    0        0 enp1s0
X.X.X.X   0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
192.168.0.0     0.0.0.0         255.255.255.0   U     203    0        0 enp1s0
Пробую пинговать, вроде все ок:
[fil@lair ~]$ ping -c 1 -I ppp0 ya.ru
PING ya.ru (213.180.204.3) from X.X.X.X ppp0: 56(84) bytes of data.
64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=1 ttl=56 time=16.7 ms

--- ya.ru ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 16.792/16.792/16.792/0.000 ms
Дальше пробую заюзать курл, но не работает:
[fil@lair ~]$ curl --verbose --interface ppp0 -4 ya.ru
* Rebuilt URL to: ya.ru/
*   Trying 213.180.204.3...
* Local Interface ppp0 is ip 95.104.243.93 using address family 2
* SO_BINDTODEVICE ppp0 failed with errno 1: Operation not permitted; will do regular bind
* Local port: 0
Помогите, добрые люди :-)

★★★★

Тут предлагают от привилегированного пользователя запускать.

Олсо,

Local Interface ppp0 is ip 95.104.243.93

что-то ты забыл всё закрыть X.X.X.X :)

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

Ну и фиг с ним :-)
От рута не вариант конечно, ибо использовать будет вместе с libcurl.

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

Какой-то слишком сложный путь :-(

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

Что-то и от рута не работает.

[fil@lair ~]$ sudo curl --verbose --interface ppp0 -4  ya.ru
* Rebuilt URL to: ya.ru/
*   Trying 213.180.193.3...
* Local Interface ppp0 is ip 95.104.229.16 using address family 2
* Local port: 0
А дальше сплошное ожидание...

FIL ★★★★
() автор топика

У вас дэфолтный маршрут на enp1s0 завернут, вот через него исходящий траф и идет только с другим ip а уж как оно там по дороге - нам не ведомо :)

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

У вас дэфолтный маршрут на enp1s0 завернут

я знаю

вот через него исходящий траф и идет только с другим ip

чего-чего?

а уж как оно там по дороге - нам не ведомо

Ну как мне трафик то пустить можно? Чтобы работало все нормально?

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

чего-чего?

в смысле что уходит с ip ppp0 но через enp1s0, запустите tcpdump увидите

Ну как мне трафик то пустить можно? Чтобы работало все нормально?

Нормально это как? Что бы исходящий с ip ppp0 шел через ppp0? Если да то iproute2 вам поможет, в гугле да и здесь полно тем про настройку двух провайдеров

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

Я в сетях не шарю и слегка не понимаю. Простых примеров нагуглить не смог, всякие распределение трафика и прочее, что мне нафиг не нужно.

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

Там везде фигурируют внешние адреса, которые выдали провайдеры, а у меня динамика на ppp0.

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

Ну и что? Можно ручками после поднятия.
По человечески, это прописать в /etc/ppp/ip-up (или что там у вас)

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

Ручками:

Прописать до поднятия ppp
ip route replace ip_vpn_сервера via ip_шлюза_по_умолчанию_до_поднятия_ppp

После поднятия ppp
ip route add default via ip_полученного_шлюза_ppp table 100
ip rule add from ip_ppp table 100

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

Пошаманил с таблицами, вроде работает.
Надо в отдельный скрипт теперь оформить.
Спасибо.

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

Не ручками:

Прописать до поднятия ppp
ip route replace ip_vpn_сервера via ip_шлюза_по_умолчанию_до_поднятия_ppp

Прописать в /etc/ppp/ip-up (или что там у вас)
ip route add default via $5 table 100
ip rule add from $4 table 100

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

Забыл, лучше так:

Прописать в /etc/ppp/ip-up (или что там у вас)
ip route add default via $5 table 100
ip rule add priority 30000 from $4 table 100
ip route flush cache

и в /etc/ppp/ip-down (или что там у вас)
ip rule del priority 30000

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

Сделал вот такой простой скрипт, вроде работает.

#!/bin/bash

GW1=192.168.0.1
GW2=95.104.192.34

ip route add default via $GW1 table T1
ip route add default via $GW2 table T2

ip rule add from $(hostname -i | cut -d ' ' -f1) table T1
ip rule add from $(hostname -i | cut -d ' ' -f2) table T2
Не знаю на сколько это правильно правдо...

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

Хм, скажем так: очень не правильно особенно с hostname. Тем более ты сам писал что у тебя динамические адреса на ppp. Выше я уже все написал как правильно.
ЗЫ вот эта строка

 ip route replace ip_vpn_сервера via ip_шлюза_по_умолчанию_до_поднятия_ppp
нужна только для случая если маршрут по умолчанию будет переопределен при поднятии ppp, что бы до сервера оставался старый маршрут.

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

А что за аргументы $4 и $5 в твоих скриптах?
Как я понимаю их ppp дает? $5 - шлюз, $4 - айпи?
Тогда да, лучше запихать в ip-up и в ip-down скрипты.

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

Скрипты запускает pppd при поднятии и опускании интерфейса.
Передаваемые параметры:

interface-name, tty-device, speed, local-IP-address, remote-IP-address, ipparam
т.е $4 - local-IP-address, $5 - remote-IP-address

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

Спасибо, добрый человек, за разжевку.

FIL ★★★★
() автор топика
Последнее исправление: FIL (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.