FreeBSD 7.2
Ядро собрано с опциями:
Код: Выделить всё
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=50
options IPFIREWALL_NAT
options LIBALIAS
options ROUTETABLES=2
options DUMMYNET
options HZ="1000"
первый rl0 - локальная сеть 192.168.1.0/24 (ip freebsd 192.168.1.10)
192.168.1.1 adsl модем шлюз во внешнюю сеть в режиме роутера (локальная адресация 172.16.0.0/12)
192.168.1.2 d-link dir-100 в режиме роутера режим провайдера PPTP (локальная адресация 10.x.x.x/24 (адрес роутера 10.y.y.y), 80 порт натится на порт 7676 192.168.1.10 )
второй rl1 - шнурок провайдера PPPoE.
работает с помощью ppp, ip присваивается динамически, поднимаемый интерфейс - tun0
Задача:
1. Пробросить порт для локальных клиентов 10.x.x.x/24 в сеть 172.16.0.0/12
2. Доступ freebsd в интернет через провайдера PPPoE
3. Пробросить порт для внешних клиентов через провайдера PPPoE в сеть 172.16.0.0/12 (в плане)
Исполнение:
rc.conf
Код: Выделить всё
ifconfig_rl0="inet 192.168.1.10 netmask 255.255.255.0"
defaultrouter="192.168.1.2"
route add 172.16.0.0 192.168.1.1 -netmask 255.240.0.0
hostname="myhost.ru"
sshd_enable="YES"
gateway_enable="YES"
firewall_enable="YES"
firewall_script="/etc/rc.ipfw"
firewall_logging="YES"
font8x14="cp866-8x14"
font8x16="cp866b-8x16"
font8x8="cp866-8x8"
scrnmap="koi8-r2cp866"
ntpd_enable="YES"
ppp_enable="YES"
ppp_mode="ddial"
ppp_nat="NO
/etc/rc.ipfw
Код: Выделить всё
#!/bin/sh
ipfw -q -f flush #clean
oif="rl0"
tif="tun0"
cmd="ipfw -q add "
ks="keep-state"
# load
$cmd 00100 pass all from any to any via lo0
$cmd 00101 deny all from any to 127.0.0.0/8
$cmd 00102 deny all from 127.0.0.0/8 to any
$cmd 00500 check-state
$cmd 00502 deny all from any to any frag
$cmd 00501 deny tcp from any to any established
$cmd 00600 allow tcp from any to any out via $oif setup $ks
$cmd 00601 allow udp from any to any out via $oif $ks
$cmd 00602 allow tcp from any to any out via $tif setup $ks
$cmd 00603 allow tcp from any to any out via $tif $ks
$cmd 00650 allow udp from any to any 53 via tun0
$cmd 00651 allow udp from any 53 to any via tun0
$cmd 00652 allow udp from any to any 123 via tun0
$cmd 00653 allow udp from any 123 to any via tun0
# ping
$cmd 02000 allow icmp from any to any out icmptype 8
$cmd 02001 allow icmp from any to any in icmptype 0
ipfw nat 123 config ip 192.168.1.10 log same_ports redirect_port tcp 172.x.x.x:80 192.168.1.10:7676
ipfw add 00090 nat 123 tcp from 172.x.x.x 80 to any
ipfw add 00091 nat 123 tcp from any to 172.x.x.x 80
ipfw add 00092 nat 123 ip from any to 192.168.1.10 7676
$cmd 02002 deny log ip from any to any
Код: Выделить всё
default:
set log Phase tun command
set timeout 0
enable dns
set mru 1440
set mtu 1440
cinet:
set device PPPoE:rl1
set authname xxxx
set authkey yyyyy
set dial
set login
set ifaddr 0 0
add default HISADDR
netstat -rn при поднятом tun0
Код: Выделить всё
default 213.129.104.1 UGS 0 83 tun0
127.0.0.1 127.0.0.1 UH 0 51 lo0
172.16.0.0/12 192.168.1.1 UGS 0 0 rl0
192.168.1.0/24 link#1 UC 0 0 rl0
192.168.1.1 link#1 UHLW 6 0 rl0
213.129.104.1 213.129.110.248 UGH 1 0 tun0
При попытке подключения tcpdump выдает следующее
Код: Выделить всё
13:12:49.367304 IP 10.y.y.y.6021 > myhost.ru.7676: S 1141608668:1141608668(0) win 65535 <mss 1460,nop,nop,sackOK>
13:12:49.367379 IP myhost.ru.6021 > 172.x.x.x.http: S 1141608668:1141608668(0) win 65535 <mss 1460,nop,nop,sackOK>
13:12:49.389370 IP 172.x.x.x.http > myhost.ru.6021: S 1971473988:1971473988(0) ack 1141608669 win 5840 <mss 1452,nop,nop,sackOK>
13:12:49.786569 IP 172.x.x.x.http > myhost.ru.6021: S 1971473988:1971473988(0) ack 1141608669 win 5840 <mss 1452,nop,nop,sackOK>
tcpdump
Код: Выделить всё
13:41:54.676621 IP 10.y.y.y.5325 > myhost.ru.7676: S 1859151462:1859151462(0) win 65535 <mss 1460,nop,nop,sackOK>
13:41:54.676780 IP myhost.ru.5325 > 172.x.x.x.http: S 1859151462:1859151462(0) win 65535 <mss 1460,nop,nop,sackOK>
13:41:54.699954 IP 172.x.x.x.http > myhost.ru.5325: S 3606102377:3606102377(0) ack 1859151463 win 5840 <mss 1452,nop,nop,sackOK>
13:41:54.699991 IP myhost.ru.7676 > 10.y.y.y.5325: S 3606102377:3606102377(0) ack 1859151463 win 5840 <mss 1452,nop,nop,sackOK>
13:41:54.701152 IP 10.y.y.y.5325 > myhost.ru.7676: . ack 1 win 65535
13:41:54.701185 IP myhost.ru.5325 > 172.x.x.x.http: . ack 1 win 65535
Если не поднимать PPPoE то доступ работает, где что не так?
Проблема решена. Не хватало
Код: Выделить всё
route add 10.0.0.0 192.168.1.2 -netmask 255.0.0.0