Назад | Перейти на главную страницу

Выполнение NAT с несколькими аплинками в Linux

В настоящее время у меня есть 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» и всего, что вы сделали во время установки.

Кстати, опубликованная вами ссылка не сработала для меня, этот делает