2015-12-22 5 views
0

Я искал в Интернете ответ на утро, но я не могу заставить его работать. Если вы можете мне помочь, я был бы благодарен.iptables forward port over two eth cards

моя установка: сервер: eth1: 192.168.6.2 (подключен к Интернету -> WAN) eth0: 192.168.0.1 (LAN)

локальный компьютер: работает сервис по порту 8848, работающий на IP номер 192.168.0.3

Все плотно закрыто с IPtables так, чтобы люди в доме не могут получить доступ к локальной сети (192.168.0.x) и LAN использует Интернет через eth1:

### Set Variables 
IPTABLES='/sbin/iptables -v' 
WAN='eth1' 
LAN='eth0' 

#EXTERNAL_INTERFACE=WAN 
#EXTERNAL_IP=WAN_IP 
WAN_IP=$(ifconfig $WAN | grep 'inet[^6]' | sed 's/[a-zA-Z:]//g' | awk '{print $1}') 
LAN_IP=$(ifconfig $LAN | grep 'inet[^6]' | sed 's/[a-zA-Z:]//g' | awk '{print $1}') 
echo '########################################################## NAT config WAN <=> LAN #' 
$IPTABLES -t nat --append POSTROUTING --out-interface $WAN --jump MASQUERADE 
$IPTABLES --append FORWARD --in-interface $WAN --out-interface $LAN -m state --state RELATED,ESTABLISHED --jump ACCEPT 
$IPTABLES --append FORWARD --in-interface $LAN --out-interface $WAN --jump ACCEPT 

echo '############################### Allow unlimited traffic on the loopback interface #' 
$IPTABLES --append INPUT --in-interface lo --jump ACCEPT 
$IPTABLES --append OUTPUT --out-interface lo --jump ACCEPT 
$IPTABLES --append INPUT --in-interface $LAN --jump ACCEPT 
$IPTABLES --append OUTPUT --out-interface $LAN --jump ACCEPT 

echo '################################################ Allow unlimited outbound traffiC#' 
# Previously initiated and accepted exchanges bypass rule checking 
$IPTABLES --append INPUT -m state --state ESTABLISHED,RELATED  --jump ACCEPT 
$IPTABLES --append OUTPUT -m state --state NEW,ESTABLISHED,RELATED --jump ACCEPT 

Сервер (LAN 192.168.0.1 и WAN 192.168.6.2) запускает Apache, открывая, что один для WAN работает отлично (протестирован), и я могу получить доступ к веб-сайтам, подключающимся к 192.168.6.2 через IP-номер в диапазоне 192.168.6. х:

$IPTABLES --append INPUT --proto tcp --source 0/0 --dport 80 -m state --state NEW --jump ACCEPT 

так что я открыл порт 8848 первый:

$IPTABLES --append INPUT --proto tcp --source 0/0 --dport 8848 -m state --state NEW --jump ACCEPT 

Тогда я застреваю .. Я пробовал все, но я не могу найти решение для доступа к сервису по порту 8848 на 192.168.0.3 через 192.168.6.2 (команды, содержащие FORWARD, PREROUTING, POSTROUTING, MASQUERADE, DNAT nat)

Вы можете мне помочь?

[править] Чтобы завершить весь Баш скрипт, после установки переменной LAN и WAN я вымыться с:

echo '####################################################################### clear all #' 
$IPTABLES --flush 
$IPTABLES --delete-chain 
for TABLE in filter nat mangle; do 
    $IPTABLES --table $TABLE --flush  # delete the table's rules 
    $IPTABLES --table $TABLE --delete-chain # delete the table's chains 
    $IPTABLES --table $TABLE --zero   # zero the table's counters 
done 

И я заканчиваю мой Баш скрипт с:

echo '############################################################ Set default policies #' 
$IPTABLES --policy INPUT DROP 
$IPTABLES --policy OUTPUT DROP 
$IPTABLES --policy FORWARD ACCEPT 

echo '########################### Have these rules take effect when iptables is started #' 
/sbin/service iptables save 
/sbin/service iptables restart` 

[ANSWER/SOLUTION]

С благодарностью this page Я, наконец получил это работает робастно:

echo '################################################################# Port forwarding #' 
FROM_PORT='8848' 
TO_PORT='8848' 
TO_IP='192.168.0.3' 

$IPTABLES -t nat -A PREROUTING -p tcp -d $WAN_IP --dport $FROM_PORT -j DNAT --to-destination $TO_IP:$TO_PORT 
$IPTABLES -t nat -A POSTROUTING -p tcp -d $TO_IP --dport $TO_PORT -j SNAT --to-source $WAN_IP 

ответ

0

Попробуйте это:

/SBIN/Iptables -t нац -I PREROUTING -i eth1 -d 192.168.6.2 -p TCP --dport 8848 -j DNAT - по назначению 192.168.0.3:8848

Теперь вы можете получить доступ к 192.168.6.2:8848, и пакеты будут отправлены/отправлены в 192.168.0.3 на том же порту.

+0

Спасибо @Copche за ответ, я пробовал это, без радости. также localy (192.168.0.x) Я могу видеть эту услугу через: https://192.168.0.3:8848/ –

+0

Но вы заставили меня думать о чем-то другом! Я тестировал, могу ли я подключиться к 192.168.0.3:8848 через другой компьютер в локальной сети, вывод был о том, что брандмауэр Windows заблокировал внешние подключения! Спасибо, теперь он работает только с вашей единственной линией! –

+0

Вы бы были моим героем, если бы вы могли рассказать мне, как сделать то же самое, но также и с другого порта (скажем, 5432 WAN) до 8848 LAN –