質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Router

Routerは、異なるネットワーク同士を相互に接続するための通信機器。インターネットでのデータを自動的に振り分け、一つのインターネット回線を複数のコンピュータで使用することが可能です。DHCPによりIPアドレスを自動的に割振りすることもできます。

IPv4

IPv4(Internet Protocol version 4)は、インターネットプロトコルの一つ。インターネットに繋がったコンピューターや機器を識別するためのIPアドレスを32ビット表記で表わします。しかしIPv4は、限界があるため、IPv6が次世代プロトコルとして注目されています。

iptables

iptablesは、一般的なLinuxに備わっているパケットフィルタリング型のファイアウォール機能。パケットフィルタリングルールおよびネットワークアドレス変換ルールを適用することが可能です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

1回答

2260閲覧

Linux CentOS7 のルーターで ping が疎通しない

Takumi.dev

総合スコア10

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Router

Routerは、異なるネットワーク同士を相互に接続するための通信機器。インターネットでのデータを自動的に振り分け、一つのインターネット回線を複数のコンピュータで使用することが可能です。DHCPによりIPアドレスを自動的に割振りすることもできます。

IPv4

IPv4(Internet Protocol version 4)は、インターネットプロトコルの一つ。インターネットに繋がったコンピューターや機器を識別するためのIPアドレスを32ビット表記で表わします。しかしIPv4は、限界があるため、IPv6が次世代プロトコルとして注目されています。

iptables

iptablesは、一般的なLinuxに備わっているパケットフィルタリング型のファイアウォール機能。パケットフィルタリングルールおよびネットワークアドレス変換ルールを適用することが可能です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

3クリップ

投稿2019/01/29 07:24

前提・実現したいこと

Linux CentOS7 にてルーターを構築しています。

ルーター IP
192.168.0.3

クライアント(同じくCentOS7)
192.168.0.2

にて
クライアント→ルーター→外部サーバー
へpingを送ると
ルーターでIPマスカレードされて外部サーバーに到達し、返答を受信
ルーターでIP変換されクライアント宛に返答を送信
までは確認出来たのですが、
クライアント側では ping の結果が応答なし
tcpdumpでも応答のパケットを受信していないようです。

発生している問題・エラーメッセージ

例:
外部サーバー 8.8.8.8(サンプルとしてクラウドDNS)に
クライアントよりpingを送信

クライアントの ip route にて
192.168.0.3 ルーター経由で送信するようにしているため
ルーター→外部サーバーに ping が飛ぶのは
ルーターの tcpdump で確認済

16:14:20.349283 IP (tos 0x0, ttl 63, id 33624, offset 0, flags [DF], proto ICMP (1), length 84) [GLOBAL IP] > google-public-dns-a.google.com: ICMP echo request, id 17946, seq 1, length 64 16:14:20.354159 IP (tos 0x0, ttl 63, id 10099, offset 0, flags [none], proto ICMP (1), length 84) google-public-dns-a.google.com > [GLOBAL IP]: ICMP echo reply, id 17946, seq 1, length 64

ping の応答が返ってきて
ルーター→クライアント通信で使うNICのtcmpdumpでも
以下のように応答が送信される事を確認済

16:12:05.906462 IP (tos 0x0, ttl 64, id 49993, offset 0, flags [DF], proto ICMP (1), length 84) 192.168.0.2 > google-public-dns-a.google.com: ICMP echo request, id 17933, seq 1, length 64 16:12:05.907399 IP (tos 0x0, ttl 121, id 44097, offset 0, flags [none], proto ICMP (1), length 84) google-public-dns-a.google.com > 192.168.0.2: ICMP echo reply, id 17933, seq 1, length 64

この時点で ルーターのルーティング設定や
IPマスカレードは問題なさそうなのですが
クライアント側で応答が受信できない原因が分からず困っています。

systemctl stop firewalld

で firewalld をルーター・クライアント共に停止しても同様でした。

何か分かる事あれば
よろしくお願い致します。

ルーターの設定

eth0: 外部通信用NIC
eth1: 192.168.0.3 プライベートネットワーク用NIC

ルーティング

192.168.0.0/24 dev eth1 proto kernel scope link src 192.168.0.3 metric 101
cat /etc/sysconfig/network # Created by anaconda NOZEROCONF=yes FORWARD_IPV4=yes
cat /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE="Ethernet" BOOTPROTO="dhcp" DEFROUTE="yes" PEERDNS="yes" PEERROUTES="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_FAILURE_FATAL="no" NAME="eth0" DEVICE="eth0" ONBOOT="yes" ZONE=public
cat /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE="eth1" IPADDR="192.168.0.3" NETMASK="255.255.255.0" TYPE="Ethernet" ONBOOT="yes" BOOTPROTO="static" ZONE=public
for f in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 2 > $f done for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do echo 0 > $f done for f in /proc/sys/net/ipv4/conf/*/send_redirects; do echo 0 > $f done for f in /proc/sys/net/ipv4/conf/*/accept_source_route; do echo 1 > $f done
vim /etc/sysctl.d/90-ipsec.conf net.ipv4.ip_forward = 1

ルーターのファイアーウォールの設定

firewall-cmd --zone=trusted --add-source=192.168.0.0/24 --permanent masquerade: yes
firewall-cmd --direct --get-all-rules ipv4 nat POSTROUTING 0 -o eth0 -j MASQUERADE ipv4 filter FORWARD 0 -i eth1 -o eth0 -j ACCEPT ipv4 filter FORWARD 0 -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT

クライアントの設定

ほぼ初期状態です。

8.8.8.8 via 192.168.0.3 dev eth1
firewall-cmd --zone=trusted --add-source=192.168.0.0/24 --permanent

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

over

2019/01/29 07:42

こちらが原因か不明ですが、ip_forwardを設定するファイルが間違っているような気が。正しくは「/proc/sys/net/ipv4/ip_forward」ではないかと...構築にあたり参照したサイトをポインタすればより良い回答が得られるかもしれません。
Takumi.dev

2019/01/29 08:03 編集

over様、ありがとうございます。一時的に設定を反映する場合、ご指摘のファイルとなりますが、 永続的に設定を反映する場合、こちらのファイルで問題ないようです、cat /proc/sys/net/ipv4/ip_forward の値は 1 となっており、設定は反映されている状況でした。ご回答ありがとうございました。
TaichiYanagiya

2019/01/29 11:55

クライアントのネットワークインターフェースが eth1 とのことですが、eth0 もあるのですか? もし、そうであれば、"ip addr", "ip route" の出力を質問文に追記してください。
guest

回答1

0

外しているかもしれませんが、rp_filter =2 を rp_filter =0 にしてみたらどうなりますか?

投稿2019/01/29 08:17

ssasaki

総合スコア1167

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問