LINUX.ORG.RU
ФорумAdmin

Проблемы с сетевым мостом


0

0

Здравствуйте!

Я дома сделал так: две сетевые: 1) интерфейс eth0 это локальное подключение провайдера интерфейс ppp0 vpn подключение к нему, тоесть внешка 2) интерфейс eth1 это сетевушка ко мне на ноутбук с виндой

вот интерфейсы:

auto [i][b]lo[/b][/i]
iface lo inet loopback
address 127.0.0.1
netmask 255.0.0.0

auto [i][b]eth0[/b][/i]
iface eth0 inet static
address 10.44.128.203
netmask 255.255.248.0
gateway 10.44.128.1
post-up pon corbina
pre-down poff corbina

auto[i][b] eth1[/b][/i]
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0
pre-up /var/lib/iptables/active.sh

сделал мост между интнерфесом eth1 и двумя eth0 и ppp0, тоесть дать ноутбуку и локальное подключение провайдера и виртуальное, внешнее виртуальное поднимает нормально вот post-up pon corbina pre-down poff corbina все ок, там все верно прописанно, на компе все работает.

получается:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:19:5b:fe:53:38 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.1/24 brd 192.168.1.255 scope global eth1
    inet6 fe80::219:5bff:fefe:5338/64 scope link 
       valid_lft forever preferred_lft forever
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:80:48:59:08:bc brd ff:ff:ff:ff:ff:ff
    inet 10.44.128.203/21 brd 10.44.135.255 scope global eth0
    inet6 fe80::280:48ff:fe59:8bc/64 scope link 
       valid_lft forever preferred_lft forever
5: tun0: <POINTOPOINT,UP,LOWER_UP> mtu 1462 qdisc pfifo_fast qlen 1000
    link/[65534] 
    inet 1.1.1.1/32 scope global tun0
45: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1460 qdisc pfifo_fast qlen 3
    link/ppp 
    inet 89.179.243.255 peer 85.21.0.51/32 scope global ppp0

сетевой мост делаю запуском скрипта из интерфейсов pre-up /var/lib/iptables/active.sh вот скрипт:

#!/bin/sh

IPTABLES=/sbin/iptables
DEPMOD=/sbin/depmod
MODPROBE=/sbin/modprobe

EXTID="ppp0"
EXTIF="eth0"

INTIF="eth1"

$DEPMOD -a

$MODPROBE ip_tables
$MODPROBE ip_conntrack
$MODPROBE ip_conntrack_ftp
$MODPROBE ip_conntrack_irc
$MODPROBE iptable_nat
$MODPROBE ip_nat_ftp
$MODPROBE ip_nat_irc

echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr

$IPTABLES -P INPUT ACCEPT
$IPTABLES -F INPUT 
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -F OUTPUT 
$IPTABLES -P FORWARD DROP
$IPTABLES -F FORWARD 
$IPTABLES -t nat -F

# локальный интерфейс

$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
$IPTABLES -A FORWARD -j LOG

$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE

# vpn интерфес

$IPTABLES -A FORWARD -i $EXTID -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $INTIF -o $EXTID -j ACCEPT
# $IPTABLES -A FORWARD -j LOG

$IPTABLES -t nat -A POSTROUTING -o $EXTID -j MASQUERADE

echo -e "...done Iptables.\n"

и тут все работает и локальный и интернет трафик нормально раздается, но возникает проблема иногда некоторые определенные ресурсы просто отказываются открываться, при этом в этот же момент смотрю на линухе, все открывает, при этом и пинг есть, nslookup адрес резовывет, по айпишнику тоже не заходит, и что странно на выборочных ресурсах, то на том домене, то на том, фаеров нет естестно, телнет по 80 порту тоже идет, пробовал на 5 браузерах, тоже самое, причем после sudo /etc/init.d/networking restart проблема то проходит, то нет, иногда вообще не помогает вот итог выполнения команды:

sudo /etc/init.d/networking restart
 * Reconfiguring network interfaces...                                          
SIOCDELRT: No such process
 * Stopping NTP server ntpd
   ...done.
-e ...done Iptables.

 * Stopping NTP server ntpd
   ...done.
или вот так:
sudo /etc/init.d/networking restart
 * Reconfiguring network interfaces...                                          
RTNETLINK answers: No such process
 * Stopping NTP server ntpd
   ...done.
-e ...done Iptables.

 * Stopping NTP server ntpd
                                                                            ...done.
[ OK ]
еще странный интерфес tun0, тунельный, я его не делал, в общем я замучался уже искать в чем ниполадка а найти не могу, поидее все должно идти, я думаю что просто скорее всего что-то иногда меняется, что исходящий трафик проходит, а входящий не всегда. и вот маршруты на всякий случай, может поможет:
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags Metric Ref Use Iface
mara-gw.corbina  10.44.128.1     255.255.255.255  UGH   0      0        0 eth0
mail.post.ru          10.44.128.1     255.255.255.255  UGH   0      0        0 eth0
vpn51-l0.msk.co   10.44.128.1     255.255.255.255  UGH   0      0        0 eth0
83.102.146.96      10.44.128.1     255.255.255.255  UGH   0      0        0 eth0
mara.corbina.ne   10.44.128.1     255.255.255.255  UGH   0      0        0 eth0
vpn86-l0.msk.co   10.44.128.1     255.255.255.255  UGH   0      0        0 eth0
85.21.138.208      10.44.128.1     255.255.255.255  UGH   0      0        0 eth0
earth.corbina.n     10.44.128.1     255.255.255.255  UGH   0      0        0 eth0
oneskelis.corbi      10.44.128.1     255.255.255.255  UGH   0      0        0 eth0
www.corbina.net    10.44.128.1     255.255.255.255  UGH   0      0        0 eth0
sip.corbina.net      10.44.128.1     255.255.255.255  UGH   0      0        0 eth0
78.107.69.98         10.44.128.1     255.255.255.255  UGH   0      0        0 eth0
10.13.10.0                    *               255.255.255.0      U        0      0        0 tun0
192.168.1.0                  *               255.255.255.0      U        0      0        0 eth1
85.21.90.0             10.44.128.1     255.255.255.0      UG     0      0        0 eth0
10.10.10.0                    *               255.255.255.0      U        0      0        0 tun0
85.21.79.0              10.44.128.1     255.255.255.0     UG      0      0        0 eth0
10.44.128.0                  *               255.255.248.0      U         0      0        0 eth0
link-local                       *               255.255.0.0          U        1000   0        0 eth0
10.0.0.0                  10.44.128.1     255.0.0.0            UG       0      0        0 eth0
default                          *               0.0.0.0                  U         0      0        0 ppp0
default                    10.44.128.1     0.0.0.0                 UG       100    0        0 eth0

а если напрямую, то все ок... может с MTU проблема, хотя не было бы выборочно на разных ресурсах, хотя и у разного трафика пакетики разные, просто по сути, у Ethernet 1500, у vpn 1460, получается что:

eth0 (mtu 1500) -> eth1(mtu 1500) -> ethernet ноутбка (1500) ppp0 (mtu 1460) -> хотя пинг с винды идет с разными размерами пакетов, вплоть до 10000, хотя я думаю ни просто на eth1 преобразовываются

Спасибо!

кошмар сколько лишних телодвижений. что нужно-то, скажи? я так понял что нужен не просто интернет на ноуте, а что-то еще.. но буков насколько много, что "что-то еще" я не просек. можно покороче?

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

вообще-то все работает, просто некоторые ресурсы не открываются через сетевой мост

adminnu
() автор топика
Ответ на: комментарий от zhiltsov

ну у меня и иесть нат на два интерфейса

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

в общем я сейчас точно заметил что определенные ресурсы с сервака нормально открываются, с винды нет, чтож такое))

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

У Вас mtu 1460 на ppp0, а в локалке mtu 1500. Здеь неоднократно обсуждалось. Что-то типа этого должно помочь.
iptables -t mangle -o ppp0 --insert FORWARD 1 -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu

http://www.opennet.ru/base/net/pppoe_mtu.txt.html

anonymous
()
Ответ на: комментарий от adminnu

[code]
#!/bin/sh
IPTABLES=/sbin/iptables
DEPMOD=/sbin/depmod
MODPROBE=/sbin/modprobe

EXTID="ppp0"
EXTIF="eth0"

INTIF="eth1"

$DEPMOD -a

$MODPROBE ip_tables
$MODPROBE ip_conntrack
$MODPROBE ip_conntrack_ftp
$MODPROBE ip_conntrack_irc
$MODPROBE iptable_nat
$MODPROBE ip_nat_ftp
$MODPROBE ip_nat_irc

echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr

$IPTABLES -P INPUT ACCEPT
$IPTABLES -F INPUT 
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -F OUTPUT 
# $IPTABLES -P FORWARD DROP
$IPTABLES -F FORWARD 
$IPTABLES -t nat -F

# локальный интерфейс

$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
# $IPTABLES -A FORWARD -j LOG

$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE

# vpn интерфес

$IPTABLES -A FORWARD -i $EXTID -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $INTIF -o $EXTID -j ACCEPT

######вот эта строчка помогла:
$IPTABLES -I FORWARD -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1460:1500 -j TCPMSS --clamp-mss-to-pmtu -o $EXTID

# $IPTABLES -A FORWARD -j LOG

$IPTABLES -t nat -A POSTROUTING -o $EXTID -j MASQUERADE

echo -e "...done Iptables.\n"
[/code]

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

а что правильнее: $IPTABLES -t mangle -o ppp0 --insert FORWARD 1 -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu

или

$IPTABLES -I FORWARD -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1460:1500 -j TCPMSS --clamp-mss-to-pmtu -o $EXTID

по сути вроде одно и тоже

adminnu
() автор топика
Ответ на: комментарий от anonymous

давайте рассмотрим отличия, в данном случае, между FORWARD и POSTROUTING. Через POSTROUTING выходят локальные пакеты и пакеты проходящие через эту машину, соответственно это правило будет проверяться для _любого_ пакета вышедшего с этой машины. Через FORWARD идут только транзитные пакеты, и это правило будет рассматриваться _только_для_транзитных_пакетов. Для локальных пакетов это правило не нужно, т.к. известен mtu. Получается что это правило в POSTROUTING кроме нагрузки на проц ничем не отличается. Правильнее в FORWARD.

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