alibek Posted September 24, 2014 · Report post Есть такой сервер под Debian: root# ifconfig ... eth0.20 Link encap:Ethernet HWaddr 90:94:e4:81:b7:f7 inet addr:10.1.128.19 Bcast:10.1.128.255 Mask:255.255.255.0 inet6 addr: fe80::9294:e4ff:fe81:b7f7/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2125572125 errors:0 dropped:0 overruns:0 frame:0 TX packets:887700721 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:2918694683053 (2.6 TiB) TX bytes:58906087628 (54.8 GiB) eth0.100 Link encap:Ethernet HWaddr 90:94:e4:81:b7:f7 inet addr:aaa.aaa.124.99 Bcast:aaa.aaa.124.127 Mask:255.255.255.128 inet6 addr: fe80::9294:e4ff:fe81:b7f7/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:45926614 errors:0 dropped:0 overruns:0 frame:0 TX packets:30404101 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:60958038726 (56.7 GiB) TX bytes:3338999480 (3.1 GiB) eth0.900 Link encap:Ethernet HWaddr 90:94:e4:81:b7:f7 inet addr:10.10.0.250 Bcast:10.10.255.255 Mask:255.255.0.0 inet6 addr: fe80::9294:e4ff:fe81:b7f7/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:58023788 errors:0 dropped:0 overruns:0 frame:0 TX packets:52833097 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:7393610025 (6.8 GiB) TX bytes:65076000992 (60.6 GiB) ... Шлюз по умолчанию aaa.aaa.124.126. .20 это внутренняя серверная подсеть, .100 это публичная подсеть (с выходом в интернет) и .900 это подсеть для пользователей хотспота. Для хотспота используется следующие правила iptables: #!/bin/sh IPT=`which iptables` IPS=`which ipset` [ -z "$IPT" ] && exit IF_LOOP=lo IF_INT=eth0.20 IF_EXT=eth0.100 IF_WIFI=eth0.900 IP_EXT=`ip -o -4 addr show dev eth0.100 | sed -ne 's/.*inet \(.*\) brd.*/\1/p'` IP_EXT=${IP_EXT%/*} NET_INT="10.0.0.0/8" NET_WIFI="10.10.0.0/16" NET_UNIFI="10.10.10.0/24" FW="$IPT -t filter" NAT="$IPT -t nat" MARK="$IPT -t mangle" ## Filter section $FW -F $FW -X $FW -Z $FW -P INPUT DROP $FW -P OUTPUT ACCEPT $FW -P FORWARD DROP ## Filter input invalid and bad packets $FW -N INVALID $FW -A INVALID -p tcp ! --syn -m state --state NEW -j DROP $FW -A INVALID -p tcp --tcp-flags ALL ALL -j DROP $FW -A INVALID -p tcp --tcp-flags ALL NONE -j DROP $FW -A INVALID -p tcp --tcp-flags ALL SYN -m state --state ESTABLISHED -j DROP $FW -A INVALID -p icmp --fragment -j DROP $FW -A INVALID -m state --state INVALID -j DROP $FW -A INVALID -d 255.255.255.255 -j DROP $FW -A INVALID -j RETURN ## Internet services $FW -N INTERNET # Allow ICMP $FW -A INTERNET -p icmp --icmp-type 0 -j ACCEPT $FW -A INTERNET -j RETURN ## Intranet services $FW -N INTRANET # Allow ICMP $FW -A INTRANET -p icmp --icmp-type 0 -j ACCEPT $FW -A INTRANET -p icmp -j ACCEPT # Allow HTTP $FW -A INTRANET -p tcp --dport 80 -j ACCEPT # Allow MySQL $FW -A INTRANET -p tcp --dport 3306 -j ACCEPT # Access to UniFi $FW -A INTRANET -p tcp --dport 8443 -j ACCEPT $FW -A INTRANET -j RETURN ## Hotspot services $FW -N HOTSPOT # Allow DHCP request and reply $FW -A HOTSPOT -p udp --sport 67 --dport 68 -j ACCEPT #$FW -A HOTSPOT -p udp --sport 67:68 --dport 67:68 -j ACCEPT # Block foreign networks $FW -A HOTSPOT ! -s $NET_WIFI -j DROP # Allow ping reply $FW -A HOTSPOT -p icmp --icmp-type 0 -j ACCEPT $FW -A HOTSPOT -p icmp --icmp-type 3 -j ACCEPT $FW -A HOTSPOT -p icmp --icmp-type 8 -j ACCEPT $FW -A HOTSPOT -p icmp --icmp-type 11 -j ACCEPT # Allow HTTP and HTTPS for clients $FW -A HOTSPOT -p tcp --dport 80 -j ACCEPT $FW -A HOTSPOT -p tcp --dport 443 -j ACCEPT # Allow DNS queries for clients $FW -A HOTSPOT -p tcp --dport 53 -j ACCEPT $FW -A HOTSPOT -p udp --dport 53 -j ACCEPT # Allow NTP queries for clients $FW -A HOTSPOT -p udp --dport 123 -j ACCEPT # Allow AP communications $FW -A HOTSPOT -p tcp --dport 8080 -s $NET_UNIFI -j ACCEPT $FW -A HOTSPOT -p tcp --dport 8443 -s $NET_UNIFI -j ACCEPT $FW -A HOTSPOT -j RETURN ## Global rules $FW -A INPUT -i $IF_LOOP -j ACCEPT $FW -A INPUT -j INVALID $FW -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Block bogons on external interface $FW -A INPUT -i $IF_EXT -s 10.0.0.0/8 -j DROP # Private, class A $FW -A INPUT -i $IF_EXT -s 172.16.0.0/12 -j DROP # Private, class B $FW -A INPUT -i $IF_EXT -s 192.168.0.0/16 -j DROP # Private, class C $FW -A INPUT -i $IF_EXT -s 224.0.0.0/4 -j DROP # Multicast, class D $FW -A INPUT -i $IF_EXT -s 240.0.0.0/5 -j DROP # Reserved, class E $FW -A INPUT -i $IF_EXT -s 169.254.0.0/16 -j DROP # Link-local $FW -A INPUT -i $IF_EXT -s 127.0.0.0/8 -j DROP # Loopback # Block foreign networks on internal interfaces $FW -A INPUT -i $IF_INT ! -s $NET_INT -j DROP # SSH access $FW -A INPUT -i $IF_INT -p tcp --dport 22 -s 10.1.128.0/24 -j ACCEPT $FW -A INPUT -i $IF_INT -p tcp --dport 22 -s 10.1.144.0/24 -j ACCEPT # Main processing $FW -A INPUT -i $IF_EXT -j INTERNET $FW -A INPUT -i $IF_INT -j INTRANET $FW -A INPUT -i $IF_WIFI -j HOTSPOT $FW -A INPUT -j LOG --log-prefix "INPUT DROP: " ## NAT section $FW -A FORWARD -i $IF_WIFI -o $IF_EXT -s $NET_WIFI ! -d $NET_INT -p icmp -j ACCEPT $FW -A FORWARD -i $IF_WIFI -o $IF_EXT -s $NET_WIFI ! -d $NET_INT -p tcp --dport 80 -j ACCEPT $FW -A FORWARD -i $IF_WIFI -o $IF_EXT -s $NET_WIFI ! -d $NET_INT -p tcp --dport 443 -j ACCEPT $FW -A FORWARD -i $IF_WIFI -o $IF_EXT -s $NET_WIFI ! -d $NET_INT -p tcp --dport 1024:49151 -j ACCEPT $FW -A FORWARD -i $IF_WIFI -o $IF_EXT -s $NET_WIFI ! -d $NET_INT -p udp --dport 53 -j ACCEPT $FW -A FORWARD -i $IF_WIFI -o $IF_EXT -s $NET_WIFI ! -d $NET_INT -p udp --dport 1024:49151 -j ACCEPT $FW -A FORWARD -i $IF_EXT -o $IF_WIFI -m state --state ESTABLISHED,RELATED -j ACCEPT #$FW -A FORWARD -i $IF_EXT -o $IF_WIFI ! -d $NET_INT -s $NET_WIFI -j ACCEPT $FW -A FORWARD -j LOG --log-prefix "FORWARD DROP: " $NAT -F $NAT -X $NAT -Z $NAT -A POSTROUTING -o $IF_EXT -s $NET_WIFI -j SNAT --to-source $IP_EXT Собственно весь NAT там в последней строчке, остальное это ACL. Проблема в том, что из хотспота (подсети 10.10.0.0/16) у меня нет доступа к хостам в подсети aaa.aaa.124.0/25 (публичной подсети). Подозреваю, что это из-за того, что пакеты на (к примеру) aaa.aaa.124.40 не подвергаются трансляции. Подскажите, как нужно поправить NAT, чтобы хосты в aaa.aaa.124.0/25 были доступными? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alex_001 Posted September 24, 2014 · Report post В 124.0 на устройствах прописать маршрут на 10.10.0.0/16 через 124.99? (статиком или ospf/rip). Хотя с виду правильно , может для начала поставить на пинг чтото там и tcpdump'om глянуть на .100 что происходит? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted September 24, 2014 · Report post Разобрался, дело в другом было. Самое главное забыл - aaa.aaa.124.40 это не настоящий IP-адрес, а SNAT-трансляция на бордере. Делал временно и забыл про это. Сделал нормальный IP, без NAT - теперь работает. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...