Берём новый ASUS WL-500g Premium и настраиваем. Всё делаем по инструкции.
Меняем прошивку(шьем последнее от Олега).
Настраиваем DHCP+PPTP. Всё работает, всё замечательно.
Разрешаем icmp from WAN (галочка в Internet Firewall -> Basic Settings)
Разрешаем Web-интерфейс по порту 8080 из WAN(галочка в Internet Firewall -> Basic Settings)
Разрешаем ssh from WAN(по инструкции с этого сайта, пару правил в iptables)
Настраиваем Wireless...
Итог:
1) Интернет из домашней сети - есть !
2) SSH, Web-interface из WAN - есть !
И, кажется, всё замечательно.
Но тут выплывает одна очень интересная фича(да-да, именно фича NAT)...
Адреса транслируются в обе стороны. Входящие соединения, не имеющие сопоставлений в NAT-таблицах, успешно транслируются во внутреннюю подсеть.
Мы можем добраться до внутренней подсети из внешней !
И на этом ничего не заканчивается. Запуская роутер в такой конфигурации, мы предоставляем бесплатный Интернет всему сегменту городской сети, за что нас немедленно отключает наш провайдер. И он трижды прав.
Эксперимент
Настраиваем ASUS как я описал выше.
Ему выдается IP 10.7.14.88(MAN). Роутер коннектится по PPTP и получает IP 212.1.xxx.xx (у меня внешний).
Идём к соседу. У него на компе ип 10.7.14.89.
У соседа интернета нет, баланс отрицательный, на VPN не пускает.
Делаем у соседа:
route add -host ya.ru gw 10.7.14.88
route add -net 192.168.0.0/24(моя внутренняя сеть) gw 10.7.14.88
И проверяем:
ping 192.168.0.254 (внутренний ип роутера)
ping 192.168.0.8 (домашняя тачка)
ping ya.ru
ВСЁ пингуется !
....высказываемся.
Code:
[root@gw /tmp]$ iptables --list
Chain INPUT (policy DROP)
target prot opt source destination
DROP all -- anywhere anywhere state INVALID
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere state NEW
ACCEPT all -- anywhere anywhere state NEW
SECURITY all -- anywhere anywhere state NEW
ACCEPT udp -- anywhere anywhere udp spt:bootps dpt:bootpc
ACCEPT tcp -- anywhere gw tcp dpt:www
ACCEPT tcp -- anywhere anywhere tcp dpt:7776
ACCEPT tcp -- anywhere anywhere tcp dpt:webcam
ACCEPT icmp -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh flags:SYN,RST,ACK/SYN
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
DROP all -- anywhere anywhere state INVALID
TCPMSS tcp -- anywhere anywhere tcp flags:SYN,RST,ACK/SYN TCPMSS clamp to PMTU
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
SECURITY all -- anywhere anywhere state NEW
ACCEPT all -- anywhere anywhere ctstate DNAT
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain MACS (0 references)
target prot opt source destination
Chain SECURITY (2 references)
target prot opt source destination
RETURN tcp -- anywhere anywhere tcp flags:SYN,RST,ACK/SYN limit: avg 1/sec burst 5
RETURN tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,ACK/RST limit: avg 1/sec burst 5
RETURN udp -- anywhere anywhere limit: avg 5/sec burst 5
RETURN icmp -- anywhere anywhere limit: avg 5/sec burst 5
DROP all -- anywhere anywhere
Chain logaccept (0 references)
target prot opt source destination
LOG all -- anywhere anywhere state NEW LOG level warning tcp-sequence tcp-options ip-options prefix `ACCEPT '
ACCEPT all -- anywhere anywhere
Chain logdrop (0 references)
target prot opt source destination
LOG all -- anywhere anywhere state NEW LOG level warning tcp-sequence tcp-options ip-options prefix `DROP '
DROP all -- anywhere anywhere
[root@gw /tmp]$ cat nat_rules
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:VSERVER - [0:0]
-A PREROUTING -d 212.1.xxx.xx -j VSERVER
-A PREROUTING -d 10.7.14.88 -j VSERVER
-A VSERVER -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.168.0.254:80
-A POSTROUTING -o ppp0 ! -s 212.1.xx.xx -j MASQUERADE
-A POSTROUTING -o vlan1 ! -s 10.7.14.88 -j MASQUERADE
-A POSTROUTING -o br0 -s 192.168.0.0/24 -d 192.168.0.0/24 -j MASQUERADE
COMMIT