pppを有効にすると全部つながらない
環境
VM環境
- Fedora release 16 (Verne)
- ppp-2.4.5
- rp-pppoe-3.11
ホスト側:
192.168.211.1
ゲスト側:
(eth0)192.168.211.138
(eth1)-
インストール
適当に。
設定
adsl-setupとかでやってもいいし、/etc/sysconfig/network-script/ifcfg-ppp0を作るのもいい。
多少変えてるけど殆どそのまま。まあとにかくETH=eth1ってこと。
USERCTL=no BOOTPROTO=dialup NAME=DSLppp0 DEVICE=ppp0 TYPE=xDSL ONBOOT=no PIDFILE=/var/run/pppoe-adsl.pid FIREWALL=MASQUERADE PING=. PPPOE_TIMEOUT=80 LCP_FAILURE=3 LCP_INTERVAL=20 CLAMPMSS=1412 CONNECT_POLL=6 CONNECT_TIMEOUT=0 DEFROUTE=yes SYNCHRONOUS=no ETH=eth1 PROVIDER=DSLppp0 USER=user01 PEERDNS=no DEMAND=no
起動
ipアドレスがあってはいけないらしい。
# ip addr flush dev eth1 # ifconfig eth1 eth1 Link encap:Ethernet HWaddr 00:0C:29:F4:91:AE UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3725 errors:0 dropped:0 overruns:0 frame:0 TX packets:1300 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:319576 (312.0 KiB) TX bytes:59327 (57.9 KiB)
いよいよ
# ifup ppp0
すると、ssh接続していたら切れた。
しょうがないので直接入って確認すると、こっちは問題なくつながってる。
# ifconfig ppp0 ppp0 Link encap:Point-to-Point Protocol inet addr:10.67.15.18 P-t-P:10.0.0.1 Mask:255.255.255.255 POINTOPOINT NOARP MULTICAST MTU:1492 Metric:1 RX packets:3 errors:0 dropped:0 overruns:0 frame:0 TX packets:3 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 RX bytes:30 (30.0 b) TX bytes:30 (30.0 b)
が、ping応答なし。何も帰ってこないし、タイムアウトにもならない(?)。
# ping 10.0.0.1 PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
さらに、ホストマシンも応答なし。
# ping 192.168.211.1 PING 192.168.211.1 (192.168.211.1) 56(84) bytes of data.
# ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:0C:29:F4:91:A4 inet addr:192.168.211.138 Bcast:192.168.211.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fef4:91a4/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:10750 errors:0 dropped:0 overruns:0 frame:0 TX packets:6574 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:3761754 (3.5 MiB) TX bytes:951351 (929.0 KiB)
なんとさらに。
# ping localhost PING localhost.localdomain (127.0.0.1) 56(84) bytes of data.
仕方なく一旦切ってみる。
# ifdown ppp0
状況変わらず。
# ping localhost PING localhost.localdomain (127.0.0.1) 56(84) bytes of data.
最終的に再起動で元に戻った。が、試行錯誤するうちに、なぜかiptablesを再起動すると元に戻ることを発見。
# systemctl restart iptables.service # ping localhost PING localhost.localdomain (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost.localdomain (127.0.0.1): icmp_req=1 ttl=64 time=0.082 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_req=2 ttl=64 time=0.057 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_req=3 ttl=64 time=0.056 ms ^C
こっちもOK
# ping -c 4 10.0.0.1 PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data. 64 bytes from 10.0.0.1: icmp_req=1 ttl=64 time=1.49 ms 64 bytes from 10.0.0.1: icmp_req=2 ttl=64 time=0.733 ms 64 bytes from 10.0.0.1: icmp_req=3 ttl=64 time=0.748 ms 64 bytes from 10.0.0.1: icmp_req=4 ttl=64 time=0.728 ms --- 10.0.0.1 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3004ms rtt min/avg/max/mdev = 0.728/0.927/1.499/0.330 ms
わかっていること
起動時に何か書き換えるのか?と思って。
- ifconfig eth0の結果は、どっちの状態でも一緒
- /etc/resolv.confも一緒。
- netstatの出力も一緒
- /proc/ioportsも一緒
- ip addrの出力も一緒
- (他にも色々比較したけど覚えてない...)
- 現象発生時にはrouteコマンドの表示に時間がかかる(内容は当然違うが)
とりあえずの対処
あきらめて放置してました。2ヶ月ほど。
本当の対処
/sbin/pppoe-connectの、
case "$FIREWALL" in STANDALONE) . /etc/ppp/firewall-standalone ;; MASQUERADE) . /etc/ppp/firewall-masq ;; esac
らへんをコメントアウトしちゃうと動きます。
補足
/etc/ppp/firewall-standaloneとかfirewall-masqって何だよ。とか、$FIREWALLが何者でなんか指定してるんだっけ。とか、ぜんぜん調べてません。
少なくとも、別の環境のCentOS(バージョン忘れた)では、問題なく動いてたので、Fedoraが原因か、ちょっと古いOSってのが原因か、その辺だと思います。
2014/2/5 追記
自分の記事をちゃんと読めと言う感じですが、わざわざscriptを書き換えなくても、
ifcfg-ppp0の中にある
FIREWALL=MASQUERADE
この行を消すとかすれば、問題ありません。
この機能がなんで使えないのかは...分かりません。