[Уже не] нужна помощь в настройке NAT и IPTABLES [РЕШЕНО]
Есть локальная сеть 192.168.0.0/16
Есть сервер на gentoo linux c двумя сетевыми картами:
eth0 с адресом 192.168.0.253 подключена в локальную сеть
eth1 с адресом 192.168.0.2 подключена к adsl-ethernet-модему №1 с адресом 192.168.0.1
Кроме этого, в сети есть второй adsl-модем №2 с адресом 192.168.0.254, включенный непосредственно в локальную сеть.
Пользователи сети для интернета используют vpn-подключение к серверу провайдера 81.25.32.69
В настройках у себя они указывают шлюз (192.168.0.253 или 192.168.0.254) и адрес vpn-сервера.
Задача стоит следующая: поднять на сервере NAT так, чтобы пользователи, указав шлюз 192.168.0.253, могли бы пользоваться модемом №1.
При этом нужно сделать так, чтобы запросы к адресу 72.167.232.126 (бесплатная медиагалерея провайдера) на сервере либо дропались, либо как-то перенаправлялись на второй модем (более предпочтительный вариант). Это нужно для того, чтобы первый модем служил только для интернета, и не был загружен трафиком. Загрузка второго модема не важна.
На данный момент используется такая конфигурация iptables. Брал за основку какой-то вариант из интернета, но думаю, что тут много лишнего и ненужного. Вроде бы всё работает, только вот иногда vpn-соединение установить не удаётся, хотя сам трафик (если vpn всё же удалось поднять) пробрасывается нормально. И адрес 72.167.232.126 тоже пока не отсекается.
Прошу хорошо знакомых с iptables предложить конкретный вариант настроек, без отсылок в google/man (это уже пройдено, но всё равно доходит туговато). И (если это нужно) - /etc/conf.d/net, если нужно ещё на сервере и роуты какие-то прописывать.
- Для комментирования войдите или зарегистрируйтесь
насколько я понимаю
насколько я понимаю нужно воткнуть оба модема в один комп, иначе эта проблема должна решаться на клиентских машинах прописыванием маршрута или тупым отбрасыванием всех пакето ходящих по определённому ip
P.S. насколько я понимаю "из интернета" было взято с gentoo.org Home router HOWTO
iptables
если ip не динамический лучше SNAT вместо MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -j SNAT --to 192.168.0.2
iptables -t nat -A PREROUTING -s 192.168.0.0/16 -d 72.167.232.126 -j DNAT --to 192.168.0.254
route add -host 72.167.232.126 gw 192.168.0.254
зы всё это есть в манах и гугле
Чем SNAT лучше MASQUERADE?
Чем SNAT лучше MASQUERADE?
_SerEga_ написал(а): Чем SNAT
В правиле SNAT указывается --to-source, проще говоря, IP, в который натятся все внутренние при выходе во внешний мир. Таким образом, iptables не нужно каждый раз запрашивать настройки интерфейса. Но адрес указан жестко, если 2 и более внешних интерфейса (например, местная локальная сеть провайдера, по к-рой таскается музыка и фильмы, и pptp, через который бегает Интернет) - надо писать 2 и более правила с разными --to-source ... и -o ...
MASQUERADE для каждого пакета делает NAT в адрес того интерфейса, через который пакет пойдет наружу. Тут хватит одного правила. Но адрес, в который надо делать NAT, каждый раз читается из текущих настроек интерфейса. Для каждого пакета. Что повышает нагрузку на процессор, при большом трафике может быть критично.
Если все не так, тапками не кидаться - я это когда-то давно вычитал не помню уже откуда.
При не слишком большом трафике (несколько мегабит) я без особых проблем использую MASQUERADE.
подскажите пож как эти
подскажите пож как эти правила для маскарадинга переписать в правила со СНАТ'ом
iptables -I FORWARD -i ${LAN} -d 192.168.111.0/255.255.255.0 -j DROP
iptables -A FORWARD -i ${LAN} -s 192.168.111.0/255.255.255.0 -j ACCEPT
iptables -A FORWARD -i ${WAN} -d 192.168.111.0/255.255.255.0 -j ACCEPT
iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE
{WAN} - это внешний интерфей, а {LAN} - внутренний и 192.168.111.0/255.255.255.0 внутренняя подсеть
спасибо
...А можно, я поматюкаюсь
...А можно, я поматюкаюсь ?-)
Вместо того, чтобы страдать на форуме, давно можно было прочитать документацию...
http://iptables-tutorial.frozentux.net
Очень понятно, довольно подробно, только по-английски ;)
Ладно, допустим, с английским проблемы. Бывает. Хотя без английского админить сети вообще проблематично. Тогда вот:
http://www.citforum.ru/operating_systems/linux/iptables/
То же самое, только в более старой версии, зато переведенное на русский ;)))
Далее. Не зная IP интерфейса, я правило для SNAT не напишу. Цель SNAT так устроена. Я могу вообще-то извратиться примерно как-то так: `ifconfig ... | sed ...` - но мне лень ;)
И еще. Чего-то у меня такое ощущение, что все эти "правила брандмауэра" записаны в /etc/conf.d/local.start - я и сам так грешил ;) раньше, но в красиво и УДОБНО настроенном Gentoo в local.start вообще ничего нет - это такое специальное место, куда пишут всякую фигню те, кто не знает, как правильно ;) Ну пусть "пока не знает" ;)
Идея в том, что "начальный" набор правил брандмауэра должен грузиться при старте. С помощью такой псевдослужбы /etc/init.d/iptables. Которая всего-то и делает, что загружает из /var/lib/iptables/rules-save набор правил. Попадают туда правила через /etc/init.d/iptables save - предварительно их, правда, надо из командной строки брандмауэру задать ;)
А народ в массе своей пишет в /etc/conf.d/local.start... Ой, чего туда только не пишут :((( А ведь есть стандартные средства, которые позволяют правильно и удобно делать то, что вы делаете криво и через силу :(
Матюгаться, так матюгаться...
Давно всё уже прочитано и настроено. Зря вы спохватились через месяц после опубликования темы, ваши полезные комментарии уже не нужны.
Что ж, извините, что заставил вас так думать.
WiseLord написал(а): Есть
Кстати... Или у eth0 & eth1 маски не /16, или так неправильно... Подсети на разных интерфейсах пересекаться не должны. Это азбука IP...