LINUX.ORG.RU

Сообщения alexg

 

SQLAlchemy. Добавить запись, ссылающуюся на две родительские

Пытаюсь вставить запись, ссылающуюся на две родительские:

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.orm import relationship

from sqlalchemy.ext.declarative import declarative_base

from sqlalchemy import Column
from sqlalchemy import Integer
from sqlalchemy import String
from sqlalchemy import ForeignKey

Base = declarative_base()
engine = create_engine('sqlite://')
Session = sessionmaker(engine)


class Parent(Base):
    __tablename__ = 'Parent'

    link = Column('link', Integer, primary_key=True, autoincrement=True)
    name = Column('c_name', String)

    child = relationship('Child')


class Parent2(Base):

    __tablename__ = 'Parent2'

    link = Column('link', Integer, primary_key=True, autoincrement=True)
    name = Column('c_name', String)

    child = relationship('Child')


class Child(Base):
    __tablename__ = 'Child'

    link = Column('link', Integer, primary_key=True, autoincrement=True)
    parent = Column('f_parent', Integer, ForeignKey('Parent.link'), nullable=False)
    parent2 = Column('f_parent2', Integer, ForeignKey('Parent2.link'), nullable=False)
    name = Column('c_name', String)


Base.metadata.create_all(engine)
session = Session()


parent = Parent(name='qwe')
parent2 = Parent2(name='qwerty')

session.add(parent)
session.add(parent2)
session.commit()

child = Child(name='child')

parent.child.append(child)
parent2.child.append(child)

session.add_all([parent, parent2])

session.commit()

Получаю ошибку:

(sqlite3.IntegrityError) NOT NULL constraint failed: Child.f_parent2 [SQL: INSERT INTO «Child» (f_parent, f_parent2, c_name) VALUES (?, ?, ?)] [parameters: (1, None, 'child')]

Как правильно вставить такую запись?

 , ,

alexg
()

Маршрутизация трафика (iproute)

Пытаюсь маршрутизировать трафик с локального интерфейса (eth0/172.17.169.40) через дополнительную таблицу:

$ cat /etc/iproute2/rt_tables

400 custom
$ ip rule list

0:	from all lookup local 
32763:	from 192.168.0.0/16 lookup custom 
32764:	from 172.16.0.0/12 lookup custom 
32765:	from 10.0.0.0/8 lookup custom 
32766:	from all lookup main 
32767:	from all lookup default 

$ ip route show table custom

default via 172.17.169.254 dev eth0 
$ ip route show table main

default via 172.17.169.254 dev eth0  proto static  metric 100 
172.17.169.0/24 dev eth0  proto kernel  scope link  src 172.17.169.40  metric 100 
192.168.17.194 via 172.17.169.200 dev eth0 
$ ip route show table local

broadcast 127.0.0.0 dev lo  proto kernel  scope link  src 127.0.0.1 
local 127.0.0.0/8 dev lo  proto kernel  scope host  src 127.0.0.1 
local 127.0.0.1 dev lo  proto kernel  scope host  src 127.0.0.1 
broadcast 127.255.255.255 dev lo  proto kernel  scope link  src 127.0.0.1 
broadcast 172.17.169.0 dev eth0  proto kernel  scope link  src 172.17.169.40 
local 172.17.169.40 dev eth0  proto kernel  scope host  src 172.17.169.40 
broadcast 172.17.169.255 dev eth0  proto kernel  scope link  src 172.17.169.40 

Теперь с консоли сервера пытаюсь получить доступ к 192.168.17.194, но трафик идет через 172.17.169.200

$ ip route get 192.168.17.194
192.168.17.194 via 172.17.169.200 dev eth0  src 172.17.169.40 
    cache 

Но

$ ip route get 192.168.17.194 from 172.17.169.40
192.168.17.194 from 172.17.169.40 via 172.17.169.254 dev eth0 
    cache 

Для уверенности добавляю еще правила:

$ ip rule list

0:	from all lookup local 
32760:	from all to 171.17.169.40 lookup custom 
32761:	from all oif eth0 lookup custom 
32762:	from 172.17.169.40 lookup custom 
32763:	from 192.168.0.0/16 lookup custom 
32764:	from 172.16.0.0/12 lookup custom 
32765:	from 10.0.0.0/8 lookup custom 
32766:	from all lookup main 
32767:	from all lookup default 

Результат тот же.

В чем ошибка?

 

alexg
()

Policy Routing. Проблемы

Добры день Есть шлюз, который подключается к удаленной сети посредством Kerio VPN Client, при подключении формируется маршрут в удаленную сеть вида:

ip r l
172.17.174.64/27 dev eth0  proto kernel  scope link  src 172.17.174.80 
10.0.0.0/8 via 10.253.245.1 dev kvnet  proto none  metric 1 onlink 
default via 172.17.174.94 dev eth0 
Проблема в том, что в диапазоне 10.0.0.0/8 локальная сеть, соответственно, после того, как VPN канал поднят, связь до шлюза пропадает и удаленная сеть не видна. Думаю решить это средствами Policy Routing:

Создал доп. таблицу маршрутизации custom:

ip route show table custom
10.39.1.70 dev kvnet  scope link 
default via 172.17.174.94 dev eth0 
172.17.174.94 - адрес моего внутреннего маршрутизатора

10.39.1.70 - узел удаленной сети

Добавил правила:

ip rule
0:	from all lookup local 
32762:	from 10.17.17.0/24 lookup custom 
32763:	from 10.39.1.70 lookup custom 
32766:	from all lookup main 
32767:	from all lookup default 
Удаленный хост доступен, но проблема в том, что подсетей у нас несколько, к тому же необходимо помнить о необходимости внесения изменений при добавлении новых локальных подсетей.

Поэтому было принято решение маркировать трафик по интерфейсам:

iptables -t mangle -L -v -n
Chain PREROUTING (policy ACCEPT 19 packets, 1053 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   29  1518 CONNMARK   all  --  eth0   *       0.0.0.0/0            0.0.0.0/0            CONNMARK set 0x1
    0     0 CONNMARK   all  --  kvnet  *       0.0.0.0/0            0.0.0.0/0            CONNMARK set 0x1

Chain INPUT (policy ACCEPT 11 packets, 573 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 9 packets, 409 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 9 packets, 409 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    9   409 CONNMARK   all  --  *      *       0.0.0.0/0            0.0.0.0/0            CONNMARK restore

И перенаправлять его:

ip rule 
0:	from all lookup local 
32765:	from all fwmark 0x1/0x1 lookup custom 
32766:	from all lookup main 
32767:	from all lookup default 

Но такая схема не работает, где-то ошибка. Как можно выяснить причины того, что пакеты не ходят?

И второй вопрос: Можно ли как-нибудь обеспечить доступ к VPN шлюзу из локальной сети? Судя по этой картинке решение о маршрутизации исходящего пакета принимается до mangle\OUTPUT и он ответные пакеты будут всегда уходить в удаленную сеть?

 ,

alexg
()

Netfilter не работает apt-get

Возможно вопрос банальный, но никак не пойму почему у меня не работает apt-get

iptables -S

-P INPUT DROP
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i venet0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i venet0 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -i venet0 -p tcp -m tcp --dport 5432 -j ACCEPT

При этом:

apt-get update
0% [Connecting to archive.ubuntu.com (2001:67c:1560:8001::14)] [Connecting to...

 

alexg
()

Настройка Veth интерфейса

Пытаюсь настроить Veth интерфейс. Виртуальная машина видит только HN, HN видит все устройства в сети (172.XXX.XXX.70/27).

Данные HN: виртуальная машина ESXi, установлена CentOS 6.6, виртуальные адаптеры типа E1000.

Настройки HN:

uname -a
2.6.32-042stab102.9 #1 SMP Fri Dec 19 20:34:40 MSK 2014 x86_64 x86_64 x86_64 GNU/Linux

ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:5B:54:9C  
          inet addr:192.XXX.XXX.19  Bcast:192.XXX.XXX.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe5b:549c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3996 errors:0 dropped:0 overruns:0 frame:0
          TX packets:256 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:308124 (300.9 KiB)  TX bytes:49567 (48.4 KiB)

eth1      Link encap:Ethernet  HWaddr 00:0C:29:5B:54:A6  
          inet6 addr: fe80::20c:29ff:fe5b:54a6/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:318 (318.0 b)  TX bytes:1104 (1.0 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:1278 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1278 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:194737 (190.1 KiB)  TX bytes:194737 (190.1 KiB)

venet0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet6 addr: fe80::1/128 Scope:Link
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:3 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

veth100.0 Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF  
          inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7 errors:0 dropped:1 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:188 (188.0 b)  TX bytes:420 (420.0 b)

vmbr0     Link encap:Ethernet  HWaddr 00:0C:29:5B:54:A6  
          inet addr:172.XXX.XXX.70  Bcast:172.XXX.XXX.95  Mask:255.255.255.224
          inet6 addr: fe80::20c:29ff:fe5b:54a6/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:464 (464.0 b)  TX bytes:636 (636.0 b)
ip r l:

172.XXX.XXX.64/27 dev vmbr0  proto kernel  scope link  src 172.XXX.XXX.70 
192.XXX.XXX.0/24 dev eth0  proto kernel  scope link  src 192.XXX.XXX.19 
169.254.0.0/16 dev eth0  scope link  metric 1002 
169.254.0.0/16 dev vmbr0  scope link  metric 1004 
default via 192.XXX.XXX.254 dev eth0
iptables
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
 1191  180K ACCEPT     all  --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED 
   22   792 ACCEPT     icmp --  any    any     anywhere             anywhere            
  110  6040 ACCEPT     all  --  lo     any     anywhere             anywhere            
    2   128 ACCEPT     tcp  --  any    any     anywhere             anywhere            state NEW tcp dpt:ssh 
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere            
  942 89313 REJECT     all  --  any    any     anywhere             anywhere            reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere            
    3   276 REJECT     all  --  any    any     anywhere             anywhere            reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 21 packets, 1417 bytes)
 pkts bytes target     prot opt in     out     source               destination         
 1173  200K ACCEPT     tcp  --  any    any     anywhere             anywhere     
sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 1
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-arptables = 0
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.conf.default.proxy_arp = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
bridge name	bridge id		STP enabled	interfaces
vmbr0		8000.000c295b54a6	no		eth1
							veth100.0

Настройки OpenVZ:

echo 'EXTERNAL_SCRIPT="/usr/sbin/vznetaddbr"' > /etc/vz/vznet.conf

Настройки VE:

vzctl create 100 --ostemplate ubuntu-14.04-x86 --config vswap-256m
vzctl set 100 --netif_add eth0,,,FE:FF:FF:FF:FF:FF,vmbr0 --save

ifconfig
eth0      Link encap:Ethernet  HWaddr 00:18:51:1a:55:24  
          inet addr:172.XXX.XXX.71  Bcast:172.XXX.XXX.95  Mask:255.255.255.224
          inet6 addr: fe80::218:51ff:fe1a:5524/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3 errors:0 dropped:2 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:420 (420.0 B)  TX bytes:188 (188.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
ip r l:

172.XXX.XXX.64/27 dev eth0  proto kernel  scope link  src 172.XXX.XXX.71
iptables
Chain INPUT (policy ACCEPT 14 packets, 1316 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 19 packets, 1736 bytes)
 pkts bytes target     prot opt in     out     source               destination
sysctl -p
net.ipv4.ip_forward = 1

Кроме ARP запросов никакой сетевой активности ни в HN, ни в VE не вижу: HN:

tcpdump -s1500 -i any -vvv -n '(dst host 172.XXX.XXX.71) or (src host 172.XXX.XXX.71)'

tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 1500 bytes
08:49:03.375589 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.XXX.XXX.71 tell 172.XXX.XXX.91, length 46
08:49:03.375602 ARP, Ethernet (len 6), IPv4 (len 4), Reply 172.XXX.XXX.71 is-at 00:18:51:1a:55:24, length 28

VE:

tcpdump -s1500 -i any -vvv -n

tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 1500 bytes
08:50:03.195426 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.XXX.XXX.71 tell 172.XXX.XXX.91, length 46
08:50:03.195440 ARP, Ethernet (len 6), IPv4 (len 4), Reply 172.XXX.XXX.71 is-at 00:18:51:1a:55:24, length 28

Как заставить сеть ВМ нормально работать?

 , , ,

alexg
()

RSS подписка на новые темы