Чому різні користувачі отримують різні IP-адреси через один і той же інтерфейс


3

На тому ж сервері, на root, я отримую правильний ip інтерфейсу в Інтернеті

root@server:~# curl -s --interface ppp0 ipcheck.com
111.111.111.111root@server:~# 

Однак ...

Якщо це не супер користувач, я отримую ip маршруту / інтерфейсу eth0 або eth1 internet ip за замовчуванням замість ip ipp ppp0, і це не те, що я очікую.

matrix@server:~$ curl -s --interface ppp0 ipcheck.com
222.222.222.222matrix@server:~$ 

Моє запитання: чому різні користувачі отримують різні IP / маршрути? Це той самий додаток, той самий інтерфейс, який я правильно встановив маршрут ...

У / etc / iproute2 / rt_tables я додав

    20      isp1
    30      isp2
    40      ppp0
    50      ppp1
    60      ppp2

Перші 3 рядки маршруту ip:

    default 
        nexthop via 222.222.222.1  dev eth0 weight 1
        nexthop via 222.222.222.2  dev eth1 weight 1
10.200.20.1 dev ppp0  proto kernel  scope link  src 10.200.21.4
10.200.20.1 dev ppp1  proto kernel  scope link  src 10.200.21.9 
10.200.20.1 dev ppp2  proto kernel  scope link  src 10.200.21.7 

ip правило:

0:  from all lookup local 
32761:  from all fwmark 0x60 lookup ppp2 
32762:  from all fwmark 0x50 lookup ppp1
32763:  from all fwmark 0x40 lookup ppp0 
32764:  from all fwmark 0x30 lookup ISP2 
32765:  from all fwmark 0x20 lookup ISP1 
32766:  from all lookup main 
32767:  from all lookup default 

iptables:

    -A PREROUTING -t mangle -i eth0 -m state --state NEW,RELATED,ESTABLISHED -d 222.222.222.222 -j CONNMARK --set-mark 0x20
    -A PREROUTING -t mangle -i eth1 -m state --state NEW,RELATED,ESTABLISHED -d 222.222.222.223 -j CONNMARK --set-mark 0x30
    -A PREROUTING -t mangle -i br0 -m connmark --mark 0x20 -j CONNMARK --restore-mark
    -A PREROUTING -t mangle -i br0 -m connmark --mark 0x30 -j CONNMARK --restore-mark
    -A OUTPUT -t mangle -m state --state ESTABLISHED,RELATED -j CONNMARK --restore-mark
-A PREROUTING -t mangle -i ppp0 -m state --state NEW,RELATED,ESTABLISHED -d 10.200.21.4 -j CONNMARK --set-mark 0x40
-A PREROUTING -t mangle -i br0 -m connmark --mark 0x40 -j CONNMARK --restore-mark
-A PREROUTING -t mangle -i ppp1 -m state --state NEW,RELATED,ESTABLISHED -d 10.200.21.9 -j CONNMARK --set-mark 0x50
-A PREROUTING -t mangle -i br0 -m connmark --mark 0x50 -j CONNMARK --restore-mark
-A PREROUTING -t mangle -i ppp2 -m state --state NEW,RELATED,ESTABLISHED -d 10.200.21.7 -j CONNMARK --set-mark 0x60
-A PREROUTING -t mangle -i br0 -m connmark --mark 0x60 -j CONNMARK --restore-mark

-A OUTPUT -t mangle -m state --state ESTABLISHED,RELATED -j CONNMARK --restore-mark


    -A POSTROUTING -t nat -o eth0 -j MASQUERADE
    -A POSTROUTING -t nat -o eth1 -j MASQUERADE
    -A POSTROUTING -t nat -o ppp+ -j MASQUERADE

    -A FORWARD -i br0 -o eth0 -j ACCEPT
    -A FORWARD -i br0 -o eth1 -j ACCEPT
    -A FORWARD -i br0 -o ppp+ -j ACCEPT
    -A FORWARD -m state -i eth0 -o br0 --state ESTABLISHED,RELATED -j ACCEPT
    -A FORWARD -m state -i eth1 -o br0 --state ESTABLISHED,RELATED -j ACCEPT
    -A FORWARD -m state -i ppp+ -o br0 --state ESTABLISHED,RELATED -j ACCEPT
    -A FORWARD -i br0 -o br0 -j ACCEPT

Це допоможе, якщо ви можете сказати нам щось про повернені IP-адреси, але (не маючи достатньо для відповіді), моя перша здогадка - це те, що прив'язка до певного інтерфейсу вимагає рівня доступу, якого не має звичайний обліковий запис користувача, але корінь має.
CVn

Я трохи здивований: у мене немає підключення до ppp-сервера, але з OpenVPN, використовуючи віртуальний інтерфейс, tun0щоб грати в ту саму гру, повернені IP-адреси однакові.
MariusMatutiae

Я не можу знайти жодної документації про це, але afair як користувач, ви не можете встановити інтерфейс.
davidbaumann

Будь ласка, надайте висновок ip routeтаiptables-save
Даніель Б

Якщо будь-який вихід невірний, скажіть, який саме і чому. Якщо жоден з результатів невірний, скажіть, що це за проблема.
Девід Шварц
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.