Ru-Board.club
← Вернуться в раздел «В помощь системному администратору»

» FreeBSD + ipfw + port mapping

Автор: Pukite
Дата сообщения: 05.01.2004 10:20
Привет, коллеги !

Имеется роутер с двумя интерфейсами, делящий интернет с внешнего интерфейса на внутренний (локальная сеть) - необходимо настроить порт маппинг для одного порта (100) с роутера на адрес 192.168.0.12 - как сделать, подскажите строчку!

Заранее благодарю.

Добавлено
Так будет правильно?

ipfw add fwd 192.168.0.12,100 tcp from any to адрес-внешнего-интерфейса 100
Автор: kinnegan
Дата сообщения: 06.01.2004 04:57
через нат
redirect_port tcp dst_adr:port src_adr:port
слошной ртфм
Автор: guard
Дата сообщения: 06.01.2004 08:23
rdr xl0 194.67.57.33/32 port 25 -> 192.168.0.33 port 25 tcp

xl0 - внешний интерфейс
Автор: wchik
Дата сообщения: 04.02.2004 17:59
Всем привет! тем про ipfw много, не знаю какая подходит, эта вроде

Значит так, есть сеть, гейт на фре 5.1 (с диал-ап), надо чтобы юзеры могли ходить за почтой в разные места, да работала ася в сети

раньше правила были такими ipwf show

00010 382 487568 divert 8668 tcp from any to any dst-port 25 via tun0
00015 377 39494 divert 8668 tcp from any 25 to any via tun0
00020 1754 93528 divert 8668 tcp from any to any dst-port 110 via tun0
00025 1858 1716759 divert 8668 ip from any 110 to any via tun0
00050 47 3122 divert 8668 tcp from any to any dst-port 5190 via tun0
00055 35 3543 divert 8668 tcp from any 5190 to any via tun0
00100 255511 48527513 allow ip from any to any
65535 185 91343 deny ip from any to any

и все работало, теперь правила (такие же ) но ipwf show выводит следующее

00010 14 712 divert 8668 tcp from any to any dst-port 25 via tun0
00015 0 0 divert 8668 tcp from any 25 to any via tun0
00020 18 864 divert 8668 tcp from any to any dst-port 110 via tun0
00025 0 0 divert 8668 ip from any 110 to any via tun0
00100 2693 348827 allow ip from any to any

И как видите в счетчике есть нули и соответственно ничего не работает

и вот уж чесно не упомню чего я наделал, что такая беда случилась
Может поможете? что не так?

вот еще

cat /etc/rc.conf
firewall_enable="YES"
firewall_script="/etc/firewall/fwrules"

natd_enable="YES"
natd_interface="tun0"
natd_flags="-f /etc/natd.conf

cat /etc/natd.conf

same_ports yes
use_sockets yes

dynamic yes
interface tun0

#deny_incoming yes
#log_denied yes
Автор: kinnegan
Дата сообщения: 05.02.2004 05:58
может нехватает gateway_enable="YES"?
Автор: Tropin
Дата сообщения: 12.04.2004 14:51
А можно перенаправлять пакеты в одной подсети, то есть валится пакет на 192.168.0.1 (интерфейс rl0), а он перенаправляется на 192.168.0.2
пишу

Код: rdr rl0 192.168.0.1/32 port 25 -> 192.168.0.2 port 25 tcp
Автор: Tropin
Дата сообщения: 05.05.2004 09:38
оказалось что с IPFILTER так дклать нельзя
нашел тут в PDF (стр. 50)

какие еще есть варианты, говорят в линуксе без проблем, неужто во FreeBSD никак?
Автор: Pukite
Дата сообщения: 04.04.2005 11:04
Опять та же проблема. Имеем:

- локальная машина с адресом 192.168.0.10, на которой надо сделать доступ к 139 порту извне;
- роутер с внешним адресом А.Б.В.200, который раздаёт сеть по нату;

На роутере ввожу команду:

ipfw add 30 fwd 192.168.0.10,139 tcp from any to А.Б.В.200 39
ipfw add 30 fwd А.Б.В.200,39 tcp from any to 192.168.0.10 139

При попытке с третьей внешней машины из совсем другой оперы сделать telnet А.Б.В.200 39, на локальной машине выскакивает окошко AtGuard, сигнализирующее о входящей коннекции, но самого соединения не происходит. AtGuard не при чём, он ничего не блокирует, если что.

Что я сделала не так? Объясните для блондинок. Горю.
Автор: wchik
Дата сообщения: 04.04.2005 11:18
Pukite
/etc/natd.conf:
Код:
use_sockets yes
same_ports yes
unregistered_only
redirect_port tcp 192.168.0.1:110 1.1.1.1:110
Автор: Pukite
Дата сообщения: 04.04.2005 11:22
wchik
А как это будет в моём конкретном случае?
Автор: wchik
Дата сообщения: 04.04.2005 11:38
110 замени на 139
еще судя по порту ты папку зашарить хочешь, тогда одного этого порта может оказаться недостаточно добавь себе правило с логом в конец посмотри какие еще пакеты пытаются пойти изнутри сети очень похоже, что запрос идет по одному порту а ответ по другому и потому не работает
Автор: tiir
Дата сообщения: 04.04.2005 11:56
Pukite
-redirect_port tcp 192.168.0.10:139 39
это пишется или в строке запуска natd на роутере или добавляется в natd.conf
Автор: wchik
Дата сообщения: 04.04.2005 12:44

Цитата:
или добавляется в natd.conf

ну да, только в таком случае должно быть в командной строке -f /etc/natd.conf
или в рс конф
natd_flags="-f /etc/natd.conf"
Автор: Shurec
Дата сообщения: 18.05.2006 01:49
Ребята, а подскажите как мне перекинуть smtp c одной карты на другую
Автор: walerchik
Дата сообщения: 28.06.2006 12:30
Есть корпоративная сеть 192.168.20.хх, в ней есть Freebsd машина, являющаяся гейтом в инет. Нужно получить возможность залезть через remote desktop на машину в этой корпоративке. Подскажите пожалуйста , какие порты на фрюхе открыть/перебросить, чтобы такое реализовать ?
Автор: Tropin
Дата сообщения: 28.06.2006 13:17
walerchik
Для пакетов приходящих на внешний (инетовский) интерфейс на порт 3389 делаешь мэппинг (прямой переадрес) на машину в корпоративной сети, на тот же порт.
Проверено, все работает без проблем...
Автор: walerchik
Дата сообщения: 28.06.2006 14:02
То есть так
добавить в /etc/natd.conf

-redirect_port tcp 192.168.20.2:3389 3389 ?
Автор: SSV_RA
Дата сообщения: 28.06.2006 22:53
Да но еще в фаере нужно разрешить хождение по этому порту.
Автор: ZAQAZ
Дата сообщения: 05.07.2006 13:55
народ у кого нибудь реально работает переадресация портов
ни как не могу настроить

rc.conf
-------------
gateway_enable="YES"
natd_enable="YES"
natd_interface="xl0"
natd_flags="-f /etc/natd.conf"
firewall_enable="YES"
firewall_script="/etc/ipfw.conf"

natd.conf
log yes
redirect_port tcp 192.168.0.254:80 80

ipfw
---------------
ipfw -q add 100 divert 8668 tcp from any to 212.212.212.212 80 via xl0
ipfw -q add 200 divert 8668 tcp from 192.168.2.254 80 to any via xl0
ipfw -q add 300 allow tcp from any to 192.168.2.254 80 via any
---------------
Автор: SSV_RA
Дата сообщения: 05.07.2006 14:02
А у тебя нат запущен? А то у меня он при привязке к интерфейсу не работает (лом разбираться почему), а только если привязать его к адресу.
По фаеру - всего три правила? А какое правило 65535?

Попробуй добавить
ipfw -q add 400 deny log tcp from any to any
и смотри что будет писаться в /var/log/security

Да, и почему в natd.conf адрес 192.168.0.254, а в ipfw 192.168.2.254?
Автор: ZAQAZ
Дата сообщения: 05.07.2006 14:47
SSV_RA
нат запущен
все работает
машины из трех сетей за фрей ходят в сеть
соответственно в фаере не три правила
а по поводу адреса это просто окорался при наборе на форуме
реально указана именно вторая сеть

посмотрел tcpdump вот результат
IP "maindomain".ru 4515 > 212.212.212.212.80: S 2492300877:2492300877(0) win 65535 <mss 1460, nop,nop,sackOK >
IP 212.212.212.212.80>"maindomain".ru 4515 : R 0:0(0) ask 1 win 0
Автор: SSV_RA
Дата сообщения: 05.07.2006 14:59
ZAQAZ
Покажи все правила фаера как они есть.

Я на несколько машин удаленно хожу, все работает, но себе сделал так

rc.conf
--------------------------------------------
gateway_enable="YES"
inetd_enable="YES"
inetd_flags="-a 192.168.1.1"
hostname="bla-bla-bla"
ifconfig_rl0="inet 192.168.1.1 netmask 255.255.0.0"
usbd_enable="YES"
squid_enable="YES"
sshd2_enable="YES"
sendmail_enable="NONE"
firewall_enable="YES"
natd_enable="YES"
natd_flags="-f /etc/natd.conf"
named_enable="YES"
--------------------------------------------

natd.conf
--------------------------------------------
alias_address xxx.xxx.xxx.xxx
redirect_port tcp 192.168.200.201:3389 3389
--------------------------------------------

rc.firewall
--------------------------------------------
....
${cmd} divert natd all from any to any via ng0
....
--------------------------------------------
ng0 - внешний интерфейс
Автор: ZAQAZ
Дата сообщения: 06.07.2006 14:59
SSV_RA
rc.conf
defaultrouter="212.212.212.211"
gateway_enable="YES"
hostname="relay2.maindomain.ru"
ifconfig_xl0="inet 212.212.212.212 netmask 255.255.255.252"
ifconfig_xl1="inet 192.168.2.1 netmask 255.255.255.0"
inetd_enable="YES"
sshd_enable="YES"
gateway_enable="YES"
firewall_enable="YES"
firewall_script="/etc/ipfw.conf"
natd_enable="YES"
natd_interface="xl0"
natd_flags="-f /etc/natd.conf"
apache2_enable="YES"

natd.conf
alias_adress 212.212.212.212
log yes
redirect_port tcp 192.168.2.244:3389 3389

ipfw.conf
#!/bin/sh
ipfw -q flush

ipfw -q add 10 count ip from any to 212.212.212.212in via xl0

ipfw -q add 100 allow tcp from any to 212.212.212.212 25 in via xl0
ipfw -q add 101 allow tcp from any to 192.168.2.244 3389
ipfw -q add 102 allow tcp from 192.168.2.244 3389 to any
ipfw -q add 103 allow udp from any 123 to 212.212.212.212
ipfw -q add 105 allow tcp from any to 212.212.212.212 53
ipfw -q add 106 allow tcp from 212.212.212.212 53 to any
ipfw -q add 107 allow udp from any to 212.212.212.212 53
ipfw -q add 108 allow udp from 212.212.212.212 53 to any
ipfw -q add 109 allow all from any to any 443
ipfw -q add 110 deny tcp from 192.168.2.0/24 to any 445
ipfw -q add 111 deny tcp from 192.168.2.0/24 to any 139

ipfw -q add 190 divert 8668 tc from any to any
ipfw -q add 200 divert natd all from any to any via xl0

ipfw -q add 211 allow icmp from any to any icmptypes 0
ipfw -q add 212 allow icmp from any to any icmptypes 3
ipfw -q add 213 allow icmp from any to any icmptypes 4
ipfw -q add 214 allow icmp from any to any icmptypes 8
ipfw -q add 215 allow icmp from any to any icmptypes 11
ipfw -q add 216 allow icmp from any to any icmptypes 12
ipfw -q add 217 deny icmp from any to any frag

ipfw -q add 300 allow tcp from 212.212.212.212 to any 20
ipfw -q add 301 allow tcp from 212.212.212.212 to any 21
ipfw -q add 302 allow tcp from 212.212.212.212 to any 22

ipfw -q add 400 allow tcp from 192.168.2.100 to any 80
ipfw -q add 411 deny tcp from 192.168.0.0/24 to any 80

#firewall for localhost
ipfw -q add 500 allow ip from any to any via lo0
ipfw -q add 501 deny ip from any to 127.0.0.0/8
ipfw -q add 502 deny ip from 127.0.0.0/8 to any

вот так все пока выглядит
сейчас как раз занимаюсь причесыванием, но наткнулся на проблему переброса портов
все пожелания рассматриваются
Автор: SSV_RA
Дата сообщения: 06.07.2006 15:43
ZAQAZ

Попробуй так
ipfw -q add 101 count ip from any to 212.212.212.212in via xl0
ipfw -q add 102 divert natd all from any to any via xl0
ipfw -q add 103 allow tcp from any to any 3389
ipfw -q add 104 allow tcp from any 3389 to any

А дальше как и было. Должно работать.
Если хочешь разрешить для конкретного адреса то скорее всего придется делать так

ipfw -q add 101 count ip from any to 212.212.212.212in via xl0
ipfw -q add 102 divert natd all from any to any via xl0
ipfw -q add 103 allow tcp from any to me 3389 in via xl0
ipfw -q add 104 allow tcp from me 3389 to any out via xl0
ipfw -q add 103 allow tcp from any to 192.168.2.244 3389 via xl1
ipfw -q add 104 allow tcp from 192.168.2.244 3389 to any via xl1

А у тебя ipfw или ipfw2? Потому что если двоqка, то правила
ipfw -q add 211 allow icmp from any to any icmptypes 0
ipfw -q add 212 allow icmp from any to any icmptypes 3
ipfw -q add 213 allow icmp from any to any icmptypes 4
ipfw -q add 214 allow icmp from any to any icmptypes 8
ipfw -q add 215 allow icmp from any to any icmptypes 11
ipfw -q add 216 allow icmp from any to any icmptypes 12
ipfw -q add 217 deny icmp from any to any frag

ipfw -q add 300 allow tcp from 212.212.212.212 to any 20
ipfw -q add 301 allow tcp from 212.212.212.212 to any 21
ipfw -q add 302 allow tcp from 212.212.212.212 to any 22

можно заменить на
ipfw -q add 211 allow icmp from any to any icmptypes 0,3,4,8,11,12
ipfw -q add 217 deny icmp from any to any frag

ipfw -q add 300 allow tcp from 212.212.212.212 to any 20,21,22


Добавлено:
А вообще вот мой фаер, корявый конечно, но пока им некогда заниматься

#!/bin/sh
inet="ng0"
onet="rl0"
cmd="/sbin/ipfw add"
my="192.168.1.1"

/sbin/ipfw -q flush

#Loopback
${cmd} allow all from any to any via lo0

${cmd} count all from any to any in via ${inet}
${cmd} count all from any to any out via ${inet}

#SSH
${cmd} allow tcp from any to me 22
${cmd} allow tcp from me 22 to any

${cmd} divert natd all from any to any via ng0

#Ping
${cmd} allow ip from any to any icmptypes 0,8

#Proxy
${cmd} allow tcp from 192.168.100.144 to ${my} 3128 via ${onet}
${cmd} allow tcp from ${my} 3128 to 192.168.100.144 via ${onet}
${cmd} allow tcp from 192.168.200.201 to ${my} 3128 via ${onet}
${cmd} allow tcp from ${my} 3128 to 192.168.200.201 via ${onet}
${cmd} allow tcp from 192.168.150.2 to ${my} 3128 via ${onet}
${cmd} allow tcp from ${my} 3128 to 192.168.150.2 via ${onet}
${cmd} allow tcp from 192.168.100.13 to ${my} 3128 via ${onet}
${cmd} allow tcp from ${my} 3128 to 192.168.100.13 via ${onet}
${cmd} allow tcp from 192.168.100.50 to ${my} 3128 via ${onet}
${cmd} allow tcp from ${my} 3128 to 192.168.100.50 via ${onet}
${cmd} allow tcp from 192.168.100.55 to ${my} 3128 via ${onet}
${cmd} allow tcp from ${my} 3128 to 192.168.100.55 via ${onet}
${cmd} allow tcp from 192.168.100.77 to ${my} 3128 via ${onet}
${cmd} allow tcp from ${my} 3128 to 192.168.100.77 via ${onet}
${cmd} allow tcp from 192.168.100.88 to ${my} 3128 via ${onet}
${cmd} allow tcp from ${my} 3128 to 192.168.100.88 via ${onet}
${cmd} allow tcp from 192.168.100.135 to ${my} 3128 via ${onet}
${cmd} allow tcp from ${my} 3128 to 192.168.100.135 via ${onet}
${cmd} allow tcp from 192.168.100.98 to ${my} 3128 via ${onet} limit src-addr 1
${cmd} allow tcp from ${my} 3128 to 192.168.100.98 via ${onet}

#DNS
${cmd} allow tcp from any to any 53
${cmd} allow tcp from any 53 to any
${cmd} allow udp from any to any 53
${cmd} allow udp from any 53 to any

${cmd} allow tcp from any to x.x.x.x 3264
${cmd} allow tcp from x.x.x.x 3264 to any

#RDP
${cmd} allow tcp from any to any 3389
${cmd} allow tcp from any 3389 to any

#ICQ
${cmd} allow tcp from any to any 5190
${cmd} allow tcp from any 5190 to any

#FTP
${cmd} allow tcp from any to ${my} 20,21 via ${onet}
${cmd} allow tcp from ${my} 20,21 to any via ${onet}

#Mail
${cmd} allow tcp from 192.168.1.2 to any 25,110
${cmd} allow tcp from any 25,110 to 192.168.1.2

${cmd} deny udp from any to me 137,138,139,514 via ${inet}
${cmd} deny all from any to any via ${onet}
${cmd} allow all from any to any via ${inet}
Автор: ZAQAZ
Дата сообщения: 07.07.2006 06:53
SSV_RA
спасибо попробую
единственное что пугает это расположения сервера
одно неправильное правило и я его теряю
он находиться от меня в 100 км.
на днях поигрался пришлось ехать
так что пока поробую на каком нибудь экспериментальном сервере
Автор: SSV_RA
Дата сообщения: 07.07.2006 08:36
ZAQAZ
Сделай начало фаера чтобы всегда было такое, и никаких проблем
ipfw -q add allow tcp from any to me 22
ipfw -q add allow tcp from me 22 to any
ipfw -q add count ip from any to 212.212.212.212in via xl0
ipfw -q add divert natd all from any to any via xl0
ipfw -q add allow tcp from any to any 3389
ipfw -q add allow tcp from any 3389 to any

У тебя всегда будут первыми правила, которые разрешают работать по SSH.

Либо как я раньше делал, забивал в крон (когда начинал править фаер) каждые (например) 15 мин он выполняет скрипт со старыми правилами. И если ошибся в фаере, то через 1-15 мин машина опять будет доступна. Меня так несколько раз спасало
Автор: ZAQAZ
Дата сообщения: 07.07.2006 09:39
SSV_RA
примерно так и делаю
перед тем как править что либо отправляю машину на перезагрузку через минут 20
но пугает то что не загрузилась машина из-за того что ошибся в rc.conf
вот и пришлось ехать
Автор: ZAQAZ
Дата сообщения: 13.07.2006 11:45
добрался наконец то до сервера
попробовал
в rc.conf вписываю строку
natd_flags="-f /etc/natd.conf"
отправляю ее на перезагрузку и она умерает на стадии загрузки sendmaila
пропускаю его загрузку, после чего не работает инет вообще
из нутри машина пингуется а с наружи ее как будто вообще нет
Автор: SSV_RA
Дата сообщения: 15.07.2006 22:59
ZAQAZ
А что поменял в natd.conf? Что говорят логи?
И зачем обязательно перезагрузка? Это же не Windows, тут 90% задач решается без перезагрузки
Автор: ZAQAZ
Дата сообщения: 02.08.2006 07:08
natd.conf
alias_adress 212.212.212.212
redirect_port tcp 192.168.0.2:80 80

Страницы: 12

Предыдущая тема: Создание второго "равноправного" контроллера домена


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.