Страница 1 из 2
Kernel nat + IPFW. Помогите разобраться. Пособие для чайник
Добавлено: 2014-01-20 21:27:51
Dark Smoke
Добрый день.
На разных сайтах пишут разное. Хочу что бы гуру написали небольшой манул по настройке kernel nat + ipwf.
А так же проброс портов.
Как я понял для начала надо перекомпилить ядро с параметрами
Код: Выделить всё
options IPFIREWALL
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPDIVERT
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT="500"
options DUMMYNET
options HZ=1000
options IPFIREWALL_FORWARD
options IPFIREWALL_NAT #ipfw kernel nat support
options LIBALIAS
А потом настраивать IPFW и вот тут у меня тупо ступор, как расшарить инет всем что бы не юзать NATD и как пробросить RDP порт
Re: Kernel nat + IPFW. Помогите разобраться. Пособие для ча
Добавлено: 2014-01-20 21:36:33
FreeBSP
Код: Выделить всё
kldloadl ipfw
kldload ipfw_nat
ipfw nat 1 config if $EXT_IF reset same_ports deny_in redirect_port tcp ${RDP_SERVER_GREY_ADDR}:3389 3389
ipfw add nat 1 ip from any to any via $EXT_IF
Re: Kernel nat + IPFW. Помогите разобраться. Пособие для ча
Добавлено: 2014-01-20 22:00:54
Dark Smoke
Сейчас
Код: Выделить всё
# cat /etc/rc.conf
ifconfig_em0="inet 192.168.2.250 netmask 255.255.255.0"
ifconfig_re0="inet 192.168.1.2 netmask 255.255.255.0"
gateway_enable="YES"
natd_enable="YES"
natd_interface="re0"
natd_flags="-f /etc/natd.conf"
firewall_enable="YES"
firewall_type="/etc/firewall.conf"
sshd_enable="YES"
ntpd_enable="YES"
dhcpd_enable="YES"
dhcpd_ifaces="em0"
Коментирую
Код: Выделить всё
natd_flags="-f /etc/natd.conf"
natd_enable="YES"
natd_interface="re0"
Правильно?
Добавляю firewall.conf
Код: Выделить всё
cat /etc/firewall.conf
#!/bin/sh
cmd="/sbin/ipfw"
wan="em0"
lan="re0"
server-1c="192.168.1.240"
${cmd} -f flush
${cmd} add check-state
${cmd} add allow ip from any to any via lo0
${cmd} add deny ip from any to 127.0.0.0/8
${cmd} add deny ip from 127.0.0.0/8 to any
${cmd} add deny ip from any to 10.0.0.0/8 in via ${wan}
${cmd} add deny ip from any to 172.16.0.0/12 in via ${wan}
${cmd} add deny ip from any to 192.168.0.0/16 in via ${wan}
${cmd} add deny ip from any to 0.0.0.0/8 in via ${wan}
${cmd} add deny ip from any to 169.254.0.0/16 in via ${wan}
${cmd} add deny ip from any to 240.0.0.0/4 in via ${wan}
${cmd} add deny icmp from any to any frag
${cmd} add deny log icmp from any to 255.255.255.255 in via ${wan}
${cmd} add deny log icmp from any to 255.255.255.255 out via ${wan}
${cmd} add 4000 divert natd ip from any to any via re0
${cmd} add 65500 allow ip from any to any
Перед правилом 4000 добавить
Код: Выделить всё
${cmd} nat 1 config if $EXT_IF reset same_ports deny_in redirect_port tcp ${server-1c}:3389 3389
${cmd} add nat 1 ip from any to any via ${wan}
kldloadl ipfw
kldload ipfw_nat
У меня ж уже ядро перекомпилено. Зачем загружать модули?
Правильно я все понимаю?
Re: Kernel nat + IPFW. Помогите разобраться. Пособие для ча
Добавлено: 2014-01-20 23:50:26
FreeBSP
корм для холиварщиков:
зачем перекомпилять, если можно загрузить модуль?
а если серьезно - еще надо добавить firewall_nat_enable="YES"? 400 правило долой, вместо него ту конструкцию, и в ней еще одну переменную раскрой
Re: Kernel nat + IPFW. Помогите разобраться. Пособие для ча
Добавлено: 2014-01-21 10:39:23
Dark Smoke
зачем перекомпилять, если можно загрузить модуль?
Так загружать модуль это ж медленнее работает комп, правда ж?
Re: Kernel nat + IPFW. Помогите разобраться. Пособие для ча
Добавлено: 2014-01-21 11:47:10
snorlov
Кто тебе это сказал...Он все равно грузиться модулем... Только в одном случае загрузке наплевать на /boot/loader.conf, а в другом нет...
Re: Kernel nat + IPFW. Помогите разобраться. Пособие для ча
Добавлено: 2014-01-21 12:07:50
Dark Smoke
Век живи, век учись. Спасибо.
Закоментил все что касается натД в rc.conf
Код: Выделить всё
ifconfig_em0="inet 192.168.2.250 netmask 255.255.255.0"
ifconfig_re0="inet 192.168.1.2 netmask 255.255.255.0"
gateway_enable="YES"
#natd_enable="YES"
#natd_interface="re0"
#natd_flags="-f /etc/natd.conf"
firewall_enable="YES"
firewall_script="/etc/firewall.conf"
sshd_enable="YES"
ntpd_enable="YES"
dhcpd_enable="YES"
dhcpd_ifaces="em0"
Интернет в локально сети не работает ((
P.S. Я извиняюсь за ламерство, но хочется разобраться.
Re: Kernel nat + IPFW. Помогите разобраться. Пособие для ча
Добавлено: 2014-01-21 12:44:53
lazhu
Dark Smoke писал(а):
P.S. Я извиняюсь за ламерство, но хочется разобраться.
Уже все написали:
FreeBSP писал(а):Код: Выделить всё
ipfw nat 1 config if $EXT_IF reset same_ports deny_in redirect_port tcp ${RDP_SERVER_GREY_ADDR}:3389 3389
ipfw add nat 1 ip from any to any via $EXT_IF
Вставьте это вместо диверта.
И уберите все упоминания о натд.
Re: Kernel nat + IPFW. Помогите разобраться. Пособие для ча
Добавлено: 2014-01-21 14:30:35
Dark Smoke
Правило проброса порта, почему то не отображается в списке правил
Код: Выделить всё
ipfw show
00100 0 0 check-state
00200 0 0 allow ip from any to any via lo0
00300 0 0 deny ip from any to 127.0.0.0/8
00400 0 0 deny ip from 127.0.0.0/8 to any
00500 0 0 deny ip from any to 10.0.0.0/8 in via re0
00600 0 0 deny ip from any to 172.16.0.0/12 in via re0
00700 0 0 deny ip from any to 192.168.0.0/16 in via re0
00800 0 0 deny ip from any to 0.0.0.0/8 in via re0
00900 0 0 deny ip from any to 169.254.0.0/16 in via re0
01000 0 0 deny ip from any to 240.0.0.0/4 in via re0
01100 0 0 deny icmp from any to any frag
01200 0 0 deny log logamount 500 icmp from any to 255.255.255.255 in via re0
01300 0 0 deny log logamount 500 icmp from any to 255.255.255.255 out via re0
01600 0 0 nat 1 ip from any to any via re0
65535 2233034 1550408299 allow ip from any to any
Код: Выделить всё
cat /etc/firewall.conf
#!/bin/sh
cmd="/sbin/ipfw"
wan="re0"
lan="em0"
lanip="192.168.2.250"
server1c="192.168.2.240"
${cmd} -f flush
${cmd} add check-state
${cmd} add allow ip from any to any via lo0
${cmd} add deny ip from any to 127.0.0.0/8
${cmd} add deny ip from 127.0.0.0/8 to any
${cmd} add deny ip from any to 10.0.0.0/8 in via ${wan}
${cmd} add deny ip from any to 172.16.0.0/12 in via ${wan}
${cmd} add deny ip from any to 192.168.0.0/16 in via ${wan}
${cmd} add deny ip from any to 0.0.0.0/8 in via ${wan}
${cmd} add deny ip from any to 169.254.0.0/16 in via ${wan}
${cmd} add deny ip from any to 240.0.0.0/4 in via ${wan}
${cmd} add deny icmp from any to any frag
${cmd} add deny log icmp from any to 255.255.255.255 in via ${wan}
${cmd} add deny log icmp from any to 255.255.255.255 out via ${wan}
${cmd} nat 1 config if ${wan} reset same_ports deny_in redirect_port tcp 192.168.2.240:3389 3389
${cmd} add nat 1 ip from any to any via ${wan}
Re: Kernel nat + IPFW. Помогите разобраться. Пособие для ча
Добавлено: 2014-01-21 21:16:06
Dark Smoke
Не помогает ничего

Re: Kernel nat + IPFW. Помогите разобраться. Пособие для ча
Добавлено: 2014-01-21 21:39:00
FreeBSP
у тебя просто трафик не ходит через ван
добавь в начало
ipfw add count ip from any to any in via $wan
ipfw add count ip from any to any out via $wan
ipfw add count ip from any to any in via $lan
ipfw add count ip from any to any out via $lan
проброс порта - это конфигурация ната
ipfw nat 1 show config
Re: Kernel nat + IPFW. Помогите разобраться. Пособие для ча
Добавлено: 2014-01-21 23:28:45
Dark Smoke
Добавил в начало. Ходит.
Код: Выделить всё
...
00200 0 0 count ip from any to any in via re0
00300 0 0 count ip from any to any out via re0
00400 33 5654 count ip from any to any in via em0
00500 31 3192 count ip from any to any out via em0
...
Код: Выделить всё
# ipfw nat 1 show config
ipfw nat 1 config if re0 same_ports reset redirect_port tcp 192.168.2.240:3389 3389
А вот проброс порта не работает (
Re: Kernel nat + IPFW. Помогите разобраться. Пособие для ча
Добавлено: 2014-01-21 23:36:17
FreeBSP
полностью ipfw show
Re: Kernel nat + IPFW. Помогите разобраться. Пособие для ча
Добавлено: 2014-01-21 23:53:56
Dark Smoke
Код: Выделить всё
# ipfw show
00100 0 0 check-state
00200 0 0 count ip from any to any in via re0
00300 0 0 count ip from any to any out via re0
00400 13441 677087 count ip from any to any in via em0
00500 25367 36512091 count ip from any to any out via em0
00600 0 0 allow ip from any to any via lo0
00700 0 0 deny ip from any to 127.0.0.0/8
00800 0 0 deny ip from 127.0.0.0/8 to any
00900 0 0 deny ip from any to 10.0.0.0/8 in via re0
01000 0 0 deny ip from any to 172.16.0.0/12 in via re0
01100 0 0 deny ip from any to 192.168.0.0/16 in via re0
01200 0 0 deny ip from any to 0.0.0.0/8 in via re0
01300 0 0 deny ip from any to 169.254.0.0/16 in via re0
01400 0 0 deny ip from any to 240.0.0.0/4 in via re0
01500 0 0 deny icmp from any to any frag
01600 0 0 deny log logamount 500 icmp from any to 255.255.255.255 in via re0
01700 0 0 deny log logamount 500 icmp from any to 255.255.255.255 out via re0
01800 0 0 allow ip from any to 192.168.2.250 dst-port 9999 via em0
01900 0 0 allow ip from any to 78.25.1.195 dst-port 9999 via re0
02000 0 0 nat 1 ip from any to any via re0
65535 9820224 7290366070 allow ip from any to any
Re: Kernel nat + IPFW. Помогите разобраться. Пособие для ча
Добавлено: 2014-01-22 0:30:02
FreeBSP
Dark Smoke писал(а):Добавил в начало. Ходит.
Код: Выделить всё
...
00200 0 0 count ip from any to any in via re0
00300 0 0 count ip from any to any out via re0
...

НЕ ХОДИТ

Re: Kernel nat + IPFW. Помогите разобраться. Пособие для ча
Добавлено: 2014-01-22 0:37:33
Dark Smoke
эм.. а в чем бок?
Re: Kernel nat + IPFW. Помогите разобраться. Пособие для ча
Добавлено: 2014-01-22 0:52:24
FreeBSP
никто его не посылает

например
или шнурок забыл вставить

Re: Kernel nat + IPFW. Помогите разобраться. Пособие для ча
Добавлено: 2014-01-22 1:00:26
Dark Smoke
посылаю и шнурок вставлен
еще меня пугает скрипт запуска пппое
Код: Выделить всё
# cat /usr/local/etc/rc.d/ppp_on.sh
#!/usr/local/bin/bash
fwcmd=/sbin/ipfw
case "$1" in
start)
/usr/sbin/ppp -nat -ddial vega
;;
stop)
killall ppp
sleep 3
;;
restart)
sleep 2
sh $0 start
;;
*)
echo ""
echo "Usage `basename $0` { start | stop | restart }"
echo ""
exit 64
;;
esac
Там есть параметр нат, он не может мешать?
Re: Kernel nat + IPFW. Помогите разобраться. Пособие для ча
Добавлено: 2014-01-22 1:07:14
FreeBSP
ipfw показывает, что ip трафика на интерфейсе просто НЕТ

возможно, речь не о том интерфейсе..
ifconfig в студию
в скрипте криминала не вижу, но сам с ppp не работал, подожди пока еще кто скажет чего про него
Re: Kernel nat + IPFW. Помогите разобраться. Пособие для ча
Добавлено: 2014-01-22 1:08:28
Dark Smoke
Код: Выделить всё
# ifconfig
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=4219b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MAGIC,VLAN_HWTSO>
ether 68:05:ca:1b:a9:9f
inet 192.168.2.250 netmask 0xffffff00 broadcast 192.168.2.255
inet6 fe80::6a05:caff:fe1b:a99f%em0 prefixlen 64 scopeid 0x3
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8209b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC,LINKSTATE>
ether 60:a4:4c:a9:ca:cc
inet 192.168.1.2 netmask 0xffffff00 broadcast 192.168.1.255
inet6 fe80::62a4:4cff:fea9:cacc%re0 prefixlen 64 scopeid 0x4
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
pflog0: flags=0<> metric 0 mtu 33152
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
pfsync0: flags=0<> metric 0 mtu 1500
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
syncpeer: 0.0.0.0 maxupd: 128
ipfw0: flags=8801<UP,SIMPLEX,MULTICAST> metric 0 mtu 65536
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x9
inet 127.0.0.1 netmask 0xff000000
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1492
options=80000<LINKSTATE>
inet xxx.xxx.xxx.xxx--> xxx.248.xxx.149 netmask 0xffffffff
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
Opened by PID 1712
Re: Kernel nat + IPFW. Помогите разобраться. Пособие для ча
Добавлено: 2014-01-22 1:19:27
FreeBSP
ПФ тоже в ядре?
pfctl -sa
вообще есть три проблемы:
1. вы не знаете что вам надо
2. у вас нет формального описания того что вам надо
3. вы не знаете как это реализовать
если со вторым и третьим помочь можното с первым - никак..
короче схема сети какая, кто куда и как ходит?
Re: Kernel nat + IPFW. Помогите разобраться. Пособие для ча
Добавлено: 2014-01-22 1:25:12
Dark Smoke
PF тоже в ядре
Код: Выделить всё
]# pfctl -sa
FILTER RULES:
No queue in use
INFO:
Status: Disabled Debug: Urgent
State Table Total Rate
current entries 0
searches 0 0.0/s
inserts 0 0.0/s
removals 0 0.0/s
Counters
match 0 0.0/s
bad-offset 0 0.0/s
fragment 0 0.0/s
short 0 0.0/s
normalize 0 0.0/s
memory 0 0.0/s
bad-timestamp 0 0.0/s
congestion 0 0.0/s
ip-option 0 0.0/s
proto-cksum 0 0.0/s
state-mismatch 0 0.0/s
state-insert 0 0.0/s
state-limit 0 0.0/s
src-limit 0 0.0/s
synproxy 0 0.0/s
TIMEOUTS:
tcp.first 120s
tcp.opening 30s
tcp.established 86400s
tcp.closing 900s
tcp.finwait 45s
tcp.closed 90s
tcp.tsdiff 30s
udp.first 60s
udp.single 30s
udp.multiple 60s
icmp.first 20s
icmp.error 10s
other.first 60s
other.single 30s
other.multiple 60s
frag 30s
interval 10s
adaptive.start 6000 states
adaptive.end 12000 states
src.track 0s
LIMITS:
states hard limit 10000
src-nodes hard limit 10000
frags hard limit 5000
tables hard limit 1000
table-entries hard limit 200000
Схема подключения
Интернет - модем (в режиме бридж) - FreeBSD - Локальная сеть
Задача: попасть на машину в локальной сети используя RDP
Re: Kernel nat + IPFW. Помогите разобраться. Пособие для ча
Добавлено: 2014-01-22 8:37:35
hizel
Вы хотите пробрасывать порт при доступе из инторнетов которые через tun0 и при этом НАТите на re0?
Re: Kernel nat + IPFW. Помогите разобраться. Пособие для ча
Добавлено: 2014-01-22 9:21:32
snorlov
А pf то вам зачем, я понимаю, если вы разбираетесь в файерах, а сейчас то... Уберите его и разбирайтесь с ipfw, вам его одного хватит... Кстати ppp тоже может юзать свой нат, нет ли чего подобного и там...
Re: Kernel nat + IPFW. Помогите разобраться. Пособие для ча
Добавлено: 2014-01-22 9:34:23
Dark Smoke
в этом то и проблема я, то что я не понимаю, хочется раз и на всегда разобраться.
Ну я пробовал так
Код: Выделить всё
${cmd} nat 1 config if tun0 reset same_ports redirect_port tcp 192.168.2.240:3389 3389
Не работает.
И тогда вобще, почему работает интернет если не заварачиваются пакеты на нет?
PF на будущее