Я уверен, что это простой вопрос маршрутизации, но я уже часами ломаю голову над ним.
Centos 5. eth1 частный. 10.0.0.12/24 gw 10.0.0.1 eth0 общедоступный 216.234.x.x gw 216.234.x.x
команда маршрута
Destination Gateway Genmask Flags Metric Ref Use Iface
216-234-x-x. 216-234-x-x. 255.255.255.255 UGH 0 0 0 eth0
216.234.x.x * 255.255.255.248 U 0 0 0 eth0
10.0.0.0 * 255.255.255.0 U 0 0 0 eth1
link-local * 255.255.0.0 U 1002 0 0 eth0
link-local * 255.255.0.0 U 1003 0 0 eth1
default 10.0.0.1 0.0.0.0 UG 0 0 0 eth1
отлично отвечает на пинги в частном интерфейсе. может выходить в Интернет. Но я не могу заставить его отвечать на пинги в общедоступном интерфейсе.
Это сервер FreePBX. Путь к 216.234.x.x - к моему провайдеру sip.
Я немного идиот по Linux. Я просмотрел все возможные пути q и A для linux, но я думаю, что не ищу правильный.
Спасибо!
РЕДАКТИРОВАТЬ. Я хочу, чтобы SIP и SSH входили и выходили из публичного интерфейса. В противном случае все остальное должно выходить из личного интерфейса.
Я предполагаю, что вы не пингуете IP-адрес провайдера SIP.
Проблема в том, что маршрут для ответов ping проходит через eth1, который не попадет к источнику. Тебе нужно маршрутизация исходной политики чтобы получить ответы, чтобы вернуться к eth0.
Предположим, что 216.234.0.1 - ваш шлюз, а 216.234.0.10 - ваш общедоступный IP-адрес.
Создайте новую таблицу маршрутизации (нужно сделать только один раз).
echo 10 eth0 >> /etc/iproute2/rt_tables
Добавьте маршрут по умолчанию в новую таблицу маршрутизации, выходящую из eth0.
ip route add default via 216.234.0.1 table eth0
Добавьте правило для сопоставления пакетов с общедоступным IP-адресом в качестве источника и используйте новую таблицу.
ip rule add from 216.234.0.10 lookup eth0