LINUX.ORG.RU
ФорумAdmin

Помогите чайнику с iptables


0

0

Доброго времени суток, помогите чайнику решить несложную задачу. Интернет-провайдер предоставляет сети два айпишника - xxx.xxx.xxx.xx1 и xxx.xxx.xxx.xx0. Сейчас вся сеть сидит на одном, второй не используется, нужно к конкретному компу в сети, скажем 192.168.1.5 прикрутить второй ip. Знаю что надо баловаться с NAT и MASQUERADE но что конкретно писать в iptables не знаю.

А ты уверен что второй ip свободен? Streem обычно дает 2 ip, 1 модему, а второй компу за ним.

Morphine
()

Я написал
iptables -A INPUT -i eth1 -s 192.168.1.5 -p ICMP -j ACCEPT
iptables -A INPUT -i eth1 -s 192.168.1.5 -m state --state ! INVALID -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -s 192.168.1.5 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -d 192.168.1.5 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.1.5 -o eth0 -j SNAT --to-source xxx.xxx.xxx.xx1
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source xxx.xxx.xxx.xx0

где eth0 это сетевуха смотрящая в инет, а eth1 в сеть, но что-то не работает.

OSBuster
() автор топика
Ответ на: комментарий от OSBuster

ip_forward включен? Что показывают счетчики?

at ★★
()

не надо ничего делать в iptables. достаточно прибить этот второй айпишник с маской /32 алиасом на комп 192.168.1.5 и прописать на роутере маршрут.

Komintern ★★★★★
()
Ответ на: комментарий от Komintern

А обратные адреса в исходящих от 192.168.1.5 пакетах оно тоже будет подменять?

nnz ★★★★
()

написал как в викпедии вот это, но всё равно не работает...

iptables -t nat -A PREROUTING -d xxx.xxx.xxx.xx1 -j DNAT --to-destination 192.168.1.5
iptables -t nat -A POSTROUTING -d 192.168.1.5 -j SNAT --to-source 192.168.1.1
iptables -t nat -A OUTPUT -d xxx.xxx.xxx.xx1 -j DNAT --to-destination 192.168.1.5

OSBuster
() автор топика
Ответ на: комментарий от OSBuster

Запускаете из компа в Интеренте "ping xxx.xxx.xxx.xx1". Запускаете на сервере "tcpdump -i eth0 -n -nn icmp" и убеждаетесь, что icmp пакеты до вас не доходят. Добавляете ip-адрес xxx.xxx.xxx.xx1 на интерфейс eth0 или на алиас eth0:1 или делаете proxy-аrp запись для него команой "neigh add proxy xxx.xxx.xxx.xx1 dev eth0". Когда tcpdump будет "видет" пакеты из инета для xxx.xxx.xxx.xx1 тогда и можно будет настраивать маршрутизацию и DNAT, если надо.

mky ★★★★★
()
Ответ на: комментарий от OSBuster

Там еще написано, что все это должно быть разрешено в таблице filter. В частности, в цепочке FORWARD. Читаем википедию еще раз, более внимательно.

nnz ★★★★
()
Ответ на: комментарий от OSBuster

Кроме того, интересно было бы посмотреть конфигурацию интерфейса eth0. На нем должны висеть оба айпишника.

Также нужно не забывать про роутинг. 192.168.1.1 и 192.168.1.5 должны нормально пинговать друг друга.

nnz ★★★★
()
Ответ на: комментарий от mky

Из интернета xxx.xxx.xxx.xx1 пингуется, tcpdump пишет:
13:53:25.854834 IP 80.91.250.89 > xxx.xxx.xxx.xx1: ICMP echo request, id 40789, seq 0, length 64
13:53:25.855071 IP xxx.xxx.xxx.xx1 > 80.91.250.89: ICMP echo reply, id 40789, seq 0, length 64
и т.д.
xxx.xxx.xxx.xx1 висит на eth0:2
В iptables написано просто eth0, если написать eth0:2 ругается на синтаксис. Писал и ip neigh add proxy xxx.xxx.xxx.xx1 dev eth0, всё равно ничего. Правила для 192.168.1.5 сейчас такие:



ptables -A INPUT -i eth1 -s 192.168.1.5 -p ICMP -j ACCEPT
iptables -A INPUT -i eth1 -s 192.168.1.5 -m state --state ! INVALID -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -s 192.168.1.5 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -d 192.168.1.5 -j ACCEPT
iptables -t nat -A PREROUTING -d xxx.xxx.xxx.xx1 -j DNAT --to-destination 192.168.1.5
iptables -t nat -A POSTROUTING -d 192.168.1.5 -j SNAT --to-source 192.168.1.1
iptables -t nat -A OUTPUT -d xxx.xxx.xxx.xx1 -j DNAT --to-destination 192.168.1.5
iptables -I FORWARD -s 192.168.1.5 -j ACCEPT
iptables -I FORWARD -d 192.168.1.5 -j ACCEPT

OSBuster
() автор топика
Ответ на: комментарий от OSBuster

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# из локалки в инет
iptables -A FORWARD -s 192.168.1.5 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.1.5 -j SNAT --to-source xxx.xxx.xxx.xx1 

# из инета в локалку
iptables -t nat PREROUTING -d xxx.xxx.xxx.xx1 -j DNAT --to-destination 192.168.1.5
iptables -A FORWARD -d 192.168.1.5 -j ACCEPT

amfibrahii
()
Ответ на: комментарий от OSBuster

Если он пингуется и при этом у правила: iptables -t nat -A PREROUTING -d xxx.xxx.xxx.xx1 -j DNAT --to-destination 192.168.1.5 ненулевой счетчик пакетов (смотрите iptables -t nat -L -n -v), значит пингуется хост 192.168.1.5. Запустите "tcpdump -i eth1 -n -nn icmp" и должны быть видны пакеты. Если счетчик пакетов нулевой, значит что-то не так с записями в iptables, либо до этого правила "-j ACCEPT", либо интерфейс не тот.

Только в POSTROUTING надо писать "-d 192.168.1.5", а то у вас в одном сообщении "-d", а в другом "-s". Или вобще не нужно SNAT правило, если у вас на 192.168.1.5 прописан маршрут по умолчанию через 192.168.1.1.

mky ★★★★★
()
Ответ на: комментарий от mky

Поторопился и прочитал невнимательно. Удаляю предложение относительно "-d" и "-s" в SNAT правиле.

Правило
iptables -t nat -A POSTROUTING -d 192.168.1.5 -j SNAT --to-source 192.168.1.1
ИМХО, не нужно. Проще прописать маршрут и открыть firewall на 192.168.1.5.

А так, посмотрите список правил iptables со счетчиками (ключ -v), там будет видно, какие правила срабатывали.

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.