BSDPORTAL.RU
FreeBSD 8: PF NAT. Клиент не получает интернет.
Люди, помогите пожалуйста разобраться.
Есть комп с двумя сетевухами: ed0 и nfe0.
От провайдера витая пара идет в nfe0, командой
подключаюсь до интернета.
Проблема в том, что клиентская машина не получает инет.
на шлюзе:
ifconfig
# ifconfig
ed0: flags=8843 metric 0 mtu 1500
ether 00:00:21:ef:78:62
inet 10.10.10.1 netmask 0xffff0000 broadcast 10.10.255.255
media: Ethernet autoselect (10baseT/UTP)
nfe0: flags=8843 metric 0 mtu 1500
options=8
ether 00:1b:fc:33:4e:43
inet x.x.x.x netmask 0xfffff000 broadcast 200.200.207.255
media: Ethernet autoselect (100baseTX )
status: active
plip0: flags=8810 metric 0 mtu 1500
lo0: flags=8049 metric 0 mtu 16384
options=3
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
pflog0: flags=141 metric 0 mtu 33152
pfsync0: flags=0<> metric 0 mtu 1460
syncpeer: 224.0.0.240 maxupd: 128
tun0: flags=8051 metric 0 mtu 1450
inet x.x.x.x —> y.y.y.y netmask 0xffffffff
Opened by PID 1350
# cat /etc/pf.conf
#interface looks on ISP
ext_if=»tun0″
#interface looks on LAN
int_if=»ed0″
#NAT rule
nat on $ext_if from $internal_net to any -> ($ext_if)
[b]ifconfig[/b]
rl0: flags=8843 metric 0 mtu 1500
options=8
ether 00:e0:4c:63:d6:29
inet 10.10.10.2 netmask 0xffff0000 broadcast 10.10.255.255
media: Ethernet autoselect (100baseTX )
status: active
plip0: flags=8810 metric 0 mtu 1500
lo0: flags=8049 metric 0 mtu 16384
options=3
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
nd6 options=3
# [b]ping 10.10.10.1[/b]
PING 10.10.10.1 (10.10.10.1): 56 data bytes
64 bytes from 10.10.10.1: icmp_seq=0 ttl=64 time=0.869 ms
64 bytes from 10.10.10.1: icmp_seq=1 ttl=64 time=0.541 ms
64 bytes from 10.10.10.1: icmp_seq=2 ttl=64 time=0.534 ms
^C
— 10.10.10.1 ping statistics —
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.534/0.648/0.869/0.156 ms
[b]netstat -rn[/b]
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 10.10.10.1 UGS 0 33 rl0
10.10.0.0/16 link#1 U 2 160 rl0
10.10.10.2 link#1 UHS 0 0 lo0
127.0.0.1 link#3 UH 0 0 lo0
Internet6:
Destination Gateway Flags Netif Expire
::1 ::1 UH lo0
fe80::%lo0/64 link#3 U lo0
fe80::1%lo0 link#3 UHS lo0
ff01:3::/32 fe80::1%lo0 U lo0
ff02::%lo0/32 fe80::1%lo0 U lo0
в resolv.conf клиента прописаны днсы провайдера.
defaultrouter=»10.10.10.1″
ifconfig_rl0=»10.10.10.2 netmask 255.255.0.0″
router_enable=»YES»
# [b]ipfw show[/b]
00100 5069 490768 allow ip from any to any
00101 0 0 allow icmp from any to any
65535 0 0 deny ip from any to any
Помогите, пожалуйста. я уже не соображаю. =(
_________________
Ignoscito saepe alteri nunquam tibi.
я искал свое место по следам на снегу. мне ли не знать, как не хватает тепла этим большим городам?
Последний раз редактировалось Ледяной_Кот Чт 19 авг, 2010 1:07 pm, всего редактировалось 2 раз(а).
попробуйте пингануть яндекс с серым сорсом.
pf для ната, ipfw для файрвола на будущее.
извиняюсь конечно, но как понять с серым сорсом?
не знаю, что именно сделала, но внешка начала с клиента пинговаться.
появилась другая проблема: не работает днс.
http://www.ignix.ru/public/daemon/easy-nat-pf
по вот этому ману прописала
echo ‘named_enable=»YES»‘ >> /etc/rc.conf
и
listen-on < 127.0.0.1; 10.10.10.1;>;
forwarders < 127.0.0.1; 10.10.10.1;>;
в named.conf
как вот тут http://unix.derkeiler.com/Newsgroups/co . 00024.html сделала
pass in quick on $ext_if proto udp from any to $server port 53
keep state
pass out quick on $ext_if inet proto udp all keep state
pass out quick on $ext_if inet proto icmp from any to any keep state,
в ipfw добавила allow udp from any to any keep state. все равно нету пинга по имени и пинга да днсы провайдера. неужели нет другого способа, кроме как поднимать свой named?
может ли быть причина в том, что днсы провайдера находятся в 255.255.240.0 подсети, а мой шлюз в 255.255.0.0?
помогите, пожалуста.
_________________
Ignoscito saepe alteri nunquam tibi.
я искал свое место по следам на снегу. мне ли не знать, как не хватает тепла этим большим городам?
_________________
Ignoscito saepe alteri nunquam tibi.
я искал свое место по следам на снегу. мне ли не знать, как не хватает тепла этим большим городам?
Хосподи, у вас все в куче. Во-первых, когда выгладываете конфиги, то белый ИП лучше стереть))) Во-вторых, вы в будующем планируете раздавать инет на 1000 ПК? Зачем вам ipfw? Если хотите сделать правильно, то либо pf, либо ipfw+ipnat (ИМХО). Трассировка от клиента где тормозится? Что показывает ping -S 10.10.10.1 ya.ru?
ЗЫ bind для резолвинга поднимать необязательно, сойдут и ДНСы провайдера.
ДНСы прова пингуются с клиента
nslookup ya.ru с клиента че говорит?
unixforum.org
Хочу на десктопе FreeBSD поднять wireless Access Point. Десктоп присоеденен до роутера по LAN через re0. Текущие настройки:
interface=wlan0 debug=1 ctrl_interface=/var/run/hostapd ctrl_interface_group=wheel ssid=freebsdapp wpa=2 wpa_passphrase=freebsdapp wpa_key_mgmt=WPA-PSK wpa_pairwise=CCMP TKIP
hostname="borys" wlan_wep_load="YES" wlan_tkip_load="YES" wlan_ccmp_load="YES" wlan_xauth_load="YES" wlan_acl_load="YES" ifconfig_re0="DHCP" gateway_enable="YES"
subnet 192.168.77.0 netmask 255.255.255.0
# ifconfig wlan0 create wlandev rum0 wlanmode hostap # ifconfig wlan0 inet 192.168.77.1 netmask 255.255.255.0 # /etc/rc.d/hostapd onerestart Starting hostapd. Configuration file: /etc/hostapd.conf Using interface wlan0 with hwaddr 00:1e:58:a4:6a:30 and ssid 'freebsdapp' # dhcpd wlan0 Internet Systems Consortium DHCP Server 4.2.4-P2 Copyright 2004-2012 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Wrote 3 leases to leases file. Listening on BPF/wlan0/00:1e:58:a4:6a:30/192.168.77.0/24 Sending on BPF/wlan0/00:1e:58:a4:6a:30/192.168.77.0/24 # ifconfig re0: flags=8843 metric 0 mtu 1500 options=8209b ether 28:92:4a:2a:06:b5 inet 192.168.19.135 netmask 0xffffff00 broadcast 192.168.19.255 nd6 options=29 media: Ethernet autoselect (100baseTX ) status: active pflog0: flags=0<> metric 0 mtu 33152 nd6 options=29 pfsync0: flags=0<> metric 0 mtu 1500 nd6 options=29 syncpeer: 0.0.0.0 maxupd: 128 lo0: flags=8049 metric 0 mtu 16384 options=600003 inet6 ::1 prefixlen 128 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x6 inet 127.0.0.1 netmask 0xff000000 nd6 options=21 rum0: flags=8843 metric 0 mtu 2290 ether 00:1e:58:a4:6a:30 nd6 options=29 media: IEEE 802.11 Wireless Ethernet autoselect mode 11g status: running wlan0: flags=8843 metric 0 mtu 1500 ether 00:1e:58:a4:6a:30 inet 192.168.77.1 netmask 0xffffff00 broadcast 192.168.77.255 nd6 options=29 media: IEEE 802.11 Wireless Ethernet autoselect mode 11g status: running ssid freebsdapp channel 6 (2437 MHz 11g) bssid 00:1e:58:a4:6a:30 country US authmode WPA2/802.11i privacy MIXED deftxkey 2 TKIP 2:128-bit txpower 0 scanvalid 60 protmode CTS dtimperiod 1 -dfs
Интернет на десктопе присутствует, клиенты получають IP адреса, шлюз пингуеться, интернет или DNS 8.8.8.8 — не пингуеться.
Шлюз в интернет на FreeBSD за полчаса
Допустим у нас встала задача быстро развернуть шлюз да выхода в интернет небольшой сети (домашней или небольшого офиса) . Фактически задача сводится к установке операционной системы и развёртывании DHCP, DNS и NAT. Далее будет показано как можно быстро и легко решить эту задачу используя ОС FreeBSD 8.0.
Для начала нужно установить ОС на сервер. Ставить систему можно даже с bootonly CD докачивая необходимое по сети. Нужно поставить только самый минимум. Допустим что у сервера два интерфейса: le0, который «смотрит» в интернет и em0, к которому подключена локальная сеть. В локальной сети мы будем использовать пространство 172.31.255.0/24, причём первый адрес (172.31.255.1) будет использоваться сервером.
Первым делом нужно добавить в файл /etc/rc.conf строку:
Эта строка при загрузке сервера разрешает пересылку IP-пакетов. Без неё не возможно использование сервера в качестве маршрутизатора. Чтобы это изменение вступило в силу до перезагрузки нужно выполнить команду:
sysctl net.inet.ip.forwarding=1
Следующим шагом сконфигурируем DNS. Сначала нужно в файле /etc/namedb/named.conf заменить строку:
После этого разрешим запуск DNS-сервера добавив в /etc/rc.conf строку:
Проверить работу DNS-сервера можно командой:
nslookup www.ylsoftware.com 127.0.0.1
В случае нормальной работы DNS вывод должен выглядеть примерно вот так:
Server: 127.0.0.1 Address: 127.0.0.1#53 Non-authoritative answer: Name: www.ylsoftware.com Address: 89.108.78.131
Затем установим DHCP-сервер:
/usr/ports/net/isc-dhcp31-server && make install clean
Далее создадим файл /usr/local/etc/dhcpd.conf следующего содержания:
default-lease-time 600; max-lease-time 7200; ddns-update-style none; log-facility local7; subnet 172.31.255.0 netmask 255.255.255.0
Конфигурация DHCP-сервера более подробно уже была рассмотрена ранее и сейчас останавливаться на ней мы не будем. Для запуска DHCP-сервера нужно добавить в /etc/rc.conf строки:
dhcpd_enable="YES" dhcpd_ifaces="em0" dhcpd_flags="-q"
/usr/local/etc/rc.d/isc-dhcpd start
Теперь осталось только настроить пакетный фильтр. Из всего многообразия оных во FreeBSD выберем pf. Создадим файл /etc/pf.rules следующего содержания:
# Базовые настройки if_ext = "le0" if_int = "em0" net_int = "172.31.255.0/24" set block-policy drop set state-policy if-bound scrub all reassemble tcp fragment reassemble # NAT для локальной сети nat pass on $if_ext from $net_int -> ($if_ext) static-port # Запрещаем весь лишний трафик block drop all # Разрешаем всё на loopback-интерфейсе pass quick on lo0 all # Разрешаем исходящий трафик pass out quick on $if_ext inet proto tcp from ($if_ext) to any flags S/SA keep state pass out quick on $if_ext inet proto < udp, icmp >from ($if_ext) to any keep state pass out quick on $if_int from ($if_int) to $net_int # Разрешем любой трафик со стороны локальной сети pass in quick on $if_int from $net_int to any keep state
Добавляем в /etc/rc.conf строки:
pf_enable="YES" pf_rules="/etc/pf.rules"
Запускаем пакетный фильтр:
Теперь компьютеры в локальной сети смогут получать сетевые настройки по DHCP и спокойно выходить в сеть. На этом всё. Приятной работы!