LINUX.ORG.RU

7
Всего сообщений: 103

2 провайдера и разделение трафика

Научите плиз, как это осилить? Хочу из локальной сети запросы в инет на, к примеру, 443 порт отправлять через одного провайдера и получать с него же, все остальное через второго. Добавил 2 таблицы в rt_tables, правила такие

ip route add $PROV1_SUB dev $PROV1 src $IP1 table PROV1
ip route add default via $PROV1_GW table PROV1
ip route add $PROV2_SUB dev $PROV2 src $IP2 table PROV2
ip route add default via $PROV2_GW table PROV2

ip route add $PROV1_SUB dev $PROV1 src $IP1
ip route add $PROV2_SUB dev $PROV2 src $IP2

ip route add default via $PROV1_GW

ip route add from $IP1 table PROV1
ip route add from $IP2 table PROV2

ip route add $LOCAL_SUB dev $LOCAL_IP table PROV1
ip route add $PROV2_SUB dev $PROV2 table PROV1
ip route add 127.0.0.0/8 dev lo table PROV1
ip route add $LOCAL_SUB dev $LOCAL_IP table PROV2
ip route add $PROV1_SUB dev $PROV1 table PROV2
ip route add 127.0.0.0/8 dev lo table PROV2

ip rule add from all fwmark 400 table PROV2
Как в nftables (на худой конец iptables) фильтровать трафик меткой? Никогда этого не делал, нахожу примеры в которых конкретный источник указан, а мне нужно чтоб любой источник из локальной сети был.

 , ,

achilles_85 ()

LTE и wireguard в качестве двух провайдеров

Пытаюсь настроить эту связку на домашнем сервере. Написал 2 таблицы маршрутизации для них, трафик ходит каждый по своему интерфейсу. Проблема с WG. Если в конфиге клиента AllowedIPs указать 0.0.0.0/0, то весь трафик уходит с него. Как бы так должно быть. Но мне нужны 2 независимых канала. Опсос по LTE режет торренты и оттуда, отсюда по мелочи (классика). Задумка пускать все порезанное через WG. С AllowedIPs 0.0.0.0/0 WG добавляет 2 свои таблицы маршрутизации и правило в нетфильтр, помечает пакеты. Если пакет на порт WG идет, то отпускает его с LTE интерфейса, все остальное через себя. Как не дать WG создавать эти таблицы? Могу в AllowedIPs указать подсеть внутреннюю до WG, но не понимаю правильно ли это

 , ,

achilles_85 ()

tc-flower не видет 6to4 пакеты

Решил настроить антиспуфинг через tc при помощи tc-flower, в результате стали поступать жалобы о том, что люди не могут к туннельном брокерам ipv6 подключится. Когда начали разбираться, то поняли, что проблема в tc-flower. Вот пример конфигурации:

switch@blackmesa1 #> tc -s filter show dev sw0p50 parent ffff:
filter protocol ip pref 1 flower chain 0 
filter protocol ip pref 1 flower chain 0 handle 0x1 
  eth_type ipv4
  src_ip 198.18.250.110
  not_in_hw
	action order 1: gact action pass
	 random type none pass val 0
	 index 2 ref 1 bind 1 installed 640 sec used 640 sec
	Action statistics:
	Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
	backlog 0b 0p requeues 0


filter protocol ip pref 65535 matchall chain 0 
filter protocol ip pref 65535 matchall chain 0 handle 0x1 
  not_in_hw (rule hit 1138)
	action order 1: gact action drop
	 random type none pass val 0
	 index 1 ref 1 bind 1 installed 1162 sec used 0 sec firstused 1161 sec
	Action statistics:
	Sent 141112 bytes 1138 pkt (dropped 1138, overlimits 0 requeues 0) 
	backlog 0b 0p requeues 0

Когда переделал на tc-u32 - всё стало работать нормально.

 , , , ,

ne-vlezay ()

Ручное указание ключей IPSec без IKE

Я бы хотел без IKE указать ключи шифрования для IPSec в Linux. Я покурил ман ip-xfrm и понял что мне нужно как то передать в команду какой то KEYMAT. Я почитал RFC про IPSec Keying Materials и так и не понял как в этот iproute2 передать ключики… Кто подскажет?

 ,

realbarmaley ()

Недоступность локалки на интерфейсе

Здравствуйте

Столкнулась со странным.

Есть шлюз на centos 7, с двумя физическими интерфейсами. На eth0 - два провайдера на разных vlan (eth0.50 и eth0.60), на eth1 - локалка и dmz на eth1.3

Настраивала правила маршрутизации iproute2 для двух провайдеров и в какой то момент обнаружила, что локальная сетка перестала быть доступной со шлюза. Сам шлюз из локалки доступен, пингуется и управляется, а вот с него ни один хост в локалке не виден. В iptables в цепочке OUTPUT простые правила:

-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -p icmp -j ACCEPT
-A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 53 -m conntrack --ctstate NEW -j ACCEPT
-A OUTPUT -m owner --uid-owner 0 -m conntrack --ctstate NEW -j ACCEPT
-A OUTPUT -j REJECT --reject-with icmp-port-unreachable

route:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    0      0        0 eth0.60
x.x.x.x         0.0.0.0         255.255.255.224 U     0      0        0 eth0.60
y.y.y.y         0.0.0.0         255.255.255.248 U     0      0        0 eth0.50
link-local      0.0.0.0         255.255.0.0     U     1003   0        0 eth1
link-local      0.0.0.0         255.255.0.0     U     1004   0        0 eth0.50
link-local      0.0.0.0         255.255.0.0     U     1005   0        0 eth0.60
link-local      0.0.0.0         255.255.0.0     U     1006   0        0 eth1.3
z.z.z.z         0.0.0.0         255.255.255.0   U     0      0        0 eth1.3
192.168.252.0   0.0.0.0         255.255.252.0   U     0      0        0 eth1

Вроде нет никаких запретов на ping со шлюза в локалку - но шлюз не пингует ни один хост в локалке. Повторяюсь из локалки шлюз прекрасно пингуется и управляется…

Вот что я сделала?

 , ,

zhenyat ()

Помогите разобраться с маршрутизацией нескольких туннелей ipv6

Задача настроить несколько одновременно работающих туннеля ipv6.
делаю туннель 1

ip tunnel add v6-1 mode sit remote 209.51.161.14 local 45.139.184.150 ttl 255
ip link set v6-1 up
ip -6 addr add 2001:470:8a87:1111:1111:1111:1111:1111 dev v6-1
ip -6 route add ::/0 dev v6-1 metric 1
делаю туннель 2
ip tunnel add v6-2 mode sit remote 184.105.250.46 local 185.230.140.161 ttl 255
ip link set v6-2 up
ip -6 addr add 2001:470:411c:2222:2222:2222:2222:2222 dev v6-2
ip -6 route add ::/0 dev v6-2 metric 2
Проверяю так:
работает: curl -k --interface v6-1 "https://whatismyv6.com/"
работает: curl -k --interface v6-2 "https://whatismyv6.com/"
Потом проверяю так:
работает: curl -k --interface 2001:470:8a87:1111:1111:1111:1111:1111 "https://whatismyv6.com/"
Не работает: curl -k --interface 2001:470:411c:2222:2222:2222:2222:2222 "https://whatismyv6.com/"
Как сделать так, чтобы можно было делать запросы свободно указывая адрес для интерфейса v6-2, ровно как и для v6-1?
root@sirius:~# route -nA inet6
Kernel IPv6 routing table
Destination                    Next Hop                   Flag Met Ref Use If
::1/128                        ::                         U    256 1     0 lo
2001:470:411c:2222:2222:2222:2222:2222/128 ::                         Un   256 1     0 v6-2
2001:470:8a87:1111:1111:1111:1111:1111/128 ::                         Un   256 1     0 v6-1
fe80::/64                      ::                         U    256 1     0 eth0
fe80::/64                      ::                         Un   256 1     0 v6-1
fe80::/64                      ::                         Un   256 1     0 v6-2
::/0                           ::                         U    1   2    52 v6-1
::/0                           ::                         U    2   2     1 v6-2
::1/128                        ::                         Un   0   3    16 lo
2001:470:411c:2222:2222:2222:2222:2222/128 ::                         Un   0   3    17 v6-2
2001:470:8a87:1111:1111:1111:1111:1111/128 ::                         Un   0   3    15 v6-1
fe80::2d8b:b896/128            ::                         Un   0   2     0 v6-1
fe80::b9e6:8ca1/128            ::                         Un   0   2     0 v6-2
fe80::5054:ff:fe51:e932/128    ::                         Un   0   2     0 eth0
ff00::/8                       ::                         U    256 2    10 eth0
ff00::/8                       ::                         U    256 1     0 v6-1
ff00::/8                       ::                         U    256 1     0 v6-2
::/0                           ::                         !n   -1  1     1 lo
root@sirius:~# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 45.139.184.150  netmask 255.255.255.255  broadcast 0.0.0.0
        inet6 fe80::5054:ff:fe51:e932  prefixlen 64  scopeid 0x20<link>
        ether 52:54:00:51:e9:32  txqueuelen 1000  (Ethernet)
        RX packets 2446  bytes 220457 (220.4 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 555  bytes 89861 (89.8 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0:2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 185.230.140.161  netmask 255.255.255.255  broadcast 185.230.140.161
        ether 52:54:00:51:e9:32  txqueuelen 1000  (Ethernet)

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 1000  (Local Loopback)
        RX packets 554  bytes 59163 (59.1 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 554  bytes 59163 (59.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

v6-1: flags=209<UP,POINTOPOINT,RUNNING,NOARP>  mtu 1480
        inet6 fe80::2d8b:b896  prefixlen 64  scopeid 0x20<link>
        inet6 2001:470:8a87:1111:1111:1111:1111:1111  prefixlen 128  scopeid 0x0<global>
        sit  txqueuelen 1000  (IPv6-in-IPv4)
        RX packets 38  bytes 24661 (24.6 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 83  bytes 8274 (8.2 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

v6-2: flags=209<UP,POINTOPOINT,RUNNING,NOARP>  mtu 1480
        inet6 2001:470:411c:2222:2222:2222:2222:2222  prefixlen 128  scopeid 0x0<global>
        inet6 fe80::b9e6:8ca1  prefixlen 64  scopeid 0x20<link>
        sit  txqueuelen 1000  (IPv6-in-IPv4)
        RX packets 25  bytes 8175 (8.1 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 10  bytes 1449 (1.4 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 , ,

Vincent_ ()

iproute2 два провайдера один сервер

В локалке есть два роутера 10.1.1.1 и 10.1.1.2, оба пробрасывают 80й порт на сервер 10.1.1.33.

Если заходить на сервер через первый роутер - все ок. Если через второй, то сервер отправляет ответы через первый, который прописан как дефолтгв.

Подскажите, чего сказать iproute чтобы пакеты уходили в гейт с которого пришли.

Чем вообще отличаются пакеты с разных роутеров кроме мака отправителя?

Придется в iptables второго роутера пакеты маркировать?

Как-то я такое уже делал, давно, вообще не помню как :(

 

klim888 ()

Настройка нескольких шлюзов CenOs 8

доброго времени суток. Помогите, подскажите пожалуйста. Ситуация такая, сервер на centos8 3 eth интерфейса 1 - локалка - 192.168.0.0/24 2 - интернет провайдер - 217.ххх.ххх.ххх 3 - интернет провайдер - 192.ххх.ххх.ххх (почему сетка внутреняя, схема там такая, от того же провайдера который 217, использауется его маршрут и через pptp поднимается на модеме интернет другого провайдера, после заходит уже в сервер, но это не суть.)

в локалке есть двр и несолкьо компов, в iptables все проброшено, т.е. из мира люди при обращении к 217.ххх.ххх.ххх заходят по рдп на свои компы без проблем, и видят камеры с двра. меняю gateway на 192.ххх.ххх.ххх происходит что-то странное, я по прежнему из мира могу зайти на 217.ххх.ххх.ххх по ssh, увидеть apache и тд, но рдп и двр молчат хотя в iproute2 создал 2 таблицы 100 т1 101 т2

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

Помогите настроить может заново, подскажите.

как настроить iproute2 и прописать корректно маршруты и iptables. Заранее благодарю

 , ,

jamezbond ()

Persistent link description(alias)

Наткнулся на удобную штуку:
Set human-readable link description

ip link set dev ${interface name} alias "${description}"
Examples:
ip link set dev eth0 alias "LAN interface"
Link aliases show up in "ip link show" output, like:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT qlen 1000
    link/ether 22:ce:e0:99:63:6f brd ff:ff:ff:ff:ff:ff
    alias LAN interface

Но в доке не упоминается как сделать этот алиас постоянным, а в ifcfg-* на вид ничего похожего сходу нет.
Может кто знает?

Ping mky

 

zolden ()

Как сохранить маршрут в таблице маршрутизиции в арче?

Чтобы после перезагрузки не слетал. Маршрут вида ip route add 1.1.1.1 via 192.168.0.1 dev eth0. В Debian есть файл /etc/network/interfaces, и в него можно добавить маршруты для сохранения. А в арче куда?

 , ,

Arksunix ()

зачем нужна default route?

Зачем нужна default route в таблице main?

Описание ситуации:

  • удаляю default route в таблице main
  • добавляю такую же default route, но в таблицу 100, туда же роутинг на локалку.
  • маркирую исходящие пакеты в mangle\OUTPUT mark 1
  • добавляю правило: ip rule add fwmark 1 lookup 100
  • пинг гугла - Network is unreachable, гмм ок!
  • добавляю неправильный шлюз в таблицу main
  • пинг гугла - внезапно - пошел! естественно через таблицу 100, в которой правильный шлюз

Смотрю netfilter packet flow : написано, что решение о роутинге принимается после mangle\OUTPUT, то есть после моей маркировки. И мой пакет должен пойти в таблицу 100, а там шлюз есть.

Вопрос – фейковый шлюз в таблице main нужен просто чтоб был?

Ниже тестовый скрипт для проверки в Virtualbox, с одним сетевым интерфейсом типа NAT:

ip ro del default
ip ro del default
ip ro del default
ip ru add fwmark 1 tab 100
ip ro rep default via 10.0.2.2 tab 100
iptables -t mangle -I OUTPUT  -j MARK --set-mark 1

ping 8.8.8.8 -c2
# fail!

# add fake Gateway to the main Routing table
ip ro rep default via 10.0.2.100
ping 8.8.8.8 -c2
# success!!

 , ,

Bers666 ()

Сетевые проблемы в 3proxy с 4g/LTE Modem

Все доброго дня.

Пытаюсь заставить работь 3prxoy с 4g/LTE Modem и настроить прокси сервер но не получается, прошу вашей помощи.

Кратко опишу что имею: -Raspberry Pi 3b+ c Raspbian OS(последняя) -Основной сетевой интерфейс в моем случай wlan0 - это wifi от моего роутера. Присвоен статичейский ip - 192.168.1.100 -Дополнительный сетевой интерфейс eth1 - - это подключеный 4g модемы Huawei e3372s, работающий в режиме роутера и выдающий своему клиенту по dhcp один и тот же ip - 192.168.10.100 -Сетевые интерфейсы и их названия в Raspbian сконфигурированы в файле /etc/dhcpcd.conf

# WiFi
interface wlan0
static ip_address=192.168.1.100/24
static routers=192.168.1.1
metric 301

# Modem 4g
interface eth1
static ip_address=192.168.10.100/24
static routers=192.168.10.1
metric 401
При зугрузке системы они подняты и имеют доступ к интернету. -3proxy версии 0.8.13 собрана на данной системе. Файл конфигурации выглядит так 3proxy.cfg
monitor /usr/local/etc/3proxy/3proxy.cfg

daemon

timeouts 1 5 30 60 180 1800 15 60

nserver 192.168.1.1
nserver 192.168.10.1
nscache 65535

internal 192.168.1.100

auth none

proxy -n -a -p51001 -e192.168.10.100
socks -p52001 -e192.168.10.100

flush

Но в данной конфигурации при указании в настройках браузера указывается что нет соединения, проблемы кроется в сетевых правилах и маршрутах пакетов. Но ни как не могу понять как заставить работать.

P.S. Вывод ip route show

default via 192.168.1.1 dev wlan0 src 192.168.1.100 metric 301
default via 192.168.10.1 dev eth1 src 192.168.10.100 metric 401
192.168.1.0/24 dev wlan0 proto dhcp scope link src 192.168.1.100 metric 301
192.168.10.0/24 dev eth1 proto dhcp scope link src 192.168.10.100 metric 401

 , , , ,

bob_and_bob ()

Маршрут для маркированного трафика, туплю - спасайте

Требуется завернуть маркированный через Netfilter трафик на клиенте завернуть в туннель к серверу, а остальной пустить по default маршруту.

Имеется:

  • Клиент - gateway маленькой сети на Centos
  • Сервер - Облачный шлюз - на Centos
  1. Сервер, с поднятым туннелем:
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
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether fa:16:3e:2d:70:4a brd ff:ff:ff:ff:ff:ff
    inet 16.124.9.234/32 brd 51.38.50.121 scope global dynamic eth0
       valid_lft 60677sec preferred_lft 60677sec
5: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none 
    inet 10.8.0.1/24 scope global wg0
       valid_lft forever preferred_lft forever

wg0 - порт wireguard туннеля

  1. Клиент с поднятым подключением:
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
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 38:d5:47:28:4d:e2 brd ff:ff:ff:ff:ff:ff
    inet 10.204.163.19/30 brd 10.204.163.19 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether ca:b2:ad:cd:81:5f brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.1/24 brd 192.168.1.255 scope global noprefixroute eth1
       valid_lft forever preferred_lft forever
6: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none
    inet 10.8.0.100/32 scope global wg0
       valid_lft forever preferred_lft forever

eth0 - внешняя сеть eth1 - внутренняя сеть wg0 - порт wireguard туннеля

  1. Модуль ядра для маркировки пакетов на клиенте - загружен:
# lsmod | grep -i "mark"
xt_mark                16384  1
  1. Параметры ядра на клиенте:
  • влючен форвардинг
  • отключен rpfilter - что бы ядро, не отбрасывало пакеты, вернувшиеся с другого интерфейса
# sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.tcp_fwmark_accept = 1
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
  1. Пакеты в ядре клиента маркируются простым правилом:
iptables -A PREROUTING -t mangle -s 192.168.1.222 -j MARK --set-mark 1
  1. Добавлено правило на клиенте - создана таблица wire для маркированного трафика:
ip rule add fwmark 1 table wire
  1. Требуется прописать маршрут для пакетов из таблицы wire в интерфейс wg0
  • Внутрення сеть: 192.168.0.0/24
  • Адреса в туннеле: 1.8.0.0/24

Самоизоляционный тупняк на меня напал - спасайте.

 , , ,

bslpzk ()

Policy routing stopped working

Есть машина с настроенным VPN, весь трафик интернета идёт через туннель VPN. Задача: для конкретного процесса настроить обход VPN, чтобы трафик этого процесса шёл напрямую, не через туннель. Задачу эту я давно решил - создал кастомную таблицу маршрутизации и в ней прописал маршрут по умолчанию туда куда мне надо (напрямую в физический интерфейс). Ну и добавил правило маршрутизции:

ip rule add uidrange 117-117 lookup custom

, где 117 - UID пользователя, от которого запущен нужный мне процесс.

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

Методом проб и ошибок удалось выяснить, что удаление дефолтного маршрута, который был добавлен сервисом VPN, позволяет проходить пакетам от указанного пользователя. Наличие при этом какого либо дефолтного маршрута в основной таблице маршрутизации необязательно.

В чём причина того, что это внезапно перестало работать - ума не приложу.

Перемещено leave из general

 , , ,

eternal_sorrow ()

Плавающий адрес в iproute2

Добрый день.

Бьюсь над вопросом уже довольно долго, но решение никак не могу найти.

Задача: Настроить 2 плавающих адреса (внешний и внутренний) между двумя серверами ubuntu. Чтобы если один сервер упадёт, адреса переехали на другой сервер.

Данные: 10.10.255.171 - внутренний статический адрес сервера 10.10.255.170 - плавающий внутренний адрес 212.79.91.71 - плавающий внешний адрес

Дошел до запуска всего что нужно через iproute2 + netplan + keepalived

Netplan:

network:
    version: 2
    ethernets:
        ens160:
            addresses:
            - 10.10.255.171/25
            gateway4: 10.10.255.129

keepalived:

vrrp_instance internal {
    state MASTER
    interface ens160
    virtual_router_id 10
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass +hinFang75
    }
    virtual_ipaddress {
        10.10.255.170/25
    }
}

vrrp_instance external {
    state BACKUP
    interface ens160
    virtual_router_id 20
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass +hinFang75
    }
    virtual_ipaddress {
        212.79.91.71/28 gw 212.79.91.65 dev ens192
    }
}

При запуске системы поднимается keepalived и мне доступны оба внутренних адреса.

Теперь добавляю записи iproute2

iproute2:

Создаем таблицы
 echo '100 local' >> /etc/iproute2/rt_tables 
 echo '101 inet' >> /etc/iproute2/rt_tables

Добавляем дефолтный шлюз 
 ip route add default via 10.10.255.129 table 100
 ip route add default via 212.79.91.65 table 101

Определяем правила:
 ip rule add from 10.10.255.170 table 100
 ip rule add from 212.79.91.71  table 101

На этом этапе начинаю получать ответы по внешнему адресу, но только до перезапуска keepalived или интерфейса ens192. После перезапуска адрес появляется на интерфейсе, но больше не пингуется.

Я пробовал добавить метки на интерфейсы, но ничего не изменилось

Привязка ответа по тому же интерфейсу, по которому был получен пакет. 
 iptables -t mangle -A INPUT -i ens160 -j CONNMARK --set-mark 0x1 
 iptables -t mangle -A INPUT -i ens192 -j CONNMARK --set-mark 0x2
 iptables -t mangle -A OUTPUT -j CONNMARK --restore-mark 
 iptables -t mangle -A OUTPUT -m mark ! --mark 0x0 -j ACCEPT
 iptables -t mangle -A OUTPUT -d 10.10.255.170/32 -j MARK --set-mark 0x1
iptables -t mangle -A OUTPUT -d 212.79.91.71/32 -j MARK --set-mark 0x2


Теперь добавим правила роутинга так, чтобы с помощью файрвола выставив нужные значения fwmark мы могли выбрать нужную таблицу роутинга:

 ip rule add priority 101 fwmark 0x1/0x1 lookup  100
 ip rule add priority 102 fwmark 0x2/0x2 lookup  101

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

Гуру сети, подскажите пожалуйста, в каком направлении искать решение?

 , , ,

KOTOXJle6 ()

Маршрутизация трафика через iproute2

Приходит трафик на ip 77.77.77.77 (eth0) его надо отправить на ip 10.1.1.2 (ipip1), как это сделать через iproute2?

 

gOnt ()

Centos7 + iptables + iproute2 и 4 внешних канала: проблема с доступом к локальным сервисам

Выделено из темы Проблемы с настройкой маршрутизации в Centos7 - 3 внешних канала для более точной формализации проблемы

Дано Сервер с Centos7 x86-64, куча сетевых карт.

основная функция - маршрутизатор + NAT + FW + openvpn; а также локальные сервисы - почта, bind и прочее; внешних каналов 4шт, один основной и 3 дополнительных;

в локальной сети есть сервера c сервисами доступ к которым идет через NAT;

для реализации данного функционала настроен iptables+iproute2

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

изучение документации дало понимание того, что многое скрыто - ну вот как пример: проход первого пакета транзитом (наименования цепочек буду сокращать)

man:pre  
nat:pre
man:for
fil:for
man:post
nat:post
всё по схемам

а вот второй и следующие идут уже по сокращенному пути:

man:pre  
man:for
fil:for
man:post
теперь к проблеме

отправляю запрос к локальному сервису на 4й резерв он проходит

man:pre
nat:pre 
и все - исчезает!

те он должен появится в man:input, но видимо на этапе routing declision он убивается

цель понять почему и как это исправить

подробная информация о конфигурации

табличка резерва

ip route add DDD.DDD.DDD.0      dev ens1f1 src DDD.DDD.DDD.24   table T4 >/dev/null
ip route add 192.168.0.0/24   dev enp3s0 src 192.168.0.1    table T4 >/dev/null
ip route add 127.0.0.0/8      dev lo                        table T4 >/dev/null
ip route add default via DDD.DDD.DDD.1                        table T4 >/dev/null
main
ip route add  AAA.AAA.AAA.AAA    dev ens2f0 src AAA.AAA.AAA.1   >/dev/null
ip route add BBB.BBB.BBB.BBB       dev ens2f1 src BBB.BBB.BBB.1 >/dev/null
ip route add DDD.DDD.DDD.DDD       dev ens1f1 src DDD.DDD.DDD.1    >/dev/null
ip route add CCC.CCC.CCC.CCC/29 dev ens1f0 src CCC.CCC.CCC.CCC  >/dev/null
ip route add default via  CCC.CCC.CCC.CCC metric 99 >/dev/null
из негативных факторов которые могут вмешиваться в маршрутизацию - на сервере установлен openvpn-сервер его для теста выключал, но проблема не решалась.

вопрос - как проводить дальнейшую диагностику ? те как отловить почему пакет был убит на routing declision ?

таблицы raw и security имеют политику accept аналогично и ebtables arptables не установлено

тк сейчас на 4ом канале-резерве нет ничего критичного то я могу проводить на нем любые эксперименты. что опробовал

1. DNAT на локальные интерфейсы - пофиг. пакет не доходит до man:input

2. явное указание

ip rule add to   DDD.DDD.DDD.24    fwmark 0x400 table T4 >/dev/null
ip rule add from DDD.DDD.DDD.24    fwmark 0x400 table T4 >/dev/null

тоже пофиг

Касаемо самой настройки iproute2 - опыт есть, те у меня до этого все работало на Centos4 с 2005ого, но вот сейчас что-то поменялось. прошу помочь найти где зарыта собака.

 , ,

Nagisa ()

Шлюз через клиента OpenVPN для определенного адреса внутри сети

Привет. Есть необычная задача, которую не получается решить самому. Прошу помощи.

Существует две сети организации, соединенные при помощи OpenVPN. Адрес сервера в внутренней сети OpenVPN - 192.168.195.1, адрес клиента - 192.168.195.2. Локальная подсеть за сервером OpenVPN - 192.168.180.0.

Одну из машин за сервером (192.168.180.211) нужно вывести в интернет через шлюз клиента OpenVPN, для того чтобы она использовала его внешний IP.

Со стороны сервера добавляю маршрут и правила для хоста 192.168.180.211.

# ip route add default via 192.168.195.2 table 120
# ip rule add from 192.168.180.211 table 120

В итоге получется так:

# ip route list table 120
default via 192.168.195.2 dev tun1 

# ip rule
0:      from all lookup local 
32765:  from 192.168.180.211 lookup 120 
32766:  from all lookup main 
32767:  from all lookup default

При попытке зайти на гугл с машины 192.168.180.211, на стороне сервера (на интерфейсе OpenVPN - tun1) вижу след.:

# tcpdump -n -i tun1 ip src 192.168.180.211
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun1, link-type RAW (Raw IP), capture size 262144 bytes
21:08:55.648552 IP 192.168.180.211.49367 > 13.107.5.80.80: Flags [S], seq 4144276543, win 8192, options [mss 1460,nop,nop,sackOK], length 0
21:08:55.648601 IP 192.168.180.211.49368 > 13.107.5.80.80: Flags [S], seq 2365187574, win 8192, options [mss 1460,nop,nop,sackOK], length 0
21:08:58.336611 IP 192.168.180.211.49369 > 172.217.21.131.80: Flags [S], seq 682449834, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
21:09:01.345580 IP 192.168.180.211.49369 > 172.217.21.131.80: Flags [S], seq 682449834, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0

Но со стороны клинта OpenVPN не вижу ни одного пакета.

В iptables на время пердолинга сделал -P FORWARD ACCEPT.

 , ,

static ()

Удаляется qdisc

Здравствуйте!

Есть следующая проблема, через какое-то время после создания qdisc для tc, классов и фильтров - все удаляется. Причем нет определенной закономерности, может удалиться через день, может через неделю.

root@efw:~ # uname -a
Linux efw 2.6.32.43-57.e43.i586 #1 SMP Wed Aug 10 05:05:15 EDT 2011 i686 i686 i386 GNU/Linux

После создания очереди

root@efw:~ # tc qdisc show
qdisc htb 1: dev eth0 root refcnt 2 r2q 10 default 0 direct_packets_stat 1060211

После удаления

root@efw:~ # tc qdisc show
qdisc pfifo_fast 0: dev eth0 root refcnt 2 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1

 ,

paul ()

Разделение трафика на основе принадлежности к зоне .RU

Добрый день! Есть два провайдера в инет. Можно ли разделить трафик на основе принадлежности к зоне .RU и выпускать его через первого провайдера, а весь остальной мир выпуcкать через второго провайдера. Спасибо.

 ,

bignic ()