Автор |
Сообщение |
serg1982 Форумчанин |
|
ProFfeSsoRr писал(а): |
Цитата: |
Чем больше цифра после слеша тем меньше диапозон получается |
блин, хитро... Тек, сейчас попробовал сделать вот так:
Нажмите сюда, чтобы просмотреть текст
IPTABLES="/sbin/iptables"
MODEM="90.189.х.х"
LINUX_OUTER="192.168.1.2"
LINUX_INNER="192.168.0.1"
COMP="192.168.0.0/24"
PORT_TCP="1234"
PORT_UDP="1235"
$IPTABLES -A PREROUTING -s $MODEM -d $LINUX_OUTER -i eth0 -p tcp --dport 1234 -j DNAT --to $COMP
$IPTABLES -A PREROUTING -s $MODEM -d $LINUX_OUTER -i eth0 -p udp --dport 1235 -j DNAT --to $COMP
$IPTABLES -A FORWARD -i eth0 -p tcp --dport 1234 -d $COMP -j ACCEPT
$IPTABLES -A FORWARD -i eth0 -p udp --dport 1235 -d $COMP -j ACCEPT
$IPTABLES -A POSTROUTING -s $COMP -d $LINUX_INNER -o eth1 -p tcp --dport $PORT_TCP -j SNAT --to $MODEM
$IPTABLES -A POSTROUTING -s $COMP -d $LINUX_INNER -o eth1 -p udp --dport $PORT_UDP -j SNAT --to $MODEM
$IPTABLES -A FORWARD -o eth1 -p tcp --dport 1234 -d $MODEM -j ACCEPT
$IPTABLES -A FORWARD -o eth1 -p udp --dport 1235 -d $MODEM -j ACCEPT
|
так ругается Bad IP adress 192.168.0.0/24
А если адрес какого-нить одного компа в локалке вставить, то будет "No chain/target/match by that name" 4 раза вылезать. |
в первой строчке не --to а --to-destination наде делать.... |
|
|
|
|
serg1982 Форумчанин |
|
ProFfeSsoRr писал(а): |
Цитата: |
Чем больше цифра после слеша тем меньше диапозон получается |
блин, хитро... Тек, сейчас попробовал сделать вот так:
Нажмите сюда, чтобы просмотреть текст
IPTABLES="/sbin/iptables"
MODEM="90.189.х.х"
LINUX_OUTER="192.168.1.2"
LINUX_INNER="192.168.0.1"
COMP="192.168.0.0/24"
PORT_TCP="1234"
PORT_UDP="1235"
$IPTABLES -A PREROUTING -s $MODEM -d $LINUX_OUTER -i eth0 -p tcp --dport 1234 -j DNAT --to $COMP
$IPTABLES -A PREROUTING -s $MODEM -d $LINUX_OUTER -i eth0 -p udp --dport 1235 -j DNAT --to $COMP
$IPTABLES -A FORWARD -i eth0 -p tcp --dport 1234 -d $COMP -j ACCEPT
$IPTABLES -A FORWARD -i eth0 -p udp --dport 1235 -d $COMP -j ACCEPT
$IPTABLES -A POSTROUTING -s $COMP -d $LINUX_INNER -o eth1 -p tcp --dport $PORT_TCP -j SNAT --to $MODEM
$IPTABLES -A POSTROUTING -s $COMP -d $LINUX_INNER -o eth1 -p udp --dport $PORT_UDP -j SNAT --to $MODEM
$IPTABLES -A FORWARD -o eth1 -p tcp --dport 1234 -d $MODEM -j ACCEPT
$IPTABLES -A FORWARD -o eth1 -p udp --dport 1235 -d $MODEM -j ACCEPT
|
так ругается Bad IP adress 192.168.0.0/24
А если адрес какого-нить одного компа в локалке вставить, то будет "No chain/target/match by that name" 4 раза вылезать. |
Во еще -t NAT пропущен и у --to-destination всетаки дипозон 192.168.0.0-192.168.0.20 задается в конечном итоге вот так должно быть
COMP="192.168.0.0-192.168.0.20"
$IPTABLES -t NAT -A PREROUTING -s $MODEM -d $LINUX_OUTER -i eth0 -p tcp --dport 1234 -j DNAT --to-destination $COMP |
|
|
|
|
ProFfeSsoRr Гуру |
|
Так,
ему неизвестно, говорит неверный аргумент (указываю один комп), если задаю диапазоном, то говорит что не найден такой хост/сетка. |
|
|
|
|
serg1982 Форумчанин |
|
ProFfeSsoRr писал(а): |
Так,
ему неизвестно, говорит неверный аргумент (указываю один комп), если задаю диапазоном, то говорит что не найден такой хост/сетка. |
еще и -t nat мелкими буквами надо...
COMP="192.168.0.0-192.168.0.20"
iptables -t nat -A PREROUTING -s $MODEM -d $LINUX_OUTER -i eth0 -p tcp --dport 1234 -j DNAT --to-destination $COMP
вот после этого iptables-save
# Generated by iptables-save v1.4.0 on Thu Jul 17 20:41:28 2008
*mangle
:PREROUTING ACCEPT [21:4952]
:INPUT ACCEPT [21:4952]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [14:4582]
:POSTROUTING ACCEPT [16:4646]
COMMIT
# Completed on Thu Jul 17 20:41:28 2008
# Generated by iptables-save v1.4.0 on Thu Jul 17 20:41:28 2008
*filter
:INPUT ACCEPT [21:4952]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [14:4582]
COMMIT
# Completed on Thu Jul 17 20:41:28 2008
# Generated by iptables-save v1.4.0 on Thu Jul 17 20:41:28 2008
*nat
:PREROUTING ACCEPT [8:492]
:POSTROUTING ACCEPT [3:280]
:OUTPUT ACCEPT [3:280]
-A PREROUTING -s 90.189.1.1/32 -d 192.168.1.2/32 -i eth0 -p tcp -m tcp --dport 1234 -j DNAT --to-destination 192.168.0.0-192.168.0.20
COMMIT
# Completed on Thu Jul 17 20:41:28 2008 |
|
|
|
|
serg1982 Форумчанин |
|
ну и sudo modprobe iptable_nat
перед этим надо естественно... |
|
|
|
|
ProFfeSsoRr Гуру |
|
происходит вот что:
Цитата: |
HomeServer init.d # /etc/rc.firewall
iptables v1.3.8: host/network `192.168.0.1-192.168.0.20' not found
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.3.8: host/network `192.168.0.1-192.168.0.20' not found
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.3.8: Unknown arg `--to-destination'
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.3.8: Unknown arg `--to-destination'
Try `iptables -h' or 'iptables --help' for more information.
|
|
|
|
|
|
serg1982 Форумчанин |
|
ProFfeSsoRr писал(а): |
происходит вот что:
Цитата: |
HomeServer init.d # /etc/rc.firewall
iptables v1.3.8: host/network `192.168.0.1-192.168.0.20' not found
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.3.8: host/network `192.168.0.1-192.168.0.20' not found
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.3.8: Unknown arg `--to-destination'
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.3.8: Unknown arg `--to-destination'
Try `iptables -h' or 'iptables --help' for more information.
|
|
закментируй все строчки кроме первой и добейся что б она работала... у меня iptables поновее но я сомневаюсь что проблема в этом... еще можеш вывод iptables-save который я выше писал сохранить в файл и загрузить его iptables-restore < file |
|
|
|
|
ProFfeSsoRr Гуру |
|
Цитата: |
$IPTABLES -t nat -A PREROUTING -s $MODEM -d $LINUX_OUTER -i eth0 -p tcp --dport 1234 -j DNAT --to-destination $COMP
$IPTABLES -t nat -A PREROUTING -s $MODEM -d $LINUX_OUTER -i eth0 -p udp --dport 1235 -j DNAT --to-destination $COMP |
работает (то бишь первые 2 строчки), а вот остальные 6 ругаются на $COMP, что неправильный диапазон. Я вот думаю - а где-нибудь можно тут заменить явное $COMP просто на интерфейс, с которого идут пакеты? Вообще, где обязательно надо указывать -s и -d, а где вместо них можно прописать -i и -o ?
Update:
Цитата: |
$IPTABLES -t nat -A PREROUTING -s $MODEM -d $LINUX_OUTER -i eth0 -p tcp --dport 1234 -j DNAT --to-destination $COMP
$IPTABLES -t nat -A PREROUTING -s $MODEM -d $LINUX_OUTER -i eth0 -p udp --dport 1235 -j DNAT --to-destination $COMP
$IPTABLES -A FORWARD -i eth0 -p tcp --dport 1234 -d 192.168.0.0/24 -j ACCEPT
$IPTABLES -A FORWARD -i eth0 -p udp --dport 1235 -d 192.168.0.0/24 -j ACCEPT
$IPTABLES -t nat -A POSTROUTING -s $COMP -d $LINUX_INNER -o eth1 -p tcp --dport $PORT_TCP -j SNAT --to-source $MODEM
$IPTABLES -t nat -A POSTROUTING -s $COMP -d $LINUX_INNER -o eth1 -p udp --dport $PORT_UDP -j SNAT --to-source $MODEM
$IPTABLES -A FORWARD -o eth1 -p tcp --dport 1234 -d $MODEM -j ACCEPT
$IPTABLES -A FORWARD -o eth1 -p udp --dport 1235 -d $MODEM -j ACCEPT |
-s $COMP в 5 и 6 строчках не нравятся, то бишь опять ругается на "невозможно найти хост/сеть". Надо как-то это заменять. Остальное пашет. |
|
|
|
|
serg1982 Форумчанин |
|
ProFfeSsoRr писал(а): |
Цитата: |
$IPTABLES -t nat -A PREROUTING -s $MODEM -d $LINUX_OUTER -i eth0 -p tcp --dport 1234 -j DNAT --to-destination $COMP
$IPTABLES -t nat -A PREROUTING -s $MODEM -d $LINUX_OUTER -i eth0 -p udp --dport 1235 -j DNAT --to-destination $COMP |
работает (то бишь первые 2 строчки), а вот остальные 6 ругаются на $COMP, что неправильный диапазон. Я вот думаю - а где-нибудь можно тут заменить явное $COMP просто на интерфейс, с которого идут пакеты? Вообще, где обязательно надо указывать -s и -d, а где вместо них можно прописать -i и -o ? |
как раз наоборот -i -o -p можно пропускать вот -s -d в данном случае нельзя...
для следующих строчек где FORWARD там -t filter
где построутинг там -t nat и в конце --to-source
ну и дальше смотреть... |
|
|
|
|
ProFfeSsoRr Гуру |
|
Ура, заменил $COMP в 5 и 6 строчках на 192.168.0.0/24 и скрипт заработал!!!!
serg1982 Огромнейшее спасибо за помощь в правке скрипта, David также огромнейшее спасибо за исходник! Правда не знаю, как бы справился без вашей помощи! ) ) ) |
|
|
|
|
ProFfeSsoRr Гуру |
|
Хм, скрипт-то работает, а DC порты все равно не видит. И дело видимо в том, что -d стоит модем, а вот назначение у пакета - сервак какой-нибудь в интернете! Попробовал убрать -d вообще - скрипт применяется, но тем не менее порты закрыты.
P.S. понимаю что замучал, но видимо я не все еще понял в настройке iptables |
|
|
|
|
serg1982 Форумчанин |
|
ProFfeSsoRr писал(а): |
Хм, скрипт-то работает, а DC порты все равно не видит. И дело видимо в том, что -d стоит модем, а вот назначение у пакета - сервак какой-нибудь в интернете! Попробовал убрать -d вообще - скрипт применяется, но тем не менее порты закрыты.
P.S. понимаю что замучал, но видимо я не все еще понял в настройке iptables |
echo 1 > /proc/sys/net/ipv4/ip_forward
говорил ?
модно еще ACCEPT на LOG заменить и посмотреть чего он там вываливать будет... |
|
|
|
|
serg1982 Форумчанин |
|
еще может стоит добавить
iptables -t nat -A POSTROUTING -j MASQUERADE |
|
|
|
|
serg1982 Форумчанин |
|
блин что то неправильно во всей конструкции надо подумать... |
|
|
|
|
ProFfeSsoRr Гуру |
|
Цитата: |
echo 1 > /proc/sys/net/ipv4/ip_forward |
а что это даст можешь пояснить?
Цитата: |
еще может стоит добавить
iptables -t nat -A POSTROUTING -j MASQUERADE |
бестолку. |
|
|
|
|
serg1982 Форумчанин |
|
[quote="ProFfeSsoRr"]
Цитата: |
echo 1 > /proc/sys/net/ipv4/ip_forward |
а что это даст можешь пояснить?
без этого форвард пакетов запрещен... |
|
|
|
|
ProFfeSsoRr Гуру |
|
Сделал. Просто в консоли ничего не высветилось при этой команде. Порты все равно не проходят.
Кстати, че-то Iptables как-то странно логи ведет... Где посмотреть прям по пакетам статистику - какой пакет когда и почему был принят/отброшен? |
|
|
|
|
David Гуру |
|
ProFfeSsoRr писал(а): |
Цитата: |
IPTABLES="/sbin/iptables"
MODEM="90.189.х.х"
LINUX_OUTER="192.168.1.2"
LINUX_INNER="192.168.0.1"
COMP="192.168.0.3-192.168.0.20"
PORT_TCP="1234"
PORT_UDP="1235" |
Цитата: |
$IPTABLES -t nat -A PREROUTING -s $MODEM -d $LINUX_OUTER -i eth0 -p tcp --dport 1234 -j DNAT --to-destination $COMP
$IPTABLES -t nat -A PREROUTING -s $MODEM -d $LINUX_OUTER -i eth0 -p udp --dport 1235 -j DNAT --to-destination $COMP
$IPTABLES -A FORWARD -i eth0 -p tcp --dport 1234 -d 192.168.0.0/24 -j ACCEPT
$IPTABLES -A FORWARD -i eth0 -p udp --dport 1235 -d 192.168.0.0/24 -j ACCEPT
$IPTABLES -t nat -A POSTROUTING -s 192.168.0.0/24 -d $LINUX_INNER -o eth1 -p tcp --dport $PORT_TCP -j SNAT --to-source $MODEM
$IPTABLES -t nat -A POSTROUTING -s 192.168.0.0/24 -d $LINUX_INNER -o eth1 -p udp --dport $PORT_UDP -j SNAT --to-source $MODEM
$IPTABLES -A FORWARD -o eth1 -p tcp --dport 1234 -d $MODEM -j ACCEPT
$IPTABLES -A FORWARD -o eth1 -p udp --dport 1235 -d $MODEM -j ACCEPT |
|
Итак вроде теперь так.
Значит похоже дело в том, что модем то бридж.
Получается, что все пакеты насквозь проходят напрямую и в загловках имеют адрес не модема, а источников в инете.
Тогда надо так видимо (убрать явные указания о адресах)
Код: |
$IPTABLES -t nat -A PREROUTING -d $LINUX_OUTER -i eth0 -p tcp --dport 1234 -j DNAT --to-destination $COMP
$IPTABLES -t nat -A PREROUTING -d $LINUX_OUTER -i eth0 -p udp --dport 1235 -j DNAT --to-destination $COMP
$IPTABLES -A FORWARD -i eth0 -p tcp --dport 1234 -d 192.168.0.0/24 -j ACCEPT
$IPTABLES -A FORWARD -i eth0 -p udp --dport 1235 -d 192.168.0.0/24 -j ACCEPT
$IPTABLES -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -p tcp --dport $PORT_TCP -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -p udp --dport $PORT_UDP -j MASQUERADE
$IPTABLES -A FORWARD -o eth1 -p tcp --dport 1234 -j ACCEPT
$IPTABLES -A FORWARD -o eth1 -p udp --dport 1235 -j ACCEPT |
|
|
|
|
|
ProFfeSsoRr Гуру |
|
Так, подскажите пожалуйста - как сбросить все правила на те, что грузятся автоматом при старте iptables? А то моих тут уже дофига стало - старые мешаются в логе. |
|
|
|
|
ProFfeSsoRr Гуру |
|
Поправьте если я не понял, но в
Код: |
$IPTABLES -t nat -A PREROUTING -d $LINUX_OUTER -i eth0 -p tcp --dport 1234 -j DNAT --to-destination $COMP |
-d точно должен указывать на $LINUX_OUTER, а не на $COMP? Ведь по идее дестинейшн пакета - это мой комп в локалке! И вообще тут -d видимо опять не нужен. Но и без него скрипт применяется, только результата нет.
P.S. То ли я с ума схожу, то ли я отупел... Уже на дофига раз перечитал мануал по iptables, а все не могу понять логику этих правил (Последний раз редактировалось: ProFfeSsoRr (Чт 17-07-08 : 23-52), всего редактировалось 1 раз |
|
|
|
|
|