Добрый день. Обнаружил странную проблему. Есть сервер. На нем два фейса: 172.21.152.43 и 192.168.2.230. Есть pptpd сервер, настроенный на прием соединений с фейса 192.168.2.230. Проблема такая: если pptpd стратует раньше iptables, а именно _не_загружены_ модули:
iptable_nat 17646 0 (autoclean) ipt_REJECT 3384 0 (autoclean) ipt_state 568 0 (autoclean) ip_conntrack 19016 0 (autoclean) [iptable_nat ipt_state] iptable_filter 1772 0 (autoclean) ip_tables 12064 6 [iptable_nat ipt_REJECT ipt_state iptable_filter]
то все ок. Мона потом загрузить эти модули и правила iptables, все ок. При этом tcpdump -i eth0 -n proto 47 or port 1723 говорит:
19:45:38.161650 IP 192.168.2.207.1210 > 192.168.2.230.1723: S 1796767244:1796767244(0) win 65535 <mss 1460,nop,nop,sackOK> 19:45:38.161725 IP 192.168.2.230.1723 > 192.168.2.207.1210: S 3909164719:3909164719(0) ack 1796767245 win 5840 <mss 1460,nop,nop,sackOK> 19:45:38.162064 IP 192.168.2.207.1210 > 192.168.2.230.1723: P 1:157(156) ack 1 win 65535: pptp CTRL_MSGTYPE=SCCRQ PROTO_VER(1.0) FRAME_CAP(A) BEARER_CAP(A) MAX_CHAN(0) FIRM_REV(2600) [|pptp] 19:45:38.162174 IP 192.168.2.230.1723 > 192.168.2.207.1210: . ack 157 win 6432 19:45:38.169787 IP 192.168.2.230.1723 > 192.168.2.207.1210: P 1:157(156) ack 157 win 6432: pptp CTRL_MSGTYPE=SCCRP PROTO_VER(1.0) RESULT_CODE(1) ERR_CODE(0) FRAME_CAP() BEARER_CAP() MAX_CHAN(1) FIRM_REV(1) [|pptp] 19:45:38.170390 IP 192.168.2.207.1210 > 192.168.2.230.1723: P 157:325(168) ack 157 win 65379: pptp CTRL_MSGTYPE=OCRQ CALL_ID(16384) CALL_SER_NUM(38212) MIN_BPS(300) MAX_BPS(100000000) BEARER_TYPE(Any) FRAME_TYPE(E) RECV_WIN(64) PROC_DELAY(0) PHONE_NO_LEN(0) [|pptp] 19:45:38.185838 IP 192.168.2.230.1723 > 192.168.2.207.1210: P 157:189(32) ack 325 win 7504: pptp CTRL_MSGTYPE=OCRP CALL_ID(0) PEER_CALL_ID(16384) RESULT_CODE(1) ERR_CODE(0) CAUSE_CODE(0) CONN_SPEED(100000000) RECV_WIN(64) PROC_DELAY(0) PHY_CHAN_ID(0) 19:45:38.187261 IP 192.168.2.230 > 192.168.2.207: call 16384 seq 0 ack 4294967295 gre-ppp-payload
т.е. все гуд, все счастливы.
А если запускать pptpd когда загружены выше перечисленные модули, то tcpdump показывает следующее: 19:38:53.110867 IP 192.168.2.207.1198 > 192.168.2.230.1723: S 4206859207:4206859207(0) win 65535 <mss 1460,nop,nop,sackOK> 19:38:53.110950 IP 192.168.2.230.1723 > 192.168.2.207.1198: S 3485883488:3485883488(0) ack 4206859208 win 5840 <mss 1460,nop,nop,sackOK> 19:38:53.111292 IP 192.168.2.207.1198 > 192.168.2.230.1723: P 1:157(156) ack 1 win 65535: pptp CTRL_MSGTYPE=SCCRQ PROTO_VER(1.0) FRAME_CAP(A) BEARER_CAP(A) MAX_CHAN(0) FIRM_REV(2600) [|pptp] 19:38:53.111411 IP 192.168.2.230.1723 > 192.168.2.207.1198: . ack 157 win 6432 19:38:53.119247 IP 192.168.2.230.1723 > 192.168.2.207.1198: P 1:157(156) ack 157 win 6432: pptp CTRL_MSGTYPE=SCCRP PROTO_VER(1.0) RESULT_CODE(1) ERR_CODE(0) FRAME_CAP() BEARER_CAP() MAX_CHAN(1) FIRM_REV(1) [|pptp] 19:38:53.119864 IP 192.168.2.207.1198 > 192.168.2.230.1723: P 157:325(168) ack 157 win 65379: pptp CTRL_MSGTYPE=OCRQ CALL_ID(0) CALL_SER_NUM(38211) MIN_BPS(300) MAX_BPS(100000000) BEARER_TYPE(Any) FRAME_TYPE(E) RECV_WIN(64) PROC_DELAY(0) PHONE_NO_LEN(0) [|pptp] 19:38:53.135419 IP 192.168.2.230.1723 > 192.168.2.207.1198: P 157:189(32) ack 325 win 7504: pptp CTRL_MSGTYPE=OCRP CALL_ID(0) PEER_CALL_ID(0) RESULT_CODE(1) ERR_CODE(0) CAUSE_CODE(0) CONN_SPEED(100000000) RECV_WIN(64) PROC_DELAY(0) PHY_CHAN_ID(0) 19:38:53.137024 IP 172.21.152.43 > 192.168.2.207: call 0 seq 0 ack 4294967295 gre-ppp-payload
Причем что на втором фейсе pptpd даже не висит! Причем что правила могут быть не загружены (все ACCEPT), а просто висят эти модули. Куда копать ? Лично мне вообще не понятно почему pptpd начинает GRE сессию не с того ип, откуда пришло соединение...