[Решено] Два сетевых интерфейса и программы

Доброго времени суток!

Странная вещь какая-то, помогите наладить.
В компе два сетевых интерфейса, сетевухи вставленные в мать, на матери сетевой интерфейс выключен.
эти два интерфейса подключены к разным интернет-провайдерам через роутеры, инет работает. один интерфейс в сети 192.168.0.0, второй в сети 192.168.1.0.
Если проверять каждый интерфейс в отдельности, всё работает, интернет есть.
На компе налажены proftpd и ssh.
Если включён только один из интерфейсов, всё работает нормально.
Если включены оба интерфейса, то ssh и proftpd из интернета работают только на одном сетевом интерфейсе!
В случае двух одновременно включённых интерфейсов, если на фтп или на ssh коннектиться с узла, который находится в одной из сетей 192.168.0.0 или 192.168.1.0, где находится комп, всё работает. Но, если коннектиться из инета, то работать будет только по одному интерфейсу.

В настройках proftpd и sshd я пытался указывать чтобы он оба интерфейса слушал, но это ситуацию не меняет.
Только Россия, только хардкор..
здравствуй юный падаван, я вижу темная сторона силы близка тебе. Вот тебе простая загадка, предоставляют ли провайдеры внешние адреса, и с чего ты решил что адреса будут предоставлены в количестве один штука? как ты выясняешь что со второго интерфейса сервисы недоступны?
Да пребудет с вами знание ip адреса
Провайдеры внешние адреса предоставляют, эти адреса можно выяснить, зайдя с других компьютеров из сетей 192.168.0.0 и 192.168.1.0 на сайт, определяющий ip, например 2ip.ru.
адреса предоставлены в количестве одна штука по договору с провайдерами.

включив один интерфейс, я залезаю с телефона или от соседа (т.е. извне) на внешний айпишник одного провайдера, всё работает. Выключаю этот интерфейс, включаю другой, залезаю на его внешний айпишник, всё работает. включаю оба интерфейса, и работает только один внешний айпишник.

Какая разница сколько там айпишников, если настройки фтп и ssh по умолчанию слушают все айпишники компа (0.0.0.0), и даже явное указание двух интерфесов не меняет дело ?
Только Россия, только хардкор..
у тебя шлюз по умолчанию один прописан, ты соединяешься по одному каналу, а ответ уходит по второму. маршрутизацию проверяй.
Здесь “официальное” линуксовое решение решение
Вот еще практически то же самое, но с другими картинками.
Почему у Вас не работает, как ожидаете - выше уже объяснили. Надо, что бы для конкретного сокета входящий трафик и исходящий ходили через один и тот же порт.
Ох уж мне эти якобы “официальные” рецепты. Кривые до невозможности.
Глупо и часто очень неудобно дублировать в дополнительной таблице роуты, которые уже есть в основной.
В дополнительную таблицу достаточно положить дефолтный роут через второй интерфейс, поставив правило со ссылкой на неё МЕЖДУ main и default, а в default поставить дефолтный роут на первый интерфейс.
К примеру, вот такие у меня на домашнем роутере таблицы:
# ip rule 
0:      from all lookup local 
200:    from all lookup main 
210:    from all fwmark 0x2 lookup vpn 
220:    from all lookup default 
# ip route
10.3.0.1 dev tun0  proto kernel  scope link  src 10.3.10.1 
83.221.214.193 dev pppoe-wan  proto kernel  scope link  src 31.23.98.94 
10.3.10.0/24 dev eth0.3  proto kernel  scope link  src 10.3.10.1 
10.3.0.0/16 dev tun0  scope link  metric 10 
192.168.0.0/16 dev br-lan  proto kernel  scope link  src 192.168.5.1 
# ip route ls tab vpn
default dev tun0  scope link 
# ip route ls tab default
default dev pppoe-wan  scope link 
Здесь локалка только одна, но выхода в интернет тоже два – через провайдерский PPPoE (pppoe-wan) и через мою VPN (tun0 и eth0.3)

Ко всему этому правила iptables (основные):
iptables -I FORWARD -s 10.3.0.0/16 -d 10.3.0.0/16 -j ACCEPT
iptables -I FORWARD -m connmark --mark 0x2 -j ACCEPT
iptables -t mangle -I OUTPUT -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff
iptables -t mangle -I PREROUTING -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff
iptables -t mangle -I PREROUTING -i tun0 -m conntrack --ctstate NEW -j CONNMARK --set-mark 2
iptables -t mangle -I PREROUTING -i eth0.3 -s 10.3.10.0/24 -m conntrack --ctstate NEW -j CONNMARK --set-mark 2                  
а есть возможность решить проблему, не устанавливая iptables?
Только Россия, только хардкор..
да, но если Вам нужен nat (snat) далеко без огнестены не уехать.
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
Inar
а есть возможность решить проблему, не устанавливая iptables?
Можно. Надо зарегистрировать свою автономную систему в RIPE (или где это сейчас делается?) и выделенный блок маршрутизируемых ip-адресов и поднять с обоими провайдерами BGP.
К тому же, скорее всего, у современных провайдеров стоит statefull firewall, который отслеживает сетевые сессии к клиенту и не позволит пропускать исходящие пакеты, для которых не найдет соответствующих установленных соединений.
iptables - составная часть ядра и в любом случае присутствует в стандартной системе. Пакет iptables - набор инструментов, с помощью которых настраивается работа ядра в соответствующей части. Дешево и сердито. Какой смысл усложнять себе жизнь, избегая использовать его?
зачем snat в данном то случае? И кстати дурной вопрос: если бы в качестве сетей было бы 192.168.1.* и 10.1.1.* (считаем что роутеры организуют DMZ на компьютер) то получилось бы то, что хочет Т.С.?
Да пребудет с вами знание ip адреса
 
Зарегистрироваться или войдите чтобы оставить сообщение.