В настоящее время у меня есть 3 NIC на сервере: 1 подключается к модему ADSL (eth0), другой подключается к оптическому волокну (ppp0), а другой - к локальной сети (eth2).
Я настроил все интерфейсы, маршруты и правила, как описано здесь (http://www.linux.org/PRIVOXY-FORCE/docs/ldp/howto/Adv-Routing-HOWTO/lartc.rpdb.multiple-links.html), и он отлично работает. Я могу без проблем подключиться к обоим хостам извне, но теперь у меня другая проблема ...
Я могу выполнять NAT только на том хосте, который я настроил как маршрут по умолчанию в основной таблице. Например, если я использую эти правила:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2:8080
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2:8080
Работает в зависимости от маршрута по умолчанию. Если маршрут по умолчанию - через eth0, входящие соединения от ppp0 не перенаправляются на машину LAN. Кроме того, если маршрут по умолчанию - через ppp0, соединения от eth0 не будут перенаправлены. У меня есть таблица для каждого провайдера со шлюзом, настроенным как маршрут по умолчанию, но, похоже, он не работает для NAT.
Есть ли у кого-нибудь идея исправить эту проблему?
Я сделал это используя CONNMARK, маркировка межсетевого экрана и несколько таблиц маршрутизации.
Отлично работает даже для интерфейсов PPP и DHCP.
«Маршрут по умолчанию» не имеет смысла, если вы правильно настроили маршруты с «ip route». Сложность связана с тем, что и eth0, и ppp0, скорее всего, будут настроены DHCP, который перезапишет все, что вы настроили.
Вы должны предоставить вывод «ip route show» для всех таблиц, которые вы настроили, а также «ip rule show» и всего, что вы сделали во время установки.
Кстати, опубликованная вами ссылка не сработала для меня, этот делает