ssh на eth0, все остальное на eth1

Я бы даже не считал себя начинающим пользователем iptables, поэтому мне было интересно, может ли кто-нибудь помочь мне сделать это:

Я хочу иметь возможность подключиться к одному из моих серверов через сетевую карту eth0. Весь другой трафик должен использовать сетевую карту eth1. Ни при каких обстоятельствах ничто, кроме ssh-трафика, не должно проходить через eth0.

Я думаю, что это "легко", но мне трудно найти решение.

Может кто-нибудь поделиться своими знаниями?


Согласно запросу для уточнения топологии сети:

eth0 и eth1 работают в сети компании и могут получить доступ к Интернету.

eth0 - это фиксированный ip (с именем хоста - удобно для ssh в). IP-адрес eth1 изменяется, так как он назначается динамически DHCP-сервером компании.

1 ответ

Решение

Для eth0 (я полагаю, вы работаете с демоном SSH на порту 22 - измените соответствующим образом, если мои предположения неверны):

iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p tcp -m tcp -m multiport --dports 22 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p tcp -j DROP

Первое правило означает разрешить все пакеты, которые принадлежат установленным соединениям. Второе правило означает, что TCP-соединения на порту 22 в порядке. Третье правило отбрасывает любые другие пакеты.

В /etc/ssh/sshd_config вы должны ограничить адреса, которые слушает демон ssh, адресом от eth0, чтобы избежать соединений через eth1. Например:

ListenAddress 192.168.1.1
ListenAddress 2001:0db8:0:1::1
Другие вопросы по тегам