kumikoohashi
2018年9月4日 9時56分
お世話になっております。大橋です。
続けての投稿で申し訳ありません。
色々なものを見ながらネットワークの設定をしているのですが、やりたいことが全部実現できずにいます。
インフラに詳しくなくてすみません。
ネットワークA:the0で、機器との接続(すべて固定IP)
ネットワークB:ppp0で、インターネット接続。固定IPではないが、定期的にIPアドレスをサーバーに送るプログラムが稼働中。
やりたいのに実現できていないこと
・ネットワークA内の機器を、G3経由でインターネットに接続する
DHCPのパターンはこちらのサイトに詳しく載っていたのですが、固定のときは何をすればいいのかがわかりませんでした。
・インターネット経由でG3にSSH接続する
eth0を使わない構成では実現できています。
すでに行った設定
1.nmcliで、simを追加、ppp0接続を作成
G3のマニュアルを参考にしました。
インターネットにpingが通じることを確認。
2.SSHサーバーのインストールと起動
ネットワークAなしで動作しているG3と同じ設定(パスワード必須/ルートログイン禁止)です。
ネットワークB内に繋いだPCからの接続で動作を確認しています。
3.nmtuiで、IP:111.111.0.1、サブネットマスク:255.255.0.0に固定
https://manual.atmark-techno.com/armadillo-iot-g3/armadillo-iotg-g3_sta… こちらを参考にしました。
B内でpingが通ることを確認。
4.デフォルトゲートウェイをdev ppp0にする
G3からA内の機器と、インターネットの両方にpingが通ることを確認。
デバイスのみの指定で、IPなどは指定していません。
5.A内の機器のデフォルトゲートウェイに、G3のIPを登録
6./etc/sysctl.conf を、 net.ipv4.ip_forward = 1 に
5までで繋がらなかったので、試しにやってみただけです。
他にどんな設定が必要なのでしょうか。
よろしくお願い申し上げます。
コメント
kumikoohashi
中村様
お世話になっております。大橋です。
教えてくださってありがとうございます。
有線LAN内の機器からの接続について、
dnsmasqなど仕組みは後で学びますが、取り急ぎで教えていただいたコマンドを実行したところ機器がインターネットにつながったので、
起動時に実行するようにしたのですが、起動時にエラーのようなものが出てつながりませんでした。
(機器側は、DNSサーバーとデフォルトゲートウェイの両方に、アルマジロの有線IPをいれました。)
起動順に問題があるのでしょうか。
rc.local のexitのすぐ上に
service sshd start
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
dnsmasq
(exit)
他に
/etc/network/if-up.d/static-routes が起動時に実行されます。
/sbin/route del default dev eth0
/sbin/route add default dev ppp0
この状態で起動すると
random: crng init done
random: 7 urandom warning(s) missed due to ratelimiting
こういったエラー?が出て、機器からはインターネットにつながりません。
ルーティングは起動から少し時間がかかります。
手動でもう一度実行すると、sshdは起動済み、iptables、ip_forwardは完了しますが、dnsmasq は、すでにポートが使用中、のようなエラーがでます。
メッセージを検索したところ、何か大きな処理を行おうとして、エラーが出たのかなとは思い、dnsmasqだけ最後に&をつけて非同期にしてみましたが変わらず。
どう書けばエラーを出さずに自動実行できますか。
SSHはこの問題が解決してからだと感じています。
よろしくお願いいたします。
y.nakamura
y.nakamura
y.nakamura
中村です。
sshサーバは2つ前の投稿で書いた方法で自動起動するようになっているものとします。
3G(ppp0)は正常に設定ができているものとします。
> 他に
> /etc/network/if-up.d/static-routes が起動時に実行されます。
> /sbin/route del default dev eth0
> /sbin/route add default dev ppp0
これらの設定は「ない」ものとします。
(Armadillo-G3のデフォルトの状態のまま)
他にもネットワークに関連する設定の変更や追加があれば、
すべてデフォルト状態に戻してください。
起動した状態で1度だけ、次のコマンドを手動で実行します。
IPアドレスは適当に変更してください。
# nmcli connection add type ethernet ifname eth0
# nmcli connection modify ethernet-eth0 ipv4.method manual ipv4.addresses 192.168.0.100/24
# nmcli connection up ethernet-eth0
ifconfigとrouteコマンドの結果は次のようになるはずです。
# ifconfig eth0 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.0.100 netmask 255.255.255.0 broadcast 192.168.0.255 inet6 fe80::5091:8666:55d4:5f11 prefixlen 64 scopeid 0x20<link> ether 00:11:0c:1b:81:75 txqueuelen 1000 (Ethernet) RX packets 2317 bytes 256393 (250.3 KiB) RX errors 0 dropped 74 overruns 0 frame 0 TX packets 221 bytes 24644 (24.0 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 # route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.141.135.222 0.0.0.0 UG 700 0 0 ppp0 10.141.135.222 0.0.0.0 255.255.255.255 UH 700 0 0 ppp0 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
ifconfigでeth0のIPアドレスやネットマスク、それから、
routeでデフォルトゲートウェイがppp0になっていること
(eth0がデフォルトゲートウェイになっていないこと)などを
確認してください。
/etc/rc.localのexitの直前に次の3行を追加します。
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward dnsmasq
// eth0につながる機器がDNSを必要としていなければ
// (IPアドレスでだけでインターネットにアクセスするのならば)
// 3つ目のdnsmasqは不要です。
再起動します。
--
なかむら
at_koseki
古関です。
> ・インターネット経由でG3にSSH接続する
> eth0を使わない構成では実現できています。
Network Managerの動作仕様で、3G/LTEとEthernetを同時に有効にした場合、
Ethernet側がデフォルトのルートとなっているのでは無いでしょうか。
以下のフォーラムが参考になると思います。
https://armadillo.atmark-techno.com/forum/armadillo/2907#comment-4824
kumikoohashi
古関様
お世話になっております。大橋です。
ご回答ありがごうございます。
すでにそちらの回答は検索して拝見していたのですが、恥ずかしながら、[有線LANのコネクション名] を、nmcli deviceやconnectionなど打った時の、どの項目を使えばいいのかわからずに、楽な書き方に逃げてしまいました。
今は、IPの書き方などの理解ができなくて、デバイス名だけで雑にルーティングを起動時に上書きしていています。
/etc/network/if-up.d/static-routes
/sbin/route del default dev eth0
/sbin/route add default dev ppp0
route -nの結果
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 ppp0
0.0.0.0 255.255.0.0 0.0.0.0 UG 1024 0 0 eth0
(delできていないがmetricでなんとかなっている気がするので放置)
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0
(これが機器との有線LANのネットワーク)
255.255.0.0 0.0.0.0 255.255.255.255 UH 1024 0 0 eth0
アルマジロ側からは有線で、デバイス側とインターネット側のどちらにもいくことができます。
しかし、上の中村様に教えていただいたようにも設定したのですが、LANケーブルを抜いてもppp側からは接続ができませんでした。
アルマジロはただのG3なので、G3Lと違ってファイヤーウォールの変更はいらないと認識しています。
ご案内いただいた書き方にすれば、状態は変わりますか。
よろしくお願いいたします。
kumikoohashi
(SSHについて追記です)
お世話になっております。大橋です。
インターネットからのSSHについては、VPSを中継にする方法が載っているのを見つけて、開発機で試してみました。
Armadillo-X1, Armadillo-IoT G3/G3L: 直接アクセスできないArmadilloにSSHで接続する方法
https://users.atmark-techno.com/blog/53/2896
(開発機ではsimが固定IPのためか、インターネットからでも直接SSHで繋がるのですが)
手動でコマンドを打って上の方法を試したところ、繋がりました。G3で、VPSへのssh接続を起動時に非同期で開始する方法のほうが、鍵の作成など含めても、難易度が低そうです。近日中に、現場にいって、非固定IPの本番機で試してみます。
y.nakamura
中村です。
> Network Managerの動作仕様で、3G/LTEとEthernetを同時に有効にした場合、
> Ethernet側がデフォルトのルートとなっているのでは無いでしょうか。
>
> 以下のフォーラムが参考になると思います。
> https://armadillo.atmark-techno.com/forum/armadillo/2907#comment-4824
少し補足させていただきます。
eth0のIPアドレスをDHCP取得にした場合や、
固定IPアドレス+ゲートウェイで設定した場合は、
eth0がデフォルトゲートウェイになってしまいますが、
eth0に固定IPアドレスだけ(ゲートウェイなし)設定した場合には、
他にゲートウェイになるインターフェース(ppp0など)があれば、
eth0がデフォルトゲートウェイになることはないようです。
固定IPアドレス+ゲートウェイというのは次のような設定です。
nmcli connection modify ethernet-eth0 ipv4.method manual ipv4.addresses "192.168.1.100/24 192.168.1.1"
eth0に固定IPアドレスだけ(ゲートウェイなし)というのは次のような設定です。
nmcli connection modify ethernet-eth0 ipv4.method manual ipv4.addresses 192.168.1.100/24
--
なかむら
y.nakamura
中村です。
自分の投稿への補足(半分訂正)です。
> 固定IPアドレス+ゲートウェイというのは次のような設定です。
> nmcli connection modify ethernet-eth0 ipv4.method manual ipv4.addresses "192.168.1.100/24 192.168.1.1"
jessieのnmlciではこの書式でゲートウェイを設定できましたが、
stretchでは怒られてしまいました。
次のようにゲートウェイを分けて指定しなければならないようです。
nmcli connection modify ethernet-eth0 ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1
// Armadillo-IoTG3のマニュアル2.0.0の固定IPの設定例は、
// この書式に変更されてましたが、今まで気づかず・・・。
--
なかむら
kumikoohashi
y.nakamura
2018年9月10日 0時32分
中村です。
> ネットワークA:the0で、機器との接続(すべて固定IP)
> ネットワークB:ppp0で、インターネット接続。固定IPではないが、定期的にIPアドレスをサーバーに送るプログラムが稼働中。
>
> やりたいのに実現できていないこと
> ・ネットワークA内の機器を、G3経由でインターネットに接続する
> DHCPのパターンはこちらのサイトに詳しく載っていたのですが、固定のときは何をすればいいのかがわかりませんでした。
NAT(IPマスカレード)の設定だと思います。
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
iptablesの設定の他に
> 6./etc/sysctl.conf を、 net.ipv4.ip_forward = 1 に
も必要ですが、設定ファイルを変更するのではなく、
コマンドラインから次のようにしてもOKです。
echo 1 > /proc/sys/net/ipv4/ip_forward
それから、eth0に接続した機器がDNSをひけるように、
AramdilloでDNSキャッシュサーバーを起動します。
dnsmasq
dnsmasqはDHCPサーバなど機能が豊富ですが、
DNSキャッシュサーバーとしてだけ使う場合は設定は不要です。
またdnsmasqは自分自身でデーモンになってくれます。
以上を手動で設定してOKならば、
この3つを/etc/rc.localあたりに記述すればいいでしょう。
> ・インターネット経由でG3にSSH接続する
> eth0を使わない構成では実現できています。
eth0を使わないときに動いているならば、
ルーティングの設定などのような気がします。
> 4.デフォルトゲートウェイをdev ppp0にする
とのことですが、route -n などで再確認してください。
// グローバルIPのSIMを持っていないので、
// この部分は私には確認できません。
--
なかむら