LINUX.ORG.RU
ФорумAdmin

iptables: подмена IP


0

0

Итак, у нас имеется роутерная тачка, выступающая в качестве сервака, и домашняя, которая ходит через этот роутер.

конфиг роутера:

$ cat /etc/network/interfaces
## This file describes the network interfaces available on your system
## and how to activate them. For more information, see interfaces(5).

## The loopback network interface
auto lo
iface lo inet loopback

## The primary network interface
allow-hotplug eth0
#auto eth0
#iface eth0 inet dhcp
iface eth0 inet static
address 10.0.32.208
netmask 255.255.255.0
gateway 10.0.32.254

up route add -net 10.0.0.0/8 gw 10.0.32.254
up route add -net 192.168.0.0/16 gw 10.0.32.254
up route add -net 172.16.0.0/12 gw 10.0.32.254
up route add -net 95.69.128.0 netmask 255.255.224.0 gw 10.0.32.254
up route add -host 195.69.244.2 gw 10.0.32.254
up route del default

## The secondary network interface
allow-hotplug eth1
iface eth1 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255

up route add -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.0.1

конфиг домашней тачки:

$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
#iface eth0 inet dhcp
iface eth0 inet static
address 192.168.0.2
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1

скрипт iptables для NAT:

#!/bin/bash
iptables -F
iptables -t nat -F
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
export LAN=eth1
export WAN=ppp0
iptables -I INPUT 1 -i ${LAN} -j ACCEPT
iptables -I INPUT 1 -i lo -j ACCEPT
iptables -A INPUT -p UDP --dport bootps -i ! ${LAN} -j REJECT
iptables -A INPUT -p UDP --dport domain -i ! ${LAN} -j REJECT
iptables -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -I FORWARD -i ${LAN} -d 192.168.0.0/255.255.255.0 -j DROP
iptables -A FORWARD -i ${LAN} -s 192.168.0.0/255.255.255.0 -j ACCEPT
iptables -A FORWARD -i ${WAN} -d 192.168.0.0/255.255.255.0 -j ACCEPT
iptables -A FORWARD -i eth0 -d 192.168.0.0/255.255.255.0 -j ACCEPT
#iptables -A OUTPUT 1 -i ${LAN} -j ACCEPT
#iptables -A OUTPUT 1 -i lo -j ACCEPT
##############################################
#Torrents                                    #
##############################################
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 61926 -j DNAT --to-destination 192.168.0.2:61926
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 61926 -j DNAT --to-destination 192.168.0.2:61926
iptables -A FORWARD -d 192.168.0.2 -p tcp --dport 61926 -j ACCEPT
iptables -A FORWARD -d 192.168.0.2 -p udp --dport 61926 -j ACCEPT
###############################################
#DC++                                         #
###############################################
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 35477 -j DNAT --to-destination 192.168.0.2:35477
iptables -A FORWARD -d 192.168.0.2 -p tcp --dport 35477 -j ACCEPT
#
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 35466 -j DNAT --to-destination 192.168.0.2:35466
iptables -A FORWARD -d 192.168.0.2 -p udp --dport 35466 -j ACCEPT
#
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 35455 -j DNAT --to-destination 192.168.0.2:35455
iptables -A FORWARD -d 192.168.0.2 -p tcp --dport 35455 -j ACCEPT
#
iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done

значит на роутере-сервере запущен Verlihub. когда я захожу на хаб, то я виден под внутренним IP (192.168.0.2), а не под внешним (ставил listen_ip 10.0.32.208 в верли и коннектился к 10.0.32.208 - все равно пишет внутренний). В настройках DC++ (linuxdcpp) стоит внешний IP, если я ставлю внутренний - выкидывает с хабов и пишет, что 192.168.0.2 != 10.0.32.208. собственно весь вопрос заключается в том, как зделать, чтобы на своем хабе я был виден с внешним IP. squid не предлагать:)

★★★★★

Если маскарад в построутинге включен — значит, заголовки исходящих пакетов физически не содержат внутренних адресов. Какой из этого вывод? Правильно, глючный linuxdcpp.

nnz ★★★★
()
Ответ на: комментарий от leg0las

Если нат настроил правильно то значит софт передаёт IP.

true_admin ★★★★★
()
Ответ на: комментарий от sdio

да, не доходит.

предложения какие-либо есть?

leg0las ★★★★★
() автор топика
Ответ на: комментарий от nnz

Не понял. Как это?

Ну покажи мне путь пакета в терминах iptables

192.168.0.2 --> 192.168.0.1 (PREROUTING->INPUT) ... продолжи

sdio ★★★★★
()
Ответ на: комментарий от sdio

192.168.0.2 ⇒ 192.168.0.1 (PREROUTING ⇒ INPUT ⇒ локальный процесс или ядро)
Такой путь проходят пакеты, адресованные 192.168.0.1.

А если они уходят дальше, получается
192.168.0.2 ⇒ 192.168.0.1 (PREROUTING ⇒ FORWARD ⇒ POSTROUTING) ⇒ следующий хост

nnz ★★★★
()
Ответ на: комментарий от sdio

>Дальше то они не уходят в нашем случае

А-а. Так и знал, что кто-то из нас тупит :) Перечитал топик повнимательнее, доперло.

nnz ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.