这是我要解决的问题。有一个服务器(“远程系统”),我可以从本地计算机将其插入,但该远程系统没有Internet连接。我想使用基于ssh的VPN通过我的本地计算机为远程系统提供访问Internet的权限。我该如何完成?我尝试了以下方法,这似乎部分起作用。我的意思是“部分工作”是将连接数据包(同步数据包)发送到本地计算机,但无法建立与Internet的连接。我正在使用tcpdump捕获本地计算机上的数据包。本地计算机和远程系统都在运行centos 7。
设置 -注意:以下命令按顺序运行。user @ remote命令在远程服务器上运行,而user @ local命令在本地计算机上运行。
[user @ remote〜] $ ip地址显示 1:lo:mtu 65536 qdisc队列状态未知 链接/环回00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8范围主机lo 永久有效_lft永久首选_lft inet6 :: 1/128作用域主机 永久有效_lft永久首选_lft 2:eth0:mtu 1500 qdisc pfifo_fast状态UP qlen 1000 链接/以太AA:BB:CC:DD:EE:FF brd ff:ff:ff:ff:ff:ff inet AAA.BBB.CCC.DDD / 24 brd AAA.BBB.CCC.255作用域全局动态eth0 valid_lft 1785sec preferred_lft 1785sec inet6 EEEE:FFFF:GGGG:HHHH:IIII:JJJJ:KKKK:LLLL / 64范围全局noprefixroute动态 valid_lft 2591987sec preferred_lft 604787sec inet6 ABCD :: IIII:JJJJ:KKKK:LLLL / 64范围链接 永久有效_lft永久首选_lft
[user @ local〜] $ ip地址显示 1:lo:mtu 65536 qdisc队列状态未知 链接/环回00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8范围主机lo 永久有效_lft永久首选_lft inet6 :: 1/128作用域主机 永久有效_lft永久首选_lft 2:eth0:mtu 1500 qdisc pfifo_fast状态UP qlen 1000 链接/以太AA:BB:CC:DD:EE:FF brd ff:ff:ff:ff:ff:ff inet AAA.BBB.CCC.DDD / 24 brd AAA.BBB.CCC.255作用域全局动态eth0 valid_lft 1785sec preferred_lft 1785sec inet6 EEEE:FFFF:GGGG:HHHH:IIII:JJJJ:KKKK:LLLL / 64范围全局noprefixroute动态 valid_lft 2591987sec preferred_lft 604787sec inet6 ABCD :: IIII:JJJJ:KKKK:LLLL / 64范围链接 永久有效_lft永久首选_lft
在远程系统上创建tun0接口。
[user @ remote〜] $ sudo ip tuntap add tun0模式tun [user @ remote〜] $ ip地址显示 1:lo:mtu 65536 qdisc队列状态未知 链接/环回00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8范围主机lo 永久有效_lft永久首选_lft inet6 :: 1/128作用域主机 永久有效_lft永久首选_lft 2:eth0:mtu 1500 qdisc pfifo_fast状态UP qlen 1000 链接/以太AA:BB:CC:DD:EE:FF brd ff:ff:ff:ff:ff:ff inet AAA.BBB.CCC.DDD / 24 brd AAA.BBB.CCC.255作用域全局动态eth0 valid_lft 1785sec preferred_lft 1785sec inet6 EEEE:FFFF:GGGG:HHHH:IIII:JJJJ:KKKK:LLLL / 64范围全局noprefixroute动态 valid_lft 2591987sec preferred_lft 604787sec inet6 ABCD :: IIII:JJJJ:KKKK:LLLL / 64范围链接 永久有效_lft永久首选_lft 3:tun0:mtu 1500 qdisc noop state DOWN qlen 500 链接/无
在本地系统上创建tun0接口。
[user @ local〜] $ sudo ip tuntap add tun0模式tun [user @ local〜] $ ip地址显示 1:lo:mtu 65536 qdisc队列状态未知 链接/环回00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8范围主机lo 永久有效_lft永久首选_lft inet6 :: 1/128作用域主机 永久有效_lft永久首选_lft 2:eth0:mtu 1500 qdisc pfifo_fast状态UP qlen 1000 链接/以太AA:BB:CC:DD:EE:FF brd ff:ff:ff:ff:ff:ff inet AAA.BBB.CCC.DDD / 24 brd AAA.BBB.CCC.255作用域全局动态eth0 valid_lft 1785sec preferred_lft 1785sec inet6 EEEE:FFFF:GGGG:HHHH:IIII:JJJJ:KKKK:LLLL / 64范围全局noprefixroute动态 valid_lft 2591987sec preferred_lft 604787sec inet6 ABCD :: IIII:JJJJ:KKKK:LLLL / 64范围链接 永久有效_lft永久首选_lft 3:tun0:mtu 1500 qdisc noop state DOWN qlen 500 链接/无
为tun0分配一个IP地址并启动它:
[user @ local〜] $ sudo ip addr add 10.0.2.1/30 dev tun0 [user @ local〜] $ sudo ip链接设置dev tun0向上 [user @ local〜] $ ip addr show tun0 3:tun0:mtu 1500 qdisc pfifo_fast状态DOWN qlen 500 链接/无 inet 10.0.2.1/30范围全局tun0 永久有效_lft永久首选_lft
[user @ remote〜] $ sudo ip addr add 10.0.2.2/30 dev tun0 [user @ remote〜] $ sudo ip链接设置dev tun0向上 [user @ remote〜] $ ip addr show tun0 3:tun0:mtu 1500 qdisc pfifo_fast状态DOWN qlen 500 链接/无 inet 10.0.2.2/30范围全局tun0 永久有效_lft永久首选_lft
在远程和本地系统上修改sshd_config以启用隧道:
[user @ remote〜] $ sudo grep PermitTunnel / etc / ssh / sshd_config PermitTunnel点对点
[user @ local〜] $ sudo grep PermitTunnel / etc / ssh / sshd_config PermitTunnel点对点
创建ssh隧道:
[user @ local〜] $ sudo ssh -f -w0:0 root @ remote true root @ remote的密码: [user @ local〜] $ ps aux | grep root @ remote 根1851 0.0 0.0 76112 1348?Ss 23:12 0:00 ssh -f -w0:0 root @ remote true
使用新的IP地址在两台服务器上测试ping:
[user @ local〜] $ ping 10.0.2.2 -c 2 PING 10.0.2.2(10.0.2.2)56(84)个字节的数据。 从10.0.2.2开始的64个字节:icmp_seq = 1 ttl = 64时间= 1.68 ms 从10.0.2.2开始的64个字节:icmp_seq = 2 ttl = 64时间= 0.861 ms --- 10.0.2.2 ping统计信息--- 传输2个数据包,接收2个数据包,0%数据包丢失,时间1002ms rtt最小值/平均值/最大值/ mdev = 0.861 / 1.274 / 1.688 / 0.415 ms
[user @ remote〜] $ ping 10.0.2.1 -c 2 PING 10.0.2.1(10.0.2.1)56(84)字节数据。 从10.0.2.1开始的64个字节:icmp_seq = 1 ttl = 64时间= 0.589 ms 从10.0.2.1开始的64个字节:icmp_seq = 2 ttl = 64时间= 0.889 ms --- 10.0.2.1 ping统计信息--- 传输2个数据包,接收2个数据包,0%数据包丢失,时间1000ms rtt最小值/平均值/最大值/ mdev = 0.589 / 0.739 / 0.889 / 0.150 ms
[user @ remote〜] $路线 内核IP路由表 目标网关Genmask标志度量标准引用使用Iface 默认网关0.0.0.0 UG 100 0 0 eth0 10.0.2.0 0.0.0.0 255.255.255.252 U 0 0 0 tun0 AAA.BBB.CCC.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0 [user @ remote〜] $ ip路由显示 默认通过AAA.BBB.CCC.1 dev eth0 proto static metric 100 10.0.2.0/30 dev tun0原型内核作用域链接src 10.0.2.2 AAA.BBB.CCC.0 / 24 dev eth0原始内核作用域链接src AAA.BBB.CCC.31指标100
获取Google IP地址:
[user @ local〜] $ nslookup google.com 服务器:服务器 地址:服务器#53 非权威答案: 名称:google.com 地址:173.194.219.101 名称:google.com 地址:173.194.219.100 名称:google.com 地址:173.194.219.113 名称:google.com 地址:173.194.219.102 名称:google.com 地址:173.194.219.139 名称:google.com 地址:173.194.219.138
重要说明: 我在不同的时间运行了上面的命令,并得到了不同的结果。不要以为您的响应与上面的nslookup的响应相同。
由于Google的所有IP地址都以173.194.219开头,因此让所有这些IP地址通过本地计算机进行路由。
[user @ remote〜] $ sudo ip路由添加173.194.219.0/24 dev tun0 [user @ remote〜] $路线 内核IP路由表 目标网关Genmask标志度量标准引用使用Iface 默认网关0.0.0.0 UG 100 0 0 eth0 10.0.2.0 0.0.0.0 255.255.255.252 U 0 0 0 tun0 AAA.BBB.CCC.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0 173.194.219.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0 [user @ remote〜] $ ip路由显示 默认通过AAA.BBB.CCC.1 dev eth0 proto static metric 100 10.0.2.0/30 dev tun0原型内核作用域链接src 10.0.2.2 AAA.BBB.CCC.0 / 24 dev eth0原始内核作用域链接src AAA.BBB.CCC.31指标100 173.194.219.0/24 dev tun0范围链接
启用ip_forwarding:
[user @ local〜] $ grep ip_forward /etc/sysctl.conf net.ipv4.ip_forward = 1 [user @ local〜] $ sudo服务网络重启 重新启动网络(通过systemctl):[确定]
使用tcpdump在本地计算机上设置数据包捕获:
[user @ local〜] $ sudo tcpdump -nn -vv'port not 22'-i any tcpdump:在任何链接类型的LINUX_SLL(Linux熟)上侦听,捕获大小为65535字节
尝试从远程服务器连接到Google。
[user @ remote〜] $ openssl s_client -connect google.com:443 套接字:无主机路由 connect:错误号= 113
一旦在远程服务器上运行openssl命令,tcpdump就会捕获一些数据包:
10.0.2.2.52768> 173.194.219.102.443:标志[S],cksum 0x8702(正确),seq 994650730,win 29200,选项[mss 1460,sackOK,TS val 7701438 ecr 0,nop,wscale 7],长度0 00:49:33.247753 IP(tos 0x0,ttl 64,id 46037,偏移量0,标志[DF],proto TCP(6),长度60) 10.0.2.2.48774> 173.194.219.100.443:标志[S],cksum 0x47a7(正确),seq 2218733674,win 29200,选项[mss 1460,sackOK,TS val 7701439 ecr 0,nop,wscale 7],长度0 00:49:33.247883 IP(tos 0xc0,ttl 64,id 9538,偏移量0,标志[无],proto ICMP(1),长度88) 10.0.2.1> 10.0.2.2:无法访问ICMP主机173.194.219.100-禁止管理员,长度68 IP(tos 0x0,ttl 63,id 46037,偏移量0,标志[DF],原始TCP(6),长度60) 10.0.2.2.48774> 173.194.219.100.443:标志[S],cksum 0x47a7(正确),seq 2218733674,win 29200,选项[mss 1460,sackOK,TS val 7701439 ecr 0,nop,wscale 7],长度0 00:49:33.253068 IP(tos 0x0,ttl 64,id 26282,偏移量0,标志[DF],proto TCP(6),长度60) 10.0.2.2.51312> 173.194.219.101.443:标志[S],cksum 0x6ff8(正确),seq 2634016105,win 29200,选项[mss 1460,sackOK,TS val 7701443 ecr 0,nop,wscale 7],长度0 00:49:33.254771 IP(tos 0xc0,ttl 64,id 9539,偏移量0,标志[无],proto ICMP(1),长度88) 10.0.2.1> 10.0.2.2:无法访问ICMP主机173.194.219.101-禁止管理员,长度68 IP(tos 0x0,ttl 63,id 26282,偏移量0,标志[DF],原始TCP(6),长度60) 10.0.2.2.51312> 173.194.219.101.443:标志[S],cksum 0x6ff8(正确),seq 2634016105,win 29200,选项[mss 1460,sackOK,TS val 7701443 ecr 0,nop,wscale 7],长度0 00:49:33.258805 IP(tos 0x0,ttl 64,id 9293,偏移量0,标志[DF],proto TCP(6),长度60) 10.0.2.2.33686> 173.194.219.139.443:标志[S],cksum 0x542b(正确),seq 995927943,win 29200,选项[mss 1460,sackOK,TS val 7701450 ecr 0,nop,wscale 7],长度0 00:49:33.258845 IP(tos 0xc0,ttl 64,id 9540,偏移量0,标志[无],proto ICMP(1),长度88) 10.0.2.1> 10.0.2.2:无法访问ICMP主机173.194.219.139-禁止管理员,长度68 IP(tos 0x0,ttl 63,id 9293,偏移量0,标志[DF],proto TCP(6),长度60) 10.0.2.2.33686> 173.194.219.139.443:标志[S],cksum 0x542b(正确),seq 995927943,win 29200,选项[mss 1460,sackOK,TS val 7701450 ecr 0,nop,wscale 7],长度0 ^ C 已捕获13个数据包 过滤器接收到13个数据包 内核丢弃了0个数据包
使用tcpdump捕获的数据包表明已尝试建立连接(发送了同步数据包),但未收到任何信息。也有一条消息10.0.2.1 > 10.0.2.2: ICMP host 173.194.219.139 unreachable - admin prohibited, length 68
似乎表明存在问题。
有关如何解决此问题的任何建议?是否需要添加iptable规则?任何防火墙问题(firewall-d?)。
注意#1
从iptables-save输出:
[user @ local〜] $ sudo iptables -t nat -A POSTROUTING -s 10.0.2.2/32!-d 10.0.2.1/30 -j伪装-o eth0 [user @ local〜] $ sudo iptables-save #由iptables-save v1.4.21于2017年4月15日01:40:57生成 * nat :不接受[35:8926] :输入接受[1:84] :接受输出[6:439] :接受发布[6:439] :OUTPUT_direct-[0:0] :POSTROUTING_ZONES-[0:0] :POSTROUTING_ZONES_SOURCE-[0:0] :POSTROUTING_direct-[0:0] :POST_public-[0:0] :POST_public_allow-[0:0] :POST_public_deny-[0:0] :POST_public_log-[0:0] :PREROUTING_ZONES-[0:0] :PREROUTING_ZONES_SOURCE-[0:0] :PREROUTING_direct-[0:0] :PRE_public-[0:0] :PRE_public_allow-[0:0] :PRE_public_deny-[0:0] :PRE_public_log-[0:0] -A PREROUTING -j PREROUTING_direct -A PREROUTING -j PREROUTING_ZONES_SOURCE -A PREROUTING -j PREROUTING_ZONES -A输出-j OUTPUT_direct -A POSTROUTING -j POSTROUTING_direct -A POSTROUTING -j POSTROUTING_ZONES_SOURCE -A POSTROUTING -j POSTROUTING_ZONES -A POSTROUTING -s 10.0.2.2/32!-d 10.0.2.0/30 -j假面舞会 -A POSTROUTING_ZONES -o eth0 -g POST_public -A POSTROUTING_ZONES -g POST_public -A POST_public -j POST_public_log -A POST_public -j POST_public_deny -A POST_public -j POST_public_allow -A PREROUTING_ZONES -i eth0 -g PRE_public -A PREROUTING_ZONES -g PRE_public -A PRE_public -j PRE_public_log -A PRE_public -j PRE_public_deny -A PRE_public -j PRE_public_allow 承诺 #于2017年4月15日星期六完成01:40:57 #由iptables-save v1.4.21于2017年4月15日01:40:57生成 *缠结 :接受接受[169:18687] :输入接受[144:11583] :正接受[0:0] :输出接受[80:8149] :接受发布[80:8149] :FORWARD_direct-[0:0] :INPUT_direct-[0:0] :OUTPUT_direct-[0:0] :POSTROUTING_direct-[0:0] :PREROUTING_ZONES-[0:0] :PREROUTING_ZONES_SOURCE-[0:0] :PREROUTING_direct-[0:0] :PRE_public-[0:0] :PRE_public_allow-[0:0] :PRE_public_deny-[0:0] :PRE_public_log-[0:0] -A PREROUTING -j PREROUTING_direct -A PREROUTING -j PREROUTING_ZONES_SOURCE -A PREROUTING -j PREROUTING_ZONES -A输入-j INPUT_direct -A FORWARD -j FORWARD_direct -A输出-j OUTPUT_direct -A POSTROUTING -j POSTROUTING_direct -A PREROUTING_ZONES -i eth0 -g PRE_public -A PREROUTING_ZONES -g PRE_public -A PRE_public -j PRE_public_log -A PRE_public -j PRE_public_deny -A PRE_public -j PRE_public_allow 承诺 #于2017年4月15日星期六完成01:40:57 #由iptables-save v1.4.21于2017年4月15日01:40:57生成 *安全 :接受输入[2197:163931] :正接受[0:0] :OUTPUT ACCEPT [1229:185742] :FORWARD_direct-[0:0] :INPUT_direct-[0:0] :OUTPUT_direct-[0:0] -A输入-j INPUT_direct -A FORWARD -j FORWARD_direct -A输出-j OUTPUT_direct 承诺 #于2017年4月15日星期六完成01:40:57 #由iptables-save v1.4.21于2017年4月15日01:40:57生成 *生的 :接受接受[2362:184437] :OUTPUT ACCEPT [1229:185742] :OUTPUT_direct-[0:0] :PREROUTING_direct-[0:0] -A PREROUTING -j PREROUTING_direct -A输出-j OUTPUT_direct 承诺 #于2017年4月15日星期六完成01:40:57 #由iptables-save v1.4.21于2017年4月15日01:40:57生成 *过滤 :输入接受[0:0] :正接受[0:0] :输出接受[80:8149] :FORWARD_IN_ZONES-[0:0] :FORWARD_IN_ZONES_SOURCE-[0:0] :FORWARD_OUT_ZONES-[0:0] :FORWARD_OUT_ZONES_SOURCE-[0:0] :FORWARD_direct-[0:0] :FWDI_public-[0:0] :FWDI_public_allow-[0:0] :FWDI_public_deny-[0:0] :FWDI_public_log-[0:0] :FWDO_public-[0:0] :FWDO_public_allow-[0:0] :FWDO_public_deny-[0:0] :FWDO_public_log-[0:0] :INPUT_ZONES-[0:0] :INPUT_ZONES_SOURCE-[0:0] :INPUT_direct-[0:0] :IN_public-[0:0] :IN_public_allow-[0:0] :IN_public_deny-[0:0] :IN_public_log-[0:0] :OUTPUT_direct-[0:0] -A输入-m conntrack --ctstate相关,已确定-j接受 -A输入-i lo -j接受 -A输入-j INPUT_direct -A输入-j INPUT_ZONES_SOURCE -A输入-j INPUT_ZONES -A输入-m conntrack --ctstate无效-j DROP -A INPUT -j REJECT --icmp-host-prohibited拒绝 -A前进-m conntrack --ctstate相关,已确定-j接受 -A前进-i lo -j接受 -A FORWARD -j FORWARD_direct -A FORWARD -j FORWARD_IN_ZONES_SOURCE -A FORWARD -j FORWARD_IN_ZONES -A FORWARD -j FORWARD_OUT_ZONES_SOURCE -A FORWARD -j FORWARD_OUT_ZONES -A转发-m conntrack --ctstate无效-j DROP -A FORWARD -j REJECT-拒绝icmp-host禁止 -A输出-j OUTPUT_direct -A FORWARD_IN_ZONES -i eth0 -g FWDI_public -A FORWARD_IN_ZONES -g FWDI_public -A FORWARD_OUT_ZONES -o eth0 -g FWDO_public -A FORWARD_OUT_ZONES -g FWDO_public -A FWDI_public -j FWDI_public_log -A FWDI_public -j FWDI_public_deny -A FWDI_public -j FWDI_public_allow -A FWDI_public -p icmp -j接受 -A FWDO_public -j FWDO_public_log -A FWDO_public -j FWDO_public_deny -A FWDO_public -j FWDO_public_allow -A INPUT_ZONES -i eth0 -g IN_public -A INPUT_ZONES -g IN_public -A IN_public -j IN_public_log -A IN_public -j IN_public_deny -A IN_public -j IN_public_allow -A IN_public -p icmp -j接受 -A IN_public_allow -p tcp -m tcp --dport 22 -m conntrack --ctstate新-j ACCEPT 承诺 #于2017年4月15日星期六完成01:40:57
注意#2:
我在仅本地服务器有权访问的单独主机上设置了apache网络服务器。我在侦听端口80的Web服务器上运行tcpdump。运行时,
telnet webserver 80
我捕获了以下数据包。由于建立了TCP连接(S,S-Ack,Ack),因此这是预期的行为。
[user @ webserver〜] $ sudo tcpdump -nn -vv'port not 22 and 80'-i eth0 tcpdump:在eth0上侦听,链接类型为EN10MB(以太网),捕获大小为65535字节 07:17:30.411474 IP(tos 0x10,ttl 64,id 34376,偏移量0,标志[DF],proto TCP(6),长度60) local.server.46710> web.server.80:标志[S],cksum 0x8412(不正确-> 0x6d96),seq 3018586542,win 29200,选项[mss 1460,sackOK,TS val 3047398 ecr 0,nop,wscale 7] ,长度为0 07:17:30.411557 IP(tos 0x0,ttl 64,id 0,偏移量0,标志[DF],proto TCP(6),长度60) web.server.80> local.server.46710:标志[S。],cksum 0x8412(不正确-> 0x9114),seq 2651711943,ack 3018586543,win 28960,选项[mss 1460,sackOK,TS val 37704524 ecr 3047398,nop ,wscale 7],长度为0 07:17:30.411725 IP(tos 0x10,ttl 64,id 34377,偏移量0,标志[DF],proto TCP(6),长度52) local.server.46710> web.server.80:标志[。],cksum 0x840a(不正确-> 0x301c),seq 1,ack 1,win 229,选项[nop,nop,TS val 3047398 ecr 37704524],长度0
当我尝试通过本地服务器从远程服务器连接到Web服务器时,Web服务器上的tcpdump不会捕获任何数据包(甚至不是初始的Sync),而是本地服务器捕获正在发送到Web服务器的Sync数据包(请参阅下文)。这使我相信某种原因阻止了数据包发送到Web服务器-可能是配置错误或防火墙。
[user @ local〜] $ sudo tcpdump -nn -vv'port not 22 and 80'-i any tcpdump:在任何链接类型的LINUX_SLL(Linux熟)上侦听,捕获大小为65535字节 02:24:09.135842 IP(tos 0x10,ttl 64,id 38062,偏移量0,标志[DF],proto TCP(6),长度60) 10.0.2.2.50558> web.server.80:标志[S],cksum 0x668d(正确),seq 69756226,win 29200,选项[mss 1460,sackOK,TS val 4780524 ecr 0,nop,wscale 7],长度0
重要信息:数据包不是通过eth0路由的,而是尝试通过tun0将数据包发送到Web服务器(失败)。我可以通过在tun0接口上运行tcpdump来确认这一点:
[user @ local〜] $ sudo tcpdump -nn -vv'port not 22 and 80'-i tun0 tcpdump:在tun0上侦听,链接类型RAW(原始IP),捕获大小为65535字节 02:28:10.295972 IP(tos 0x10,ttl 64,id 46976,偏移量0,标志[DF],proto TCP(6),长度60) 10.0.2.2.50560> webserver.80:标志[S],cksum 0xd560(正确),seq 605366388,win 29200,选项[mss 1460,sackOK,TS val 5021684 ecr 0,nop,wscale 7],长度0
注意#3:
我关闭了本地计算机中的firewalld,并且Web服务器收到了同步数据包。
[user @ local〜] $ sudo systemctl停止firewalld
[user @ webserver〜] $ sudo tcpdump -nn -vv'port not 22 and 80'-i eth0 tcpdump:在eth0上侦听,链接类型为EN10MB(以太网),捕获大小为65535字节 08:25:17.390912 IP(tos 0x10,ttl 63,id 61767,偏移量0,标志[DF],proto TCP(6),长度60) 10.0.2.2.50580> web.server.80:标志[S],cksum 0x30dc(正确),seq 2601927549,win 29200,选项[mss 1460,sackOK,TS val 7123514 ecr 0,nop,wscale 7],长度0 08:25:17.391003 IP(tos 0x0,ttl 64,id 0,偏移量0,标志[DF],proto TCP(6),长度60) web.server.80> 10.0.2.2.50580:标志[S。],cksum 0x4e23(不正确-> 0xa316),seq 959115533,ack 2601927550,win 28960,选项[mss 1460,sackOK,TS val 41771503 ecr 7123514,nop ,wscale 7],长度为0 08:25:17.391192 IP(tos 0x0,ttl 128,id 60032,偏移量0,标志[无],原始TCP(6),长度40) 10.0.2.2.50580> web.server.80:标志[R],cksum 0x7339(正确),seq 2601927550,win 8192,长度0 08:25:18.393794 IP(tos 0x10,ttl 63,id 61768,偏移量0,标志[DF],proto TCP(6),长度60) 10.0.2.2.50580> web.server.80:标志[S],cksum 0x2cf1(正确),seq 2601927549,win 29200,选项[mss 1460,sackOK,TS val 7124517 ecr 0,nop,wscale 7],长度0 08:25:18.393898 IP(tos 0x0,ttl 64,id 0,偏移0,标志[DF],proto TCP(6),长度60) web.server.80> 10.0.2.2.50580:标志[S。],cksum 0x4e23(错误-> 0x7e71),seq 974785773,ack 2601927550,win 28960,选项[mss 1460,sackOK,TS val 41772506 ecr 7124517,nop ,wscale 7],长度为0 08:25:18.394003 IP(tos 0x0,ttl 128,id 60033,偏移量0,标志[无],proto TCP(6),长度40) 10.0.2.2.50580> web.server.80:标志[R],cksum 0x566a(正确),seq 2601927550,win 8192,长度0
现在很明显,在将数据包发送到Web服务器之前,需要更新源IP以匹配本地服务器的IP地址。正如@xin所建议的,需要在本地服务器上设置NAT。
注意#4:
尝试连接到Web服务器后,可以看到规则9的pkts计数增加了1(如下所示)。
[user @ local〜] $ sudo iptables -nvL --line-numbers ..... 链转发(策略接受0个数据包,0个字节) num pkts字节目标prot opt出源目的地 1 0 0接受全部-* * 0.0.0.0/0 0.0.0.0/0 ctstate相关,已确定 2 0 0接受全部-lo * 0.0.0.0/0 0.0.0.0/0 3 1 60 FORWARD_direct全部-* * 0.0.0.0/0 0.0.0.0/0 4 1 60 FORWARD_IN_ZONES_SOURCE全部-* * 0.0.0.0/0 0.0.0.0/0 5 1 60 FORWARD_IN_ZONES全部-* * 0.0.0.0/0 0.0.0.0/0 6 1 60 FORWARD_OUT_ZONES_SOURCE全部-* * 0.0.0.0/0 0.0.0.0/0 7 1 60 FORWARD_OUT_ZONES全部-* * 0.0.0.0/0 0.0.0.0/0 8 0 0全部删除-* * 0.0.0.0/0 0.0.0.0/0 ctstate无效 9 1 60全部拒绝-* * 0.0.0.0/0 0.0.0.0/0拒绝-禁止icmp-host ..... [user @ local〜] $ sudo iptables -D FORWARD 9
一旦从FORWARD链中删除规则9(如@xin所建议,从上面删除),我就可以连接到Web服务器。
[user @ local〜] $ sudo iptables -nvL --line-numbers ..... 链转发(策略接受1个数据包,60字节) num pkts字节目标prot opt出源目的地 1 12 5857接受所有-* * 0.0.0.0/0 0.0.0.0/0 ctstate相关,已确定 2 0 0接受全部-lo * 0.0.0.0/0 0.0.0.0/0 3 2 120 FORWARD_direct全部-* * 0.0.0.0/0 0.0.0.0/0 4 2 120 FORWARD_IN_ZONES_SOURCE全部-* * 0.0.0.0/0 0.0.0.0/0 5 2 120 FORWARD_IN_ZONES全部-* * 0.0.0.0/0 0.0.0.0/0 6 2 120 FORWARD_OUT_ZONES_SOURCE全部-* * 0.0.0.0/0 0.0.0.0/0 7 2 120 FORWARD_OUT_ZONES全部-* * 0.0.0.0/0 0.0.0.0/0 8 0 0全部删除-* * 0.0.0.0/0 0.0.0.0/0 ctstate无效 .....