прошу помощи с iptables и NAT
pimiento 25 сентября, 2009 - 18:40
птаюсь настроить NAT по Gentoo howto home network (английское)
всё сделал как там.
другая система по dhcp настраивается так
192.168.0.100 netmask 255.255.255.0
gw 192.168.0.1
dns 192.168.0.1
dns через меня резолвятся, а связи нет
вот что у меня есть
http://dpaste.com/98150
»
- Для комментирования войдите или зарегистрируйтесь
прошу помощи с iptables и NAT
хочется настроить NAT раньше чем дочитаю книжку andresson'а
неверные правила iptables
неверные правила iptables (для вашего случая)
уберите все и добавляйте по чуть-чуть (кашу можно и маслом испортить)
ключевые слова "forward" и "drop" (для выхода в инет)
что-то добрый я сегодня ....
неверные правила iptables
пробовал сделать вот так:
обнулил все правила
затем:
по-умолчанию всё разрешаю
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
разрешаю форвардинг из eth1
iptables -A FORWARD -i eth1 -s 192.168.0.0/24 -j ACCEPT
разрешаю форвардинг с eth0 к eth1
iptables -A FORWARD -i eth0 -d 192.168.0.0/24 -j ACCEPT
делаю NAT с выходом в eth0
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
всё равно безрезультатно
пакеты ко мне приходят на машину, но маскирование почему-то не работает
то есть пакеты имеют source 0.0.0.0/0 и destination 0.0.0.0/0
-A POSTROUTING ! -о еth0 -j
где еth0 внешний интерфейс.
Вроде бы так.
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
а почему ты включаешь
а почему ты включаешь masquerade на eth0 а не ppp0, на сколько я понял внешний ip у тебя именно там?
http://www.gentoo.org/doc/ru/
http://www.gentoo.org/doc/ru/home-router-howto.xml листинг 5.2 (LAN=eth1, WAN=ppp0 в вашей ситуации) закидываем в файл, делаем его исполняемым, выполняем, не забываем в sysctl поставить 1 в нужном месте.
Ну а если разобраться мне очень понравилась книжка Linux Firewalls Attack Detection and Response with Iptables, PSAD, and Fwsnort.pdf, google найдет.
Это howto можно взять только
Это howto можно взять только за основу ибо тут не все так просто. В данном случае мы имеем не 2 интерфейса, а уже 3 (исключая lo):
1 - eth0 - локальный внешний (подсеть - 10.0.0.0/8)
2 - eth1 - локальный внутренний (подсеть - 192.168.0.0/24)
3 - ppp0 - точка-точка в интернет.
если сделать маскарад только на eth0 (как изначально сделал pimiento) то транслироваться будут только пакеты уходящие в 10.0.0.0/8
если только на ppp0 - то заработает интернет, а внешняя локалка - нет. Учитывая что DNS на другой внутренней машине резольвятся, то смею предположить что адрес DNS сервера берется из локальной внешней сети (10.0.0.0/8), даже после поднятия PPP. Тогда при маскараде только на ppp0 перестанут транслироваться DNS запросы. Понятно к чему это приведет ;)
исходя из этого стоит попробовать:
т.е. не маскарадить только пакеты имеющие выходом локальный внутренний интерфейс eth1.
Это howto можно взять только
сделал iptables -t nat -A POSTROUTING ! -o eth1 -j MASQUERADE
локальные сайты открываются (dns действительно в локальной сети провайдера)
а внешние не хотят.
если сделать iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
всё равно внешние не пингуются, и внутренние пеерстают
ещё интересно как сделать проброс портов
сделал
iptables -t nat -A PREROUTING -i eth0 -p tcp--dport 28006 -j DNAT --to-destination 192.168.0.2:28006
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 30373 -j DNAT --to-destination 192.168.0.2:30373
но DC-клиент говорит, что я использую ip 192.168.0.100
и про книжки - очень хочется разобраться)) подскажите с какой лучше нчать изучение? а то я только почитал Скотт Манн и Митчел Крелл "Linux. Администрирование сетей TCP/IP", а сейчас читаю Oskar Andreasson "Iptables Tutorial 1.2.2"
А.. :) Про форвардинг ppp0 я
А.. :)
Про форвардинг ppp0 я вроде как забыл.
Видимо еще надо
спасибо огромнейшее!)) нат
спасибо огромнейшее!))
нат заработал :)
если не трудно, то помогите ещё разобраться с пробросом портов для DC-клиента
pimiento
А на машине с DC клиентом какой адрес 0.2 или 0.100? Может в настройках самого DC-клиента выставлено отправлять такой адрес.
На первый взгляд проброс должен работать, если хаб и, собтвенно, другие клиенты находятся в локальной внешней сети.
сейчас 192.168.0.2. я ей
сейчас 192.168.0.2. я ей статический присвоил, чтобы только к ней шёл dc-траффик, а другие по dhcp подключались и без dc.
сделал, чтобы не ругалось на ip, но не качается ничего всё равно
превышено время ожидания говорит
в iptables -t nat -nvL
пакеты tcp приходят (54 на данный момент)
мой файл-лист тоже скачать не могут
И все таки есть ощущение что
И все таки есть ощущение что дело в настройках DC-клиента. Ваша схема подозрительно похожа на используемую в corbina-beeline, и про аналогичную ситуацию я нашел тут.
DNAT в той схеме сделан так же. Маскарадинг сделан в 2 правила (на каждый внешний интерфейс по правилу), а не в одно как в нашем случае, но не думаю что дело в этом.
В настройках DC-клиента нужно выбрать что то наподобие "фаервол с ручным перенаправлением портов" (не прямое соединение), вписать туда внешний локальный адрес (10.*.*.*) и соответственно порты tcp и udp которые пробрасываются на роутере.
Либо использовать совет slepnoga - ставить и настраивать net-misc/linux-igd, тогда в настройках DC надо выбрать что то связанное с UPnP.
в настройках DC выбран ручной
в настройках DC выбран ручной фаервол. порты прописаны, WAN IP прописан внешний локальный ip
связь с сервером хаба есть. пинги до него идут, чат в клиенте виден, мои сообщения отображаются.
может, и правда, проблема с клиентом.
только странная какая-то
в любом случаее спасибо :)
P.S.
как закрыть топик? или это делает модератор?
емерге net-misc/linux-igd :)
емерге net-misc/linux-igd :)
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
slepnoga написал(а): емерге
Как я понял из документации это не избавляет от необходимости понимания принципов настройки Iptables, хотя и облегчает жизнь клиенту.
Взято отсюда
Если вкратце то эта программа только создает DNAT правила в фаерволе, все остальные правила, в цепочках FORWARD и INPUT например, писать придется самому.
Разве поверх eth0 не работает
Разве поверх eth0 не работает ppp0. ppp0 на отдельном физическом интерфейсе? Просто возникает вопрос как определить что на отдельном?
В данном случае мы занимались
В данном случае мы занимались тем, что выясняли какими путями пойдет TCP/IP пакет, и для этого не имеет значения находится ли инетерфейс физически в компьютере или представлен только программными средствами (виртуален). Да, пакеты приходищие на ppp0 будут видны и на eth0 при мониторинге последнего тем же tcpdump-ом. Но! Они будут инкапсулированы во что нибудь (либо в GRE, в случае с PPTP, либо в PPPoE etc) и вид удобоваримый для обработки как TCP/IP они примут только попав на интерфейс ppp0.
Не понятен второй вопрос. Как определить какой интерфейс является реальным а какой виртуальным? Или что то другое имелось ввиду?
P.S. У меня к примеру на роутере все работает через 1 физическую сетевую карту, получается интерфейс eth0 - локалка, поверх него ppp0 - PPPoE в инет, и поверх ppp0 туннель ssh-ppp, присутствующий как ppp1 и приводящий меня с работы в мою локалку. И все это - отдельные интерфейсы.