IPTV и интернет на разных интерфейсах - как? [Решено]

На компьютере имеются два сетевых адаптера: один (eth0=192.168.1.251) подключен в локальную сеть 192.168.0-1.x и получает интернет через шлюз 192.168.1.2 и другой (eth1=192.168.2.3) - подключен к модему (192.168.2.1), с которого вещается IPTV.

config_eth0=( "192.168.1.251 netmask 255.255.254.0 broadcast 192.168.1.255" )
routes_eth0=(
"default gw 192.168.1.2"
)
 
config_eth1=( "192.168.2.3 netmask 255.255.255.0 broadcast 192.168.2.255" )
routes_eth1=(
"default gw 192.168.2.1"
)

Адреса IPTV-каналов имеют вид rtp://@238.0.2.9:8028 (rtp://@238.0.2.x:yyyy).

Варианты:
1. Активен только интерфейс eth0 - работает только интернет:

Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 0.0.0.0 255.255.254.0 U 0 0 0 eth0
127.0.0.0 127.0.0.1 255.0.0.0 UG 0 0 0 lo
0.0.0.0 192.168.1.2 0.0.0.0 UG 3 0 0 eth0

2. Активен только интерфейс eth1 - работает только IPTV:

Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
127.0.0.0 127.0.0.1 255.0.0.0 UG 0 0 0 lo
0.0.0.0 192.168.2.1 0.0.0.0 UG 2 0 0 eth1

3. Активны оба интерфейса (в системе два шлюза по умолчанию и два широковещательных адреса) - работает только IPTV:

Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.0.0 0.0.0.0 255.255.254.0 U 0 0 0 eth0
127.0.0.0 127.0.0.1 255.0.0.0 UG 0 0 0 lo
0.0.0.0 192.168.2.1 0.0.0.0 UG 2 0 0 eth1
0.0.0.0 192.168.1.2 0.0.0.0 UG 3 0 0 eth0

Если удалить default маршрут через eth1 - интернет начинает работать, но перестаёт IPTV.
Прописывание route add 238.0.2.0/24 gw 192.168.2.1 dev eth1 вместо удалённого default eth1 не помогает - IPTV не работает.
Пробовал поиграться с метриками default-маршрутов обоих интерфейсов - не помогает.

В общем, как можно заставить работать одновременно и IPTV, и интернет?

У меня для клиента openvpn

Возможно требуется ещё поднять nat на соответствующем интерфейсе.

Можно попробовать заюзать

Можно попробовать заюзать iptables - траффик iptv отправлять на его интерфейс, а всё остальное на интерфейс интернета. Для этого надо выяснить отличительные особенности пакетов iptv.

Или же данные с портов

Или же данные с портов используемых iptv отправлять толко на его интерфейс. Но если портов много и они могут меняться, то 1-й вариант предпочтительнее.

В общем, решил я поэкспериментировать..

Оставил со по умолчанию шлюзом второй (IPTV) интерфейс, а на первый (с интернетом) вешать по одному роуты вида x.0.0.0/8, меняя (добавляя) x от 0 до 255, т.е., грубо говоря, прописывать default через eth0 "постепенно", до пропадания вещания. В итоге оказалось, что при добавлении адреса 10.0.0.0/8 к eth0 пропадает вещание, т.е. для IPTV оказалось нужным прописывать этот маршрут.
Итак, рабочая комбинация внезапно и неожиданно оказалась следующей:

config_eth0=( "192.168.1.251/23" )
routes_eth0=(
                "default gw 192.168.1.2"
            )

config_eth1=( "192.168.2.2/30" )
routes_eth1=(
                "10.0.0.0/8 gw 192.168.2.1"
                "238.0.2.0/24 gw 192.168.2.1"
            )

,
то есть шлюзом по умолчанию нужно было оставить "интернетовский", а через "IPTV"-шный шлюз пропускать 238.0.2.0/24 (ну это адреса потоков, понятно) и 10.0.0.0/8 (а это ну совсем непонятно, диапазон-то из выделенных под локальные сети).
Интересно было бы узнать объяснение всему этому, но именно с 10.10.10.0/8 машрутом всё отлично работает, и никак иначе. Так что помечу тему как решённую.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".