Нужна помощь по kernel NAT!
Добавлено: 2009-07-16 13:13:19
Здравствуйте!
С FreeBSD работать начал совсем недавно. Хочу сказать, спасибо lissyara за сайт и форум. Отдельное спасибо пользователям за статьи и опыт, которыми они делятся.
Задача такая: пробросить порт на локальную машину.
Подробнее:
Установлена FreeBSD 7.2. Имеем два интерфейса xl0(внешний интерфейс с ip:192.168.0.2) и sk0(внутренний интерфейс c ip:192.168.10.1). xl0 - подключен к роутеру(аппаратное устройство с ip:192.168.0.1). На роутере(192.168.0.1) проброс порта 6969 идет на 192.168.0.2(xl0).
Ядро собрано со следующими опциями:
rc.conf(только то, что касается сети и firewall):
sysctl(только то, что касается firewall):
firewall.sh:
Никак не хочет работать правило 30(nat 1), 40(nat 2). Интернет есть, почта и icq тоже работают(через NAT, правило nat 3).
Раньше стоял natd, всё работало. Охота с kernel NAT поработать.
Заранее, огромное спасибо!
С FreeBSD работать начал совсем недавно. Хочу сказать, спасибо lissyara за сайт и форум. Отдельное спасибо пользователям за статьи и опыт, которыми они делятся.
Задача такая: пробросить порт на локальную машину.
Подробнее:
Установлена FreeBSD 7.2. Имеем два интерфейса xl0(внешний интерфейс с ip:192.168.0.2) и sk0(внутренний интерфейс c ip:192.168.10.1). xl0 - подключен к роутеру(аппаратное устройство с ip:192.168.0.1). На роутере(192.168.0.1) проброс порта 6969 идет на 192.168.0.2(xl0).
Ядро собрано со следующими опциями:
Код: Выделить всё
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100
options IPFIREWALL_FORWARD
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_NAT
options LIBALIAS
Код: Выделить всё
defaultrouter="192.168.0.1"
gateway_enable="YES"
ifconfig_sk0="inet 192.168.10.1 netmask 255.255.255.0"
ifconfig_xl0="inet 192.168.0.2 netmask 255.255.255.0"
firewall_enable="YES"
firewall_nat_enable="YES"
firewall_nat_interface="xl0"
firewall_script="/etc/firewall.sh"
Код: Выделить всё
net.inet.ip.fw.dyn_keepalive: 1
net.inet.ip.fw.dyn_short_lifetime: 5
net.inet.ip.fw.dyn_udp_lifetime: 10
net.inet.ip.fw.dyn_rst_lifetime: 1
net.inet.ip.fw.dyn_fin_lifetime: 1
net.inet.ip.fw.dyn_syn_lifetime: 20
net.inet.ip.fw.dyn_ack_lifetime: 300
net.inet.ip.fw.static_count: 25
net.inet.ip.fw.dyn_max: 4096
net.inet.ip.fw.dyn_count: 152
net.inet.ip.fw.curr_dyn_buckets: 256
net.inet.ip.fw.dyn_buckets: 256
net.inet.ip.fw.tables_max: 128
net.inet.ip.fw.default_rule: 65535
net.inet.ip.fw.verbose_limit: 100
net.inet.ip.fw.verbose: 1
net.inet.ip.fw.one_pass: 0
net.inet.ip.fw.autoinc_step: 100
net.inet.ip.fw.enable: 1
Код: Выделить всё
#!/bin/sh
iip="192.168.10.1"
oip="192.168.0.2"
oif="xl0"
iif="sk0"
ipfw -f flush
ipfw add 1 check-state
ipfw add 10 allow all from any to any via lo0
ipfw add 20 fwd ${iip},8080 tcp from ${iip}/24 to any 80 recv ${iif}
ipfw nat 1 config ip ${oip} redirect_port tcp 192.168.10.11:6969 6969
ipfw add 30 nat 1 tcp from 192.168.10.11 6969 to any via ${oif}
ipfw nat 2 config ip ${oip} redirect_port udp 192.168.10.11:6969 6969
ipfw add 40 nat 2 udp from 192.168.10.11 6969 to any via ${oif}
ipfw add 50 deny icmp from any to any in icmptype 5,9,13,14,15,16,17
ipfw add 60 reject ip from ${iip}/24 to any in via ${oif}
ipfw add 70 allow tcp from me to any keep-state via ${oif}
ipfw add 80 allow icmp from any to any
ipfw add 90 allow udp from me to any domain keep-state
ipfw add 100 allow udp from any to me domain
ipfw add 110 allow ip from me to any
ipfw nat 3 config if ${oif} deny_in same_ports unreg_only
ipfw add 120 nat 3 ip from any to any out via ${oif}
ipfw add 130 nat 3 ip from any to ${oip} in via ${oif}
ipfw add 140 allow tcp from any to any 25,110 out via ${oif}
ipfw add 150 allow tcp from any 25,110 to any in via ${oif}
ipfw add 160 allow tcp from any to any 5190 out via ${oif}
ipfw add 170 allow tcp from any 5190 to any in via ${oif}
ipfw add 180 allow ip from any to any via ${iif}
ipfw add 190 deny all from any to any
Раньше стоял natd, всё работало. Охота с kernel NAT поработать.
Заранее, огромное спасибо!