前提・実現したいこと
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