আমি একটি পিসি (কার্নেল আছে 3.2.0-23-জেনেরিক ) যা করেছে 192.168.1.2/24
করার জন্য কনফিগার eth0
ইন্টারফেস এবং ব্যবহার 192.168.1.1
এবং 192.168.1.2
জন্য অ্যাড্রেস tun0
ইন্টারফেস:
root@T42:~# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:16:41:54:01:93 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.2/24 scope global eth0
inet6 fe80::216:41ff:fe54:193/64 scope link
valid_lft forever preferred_lft forever
3: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
4: irda0: <NOARP> mtu 2048 qdisc noop state DOWN qlen 8
link/irda 00:00:00:00 brd ff:ff:ff:ff
5: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:13:ce:8b:99:3e brd ff:ff:ff:ff:ff:ff
inet 10.30.51.53/24 brd 10.30.51.255 scope global eth1
inet6 fe80::213:ceff:fe8b:993e/64 scope link
valid_lft forever preferred_lft forever
6: tun0: <POINTOPOINT,MULTICAST,NOARP> mtu 1500 qdisc pfifo_fast state DOWN qlen 100
link/none
inet 192.168.1.1 peer 192.168.1.2/32 scope global tun0
root@T42:~# ip route show dev eth0
192.168.1.0/24 proto kernel scope link src 192.168.1.2
root@T42:~#
উপরের মতো দেখা গেছে, tun0
প্রশাসনিকভাবে অক্ষম করা হয়েছে ( ip link set dev tun0 down
)। এখন যখন আমি এআরপি অনুরোধগুলি পাই 192.168.1.2
, পিসি সেই অনুরোধগুলির জবাব দেয় না:
root@T42:~# tcpdump -nei eth0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
15:30:34.875427 00:1a:e2:ae:cb:b7 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 60: Request who-has 192.168.1.2 tell 192.168.1.1, length 46
15:30:36.875268 00:1a:e2:ae:cb:b7 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 60: Request who-has 192.168.1.2 tell 192.168.1.1, length 46
15:30:39.138651 00:1a:e2:ae:cb:b7 > 00:1a:e2:ae:cb:b7, ethertype Loopback (0x9000), length 60:
^C
3 packets captured
3 packets received by filter
0 packets dropped by kernel
root@T42:~#
শুধু পরে আমার মোছা tun0
ইন্টারফেস ( ip link del dev tun0
) পিসি ARP অনুরোধ করার জন্য উত্তর দিতে হবে 192.168.1.2
উপর eth0
ইন্টারফেস।
রাউটিং টেবিলটি ঠিক আগের মতো এবং পরে একসাথে দেখায় ip link del dev tun0
:
root@T42:~# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.30.51.254 0.0.0.0 UG 0 0 0 eth1
10.30.51.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.1.0 192.168.1.2 255.255.255.0 UG 0 0 0 eth0
root@T42:~# ip link del dev tun0
root@T42:~# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.30.51.254 0.0.0.0 UG 0 0 0 eth1
10.30.51.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.1.0 192.168.1.2 255.255.255.0 UG 0 0 0 eth0
root@T42:~#
নীচে রাউটিং এন্ট্রি ইতিমধ্যে ip link set dev tun0 down
কমান্ড সহ সরানো হয়েছে :
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.1.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
যাইহোক, ip link del dev tun0
কমান্ডের আগে এবং পরে রাউটিং টেবিলগুলি ঠিক একই রকম হয় , কার্নেল যে আসল রাউটিংয়ের সিদ্ধান্ত নেবে তা হ'ল:
T42:~# ip route get 192.168.1.1
local 192.168.1.1 dev lo src 192.168.1.1
cache <local>
T42:~# ip link del dev tun0
T42:~# ip route get 192.168.1.1
192.168.1.1 dev eth0 src 192.168.1.2
cache ipid 0x8390
T42:~#
এটি কি প্রত্যাশিত আচরণ? কার্নেল কেন রাউটিং টেবিলটিকে উপেক্ষা করে?
tun0
ইন্টারফেস অক্ষম থাকে তবে কার্নেল রাউটিং টেবিলটিকে উপেক্ষা করে । ip route get
আমার আপডেট হওয়া প্রাথমিক পোস্টে কমান্ডের আউটপুট দেখুন । তবে, কার্নেল কেন এমন আচরণ করে?